Ошибка при вызове com объекта интерфейс не поддерживается

Ошибка при вызове конструктора (COMObject) по причине: Интерфейс не поддерживается

Ошибка происходит при попытке загрузить из Excel в 1С, когда код обработчика выполняется не на клиенте, а на сервере и в большинстве случаев текст ошибки говорит об отсутствии прав у пользователя сервера 1С.

Быстрый переход

  • Особенности
  • Устранение:
    • Может оказаться, что  «Microsoft Excel Application» отсутствует в списке, в данном случае
  • Заключение

Особенности

Кодом со стороны 1С без изменения места исполнения не устраняется, использование других функций подключения Com также не дает положительных результатов.

Убедиться в причине ошибки возможно, если посмотреть логи системы.

Устранение:

  • на сервере убиваем excel (taskkill /im excel.exe /f)
  • открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
  • в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
  • справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем пользователя с администраторскими правами, ОК.

Может оказаться, что  «Microsoft Excel Application» отсутствует в списке, в данном случае

  1. Запускаем REGEDIT
  2. Открываем ветку ComputerHKEY_CLASSES_ROOTAppIDEXCEL.EXE, если ее нет, то создаем
  3. Создаем в ней строковый параметр AppID  = {00020812-0000-0000-C000-000000000046}
  4. Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть  32 битные компоненты.
  5. После этого в Component Services должен появиться «Microsoft Excel Application»

Чтобы решить эту проблему, я включил пользователя USRV82, под которым запускается сервер приложений 1С Предприятия 8.3, в группу Distributed COM Users, но ошибка сразу не ушла, потребовалась перезагрузка.

Для правки использовалась оснастка Локальные пользователи и группы (lusrmgr.msc) — это инструмент, предназначенный для управления локальными пользователями и группами.

Локальный пользователь или группа — это учетная запись, которой могут быть предоставлены разрешения и права на вашем компьютере.

Осложняло проблему то, что ошибка плавала: периодически выходила, либо в момент создания объекта, либо уже в момент вызова методов excel-application.

Так что нельзя однозначно сказать, что же решило проблему.

Заключение

В большинстве случаев уйти от дополнительной настройки операционной системы возможно,  если использовать вызова Com-Объекта на клиенте. При правильной установке объектов они работают даже при различных по битности 1с и Excel, OS.

В моем же случае клиентские компьютеры работали на Ubuntu, поэтому вся обработка перенесена на сервер.

Бывает такое: вы прописываете для компонента пользователя и пароль.

Затем через некоторое время меняете пароль и компонент перестает работать: выходит такая же ошибка «Интерфейс не поддерживается». Следует просто вбить новый пароль.

Единственные настоящие поэты нашего времени служат в рекламных агентствах.

Интерфейс не поддерживается

Я
   fantomask

22.05.12 — 08:20

Добрый день!

Есть клиент серверная база 1С 8.2 при загрузке эксель файла, на моменте создания соm объекта выходит ошибка «no such interface supported» или по русски интерфейс не поддерживается.

Док = новый COMОбъект(«Excel.Application»);

   Сообщить(«Создан объект»);

   Док.Workbooks.Open(файл);

   Сообщить(«Файл открыт»);

Причем в файловом варианте все работает! версия платформы 8.2.15.294

Поискал на форуме, но ответа так и не нашел.

   andrewks

1 — 22.05.12 — 08:22

эксель на сервере установлен? права на ком-объекты есть?

   fantomask

2 — 22.05.12 — 08:31

(1) ексель установлен

а как проверить права на ком объекты? странно ведь в файловом варианте на сервере то работает…

   Klesk

3 — 22.05.12 — 08:32

проверь права пользователя от которого сервер 1с стартует

   shuhard

4 — 22.05.12 — 08:33

(2)[странно ведь в файловом варианте на сервере то работает..]

странно, что ты не нашёл ответа на этот вопрос на форуме

   andrewks

5 — 22.05.12 — 08:38

сервер 1с х64?

   fantomask

6 — 22.05.12 — 08:40

(5) да

   andrewks

7 — 22.05.12 — 08:42

а эксел х32

   fantomask

8 — 22.05.12 — 08:43

(7) да

   andrewks

9 — 22.05.12 — 08:45

(8) это был не вопрос

   fantomask

10 — 22.05.12 — 08:46

(9) так что можно сделать с этим?

   MSII

11 — 22.05.12 — 08:49

А зачем ком на сервере создавать? Читать/писать в эксельный файл чисто клиентская задача.

   Ranger_83

12 — 22.05.12 — 08:49

(0)создать COMОбъект(«Excel.Application») на клиенте?

   Ranger_83

13 — 22.05.12 — 08:49

(11):)

   fantomask

14 — 22.05.12 — 08:50

(12) на &сервере

   Ranger_83

15 — 22.05.12 — 08:52

(14)это был не вопрос

   andrewks

16 — 22.05.12 — 08:54

(10) где-то в инете валялась инструкция, как сделать х64 стаб для х32 объекта. лично не пробовал, но вроде говорят, что работает

   fantomask

17 — 22.05.12 — 09:00

Дал права на USR1CV82 теперь ругается на строке Док.Workbooks.Open(файл); на путь файла

   andrewks

18 — 22.05.12 — 09:00

   Пеппи

19 — 22.05.12 — 09:01

(17) какой путь у файла?

   fantomask

20 — 22.05.12 — 09:02

на рабочем столе. Вызываю диалог выбора файла

   Пеппи

21 — 22.05.12 — 09:04

(20) извини, но файлу не место быть на конкретном рабочем столе. )

   fantomask

22 — 22.05.12 — 09:05

(21) я вызываю диалог выбора файла, пользователь сам выбирает путь к файлу

   andrewks

23 — 22.05.12 — 09:07

(22) шо, прямо на сервере?

   andrewks

24 — 22.05.12 — 09:10

(16) по-ходу, тут я загнался, это не ком, а оле

   fantomask

25 — 22.05.12 — 09:12

(23),(21) Вот полный код

&НаКлиенте

Процедура ЗагрузитьИзФайла(Команда)

   Режим = РежимДиалогаВыбораФайла.Открытие;

   Длг = новый ДиалогВыбораФайла(Режим);

   Фильтр = «Файл excell (*.xls)|*.xls»;

   ДЛГ.Фильтр = Фильтр;

   ДЛГ.Выбрать();

   Файлик = ДЛГ.ПолноеИмяФайла;

   Если ЗначениеЗаполнено(файлик) Тогда

       ЗагрузитьДанныеИзФайла(Файлик);

   КонецЕсли;

КонецПроцедуры                              

&НаСервере

Процедура ЗагрузитьДанныеИзФайла(Файл)

   СчСтроки = 2;

   ТекНомер=1;

   Док = новый COMОбъект(«excel.Application»);

   Сообщить(«Создан объект»);

   Док.Workbooks.Open(файл);

   Сообщить(«Файл открыт»);

     Пока ТекНомер=1 ЦИкл

       Если Док.Sheets(1).Cells(счСтроки,1).Value = Неопределено Тогда

           Прервать;

       КонецЕсли;

   andrewks

26 — 22.05.12 — 09:14

(25) прав нет на файл у USR1CV82

   fantomask

27 — 22.05.12 — 09:15

Вообще есть мысль что путь к файлу между клиентом и сервером передавать нельзя или нужно как то иначе это дело реализовать

   shuhard

28 — 22.05.12 — 09:16

(27) т.е. файл на рабочем столе юзера — феерично

   andrewks

29 — 22.05.12 — 09:16

(25) и вообще, сама идея плоха

   ДенисЧ

30 — 22.05.12 — 09:17

мда….

Файл лежит на компе у пользователя… Путь передаётся на другой комп… И странно, почему это он не открывается…

   fantomask

31 — 22.05.12 — 09:17

(26) в таком случае возникает трудности. USR1CV82 пользователь локальной машины и у него нет админских прав на домен

(29) а как можно сделать лучше?

   Ranger_83

32 — 22.05.12 — 09:18

(31)на клиенте открывай

   Wobland

33 — 22.05.12 — 09:18

(25) немного не в тему. что случится, если юзер откажется от выбора файла?

   fantomask

34 — 22.05.12 — 09:20

(33) ничего

(32) А на клиенте будет работать   Док.Workbooks.Open(файл);?

   el-gamberro

35 — 22.05.12 — 09:21

феерично просто

   el-gamberro

36 — 22.05.12 — 09:21

(34) будет конечно

   el-gamberro

37 — 22.05.12 — 09:22

Когда это будет переносится на промышленную базу ТС будут ждать новые сюпризы

   fantomask

38 — 22.05.12 — 09:24

(37) какие сюрпризы?

   Ranger_83

39 — 22.05.12 — 09:25

(38)Для чего файл прогонять через сервер?Количество вызовов сервера лучше минимизировать

   el-gamberro

40 — 22.05.12 — 09:25

   Ranger_83

41 — 22.05.12 — 09:28

Еще добавлю,что если не нужные данные формы,то лучше использовать внеконтекстный(&НаСервереБезКонтекста)серверный  вызов

   fantomask

42 — 22.05.12 — 09:38

блин, не получается. Я на сервере создаю ком объект, потом его передаю на клиент, чтобы открыл файл и начал его обрабатывать.

Вот на моменте передачи ком объекта из сервера на клиент вылетает ошибка

   fantomask

43 — 22.05.12 — 09:49

оказывается ком объекты можно создавать на клиенте. всё сделал, работает! Всем спасибо за участие и помошь!

  

Ranger_83

44 — 22.05.12 — 09:53

(43)Тебе об ентом еще с (11) еще намекали

 0 

   

Распечатать

1С 8.x : Ошибка при вызове конструктора (COMОбъект): Интерфейс не поддерживается

Подключение к 7.7 через OLE в регламентном задании из 8.2
Если во время выполнения задания, при попытке подключиться через OLE из 8.2 к 7.7 возникает ошибка:
Ошибка при вызове конструктора (COMОбъект): Интерфейс не поддерживается.

поможет следующее

Пуск — Выполнить — DCOMCNFG.
«Службы компонентов» — «Компьютеры» — «Мой компьютер» — «Настройка DCOM».
V77.GeneralPropPage и V77.SalaryPropPage.
На закладке «Безопасность» установить необходимые права для того, от чьего имени запускается сервер 1С (8.2)

Вопрос При работе с Excel из 1С возникает сообщение: «Ошибка при вызове конструктора (COMОбъект): Интерфейс не поддерживается». Что делать?
Ответ
Подробнее:

При использовании:

Excel = Новый COMОбъект("Excel.Application");
WB = Excel.Workbooks.Open(ИмяФайла);

Выдает ошибку – Ошибка при вызове конструктора (COMОбъект): Интерфейс не поддерживается.

Или другой метод:

Объект = ПолучитьCOMОбъект(ИмяФайла);

— сообщение: «Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: Класс не зарегистрирован»
или

Объект = ПолучитьCOMОбъект(ИмяФайла, "Excel.Application");

— сообщение: «Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: Сервер RPC недоступен»

Причин всех этих ошибок может быть несколько. 

У службы «Запуск серверных процессов DCOM» тип запуска должен быть «Авто».

Кроме того, если  служба «Агент сервера 1С:Предприятия 8.2» запускается от имени специального пользователя, то у него должны быть права на запуск компоненты «Приложение Microsoft Excel»

Служба «Агент сервера 1С:Предприятия 8.2» не должна запускаться от имени пользователя с ограниченными правами, у него должны быть права на запуск компоненты «Приложение Microsoft Excel».

Другая возможная причина: 1С предприятие установлено в 64-битном варианте, а Excel — в 32-битном. Может помочь установка 1С в 32-битном варианте (это может быть проще, чем найти 64-битный Excel)

У службы «Запуск серверных процессов DCOM» тип запуска необходимо установить в «Авто». После чего желательно перезагрузить компьютер.

Ну и как вариант, быть может поврежден установленный пакет MS Office. Необходимо попробовать переустановить его.

Next Post

  • v8

  • Программисту 1C

Пт Май 14 , 2010

Вопрос Как в запросе использовать «СокрЛП», «Лев», «Прав», т.е. как отсечь нужное количество символов? Ответ Использовать конструкцию «ВЫРАЗИТЬ»: … ГДЕ (ВЫРАЗИТЬ(усЕдиницыХранения.Владелец.Наименование КАК СТРОКА(4))) «Груз» |ГДЕ | (ВЫРАЗИТЬ(усЕдиницыХранения.Владелец.Наименование КАК СТРОКА(4))) &Груз … Запрос.УстановитьПараметр(«Груз»,»Груз»);

Breaking News

Платформа: 1С:Предприятие 8.3 (8.3.6.2100)
Конфигурация:Риэлтор. Управление продажами недвижимости для «1С:Управление торговлей 8», редакция 11.1 (11.1.10.145/2.7.3.42)
Проблема:Файловая база размещена на сервере, опубликована на веб-сервере. Пользователи подключаются через тонкого клиента к веб-серверу. При печати шаблона WORD база выдает ошибку -2147467262(0х80004002) Интерфейс не поддерживается.

Сложности в процессе решения:

Согласно инструкции разработчиков, по словам ошибки «интерфейс не поддерживается» проделали следующее:

1. Пользователю USR1CV82, от имени которого запускается сервер 1С, дать права на запуск DCOM MicrosoftWord и DCOM Microsoft Excel (при необходимости).

Для этого нужно:

1.1. Запустить службу компонентов. Из командной строки набрать

mmccomexp.msc

и найти компоненту Word или Excel. Пример для Word представлен на рисунке ниже:

При запуске службы компонентов на 64-х разрядной машине, 32-х разрядные компоненты могут не отображаться, тогда запуск нужно осуществить через команду:

C:WINDOWSSysWOW64>mmc comexp.msc /32

1.2. Открыть свойства компоненты и перейти на закладку Безопасность.

1.3. В разделе Разрешения на запуск выбрать пункт Настроить и нажать кнопку Изменить. Добавить пользователя USR1CV82.

Не помогло, база выдавала ошибку: Данная команда недоступна, так как не открыт ни один документ.

В ходе работ закончилась лицензия на MS Office, и в конфигурации после создания COM-объекта «Word.Application» на каждом шаге в отладке ОС запускает процесс завершения установки и активации MS Office. Клиент купил лицензию для сервера на MS Office.

После установки лицензий вернулась ошибка -2147467262(0х80004002) Интерфейс не поддерживается.

По словам разработчиков, перевод обработки Word на клиента не решит проблему. Судя по предоставленным нами логам — ошибка возникает в режиме веб-клиента. В этом режиме программная обработка Word на клиенте не возможна, только серверная обработка.

Но для работы базы необходимо было решить данную проблему. Мы вернули все изменения, которые сделали по инструкции разработчика. Долго прорабатывали доступы к папкам временного хранилища для пользователей извне. Создали еще одного администратора без пользовательских настроек, для него заново настраивали IIS.

Решение:

Настроили работу сервера через Apache. Создали папку, в которой находятся редактируемые шаблоны Word, дали общий доступ к этой папке, для пользователя IUSR и группы пользователей IIS_users.

На Windows Server 2012 (64 разрядности) установлен Word 2013 (32 разрядности), а у пользователей установлен Adobe Reader. Шаблон договора заполняется в 1С на сервере и конвертируется в PDF, сохраняется во временную папку на сервере.

Мы переписали обработку, чтобы документ сохранился в формат PDF (по требованию клиента для запрета редактирования, изменения документа) и сохранялся во временное хранилище 1С. Из хранилища документ/файл передается на указанный нами путь (во временные папки у клиента), как для тонкого клиента, так и для веб-клиента. Открывается файл именно из этой временной папки. Ниже пример кода, который мы дописали для передачи файла с сервера на клиент.

&НаКлиенте
Попытка
ЗапуститьПриложение(ПолноеИмяФайлаНаКлиенте);
Исключение
Адрес = УПН_ОбщиеПроцедуры.ПолучитьФайл(ПолноеИмяФайлаНаКлиенте);
Описание = Новый ОписаниеПередаваемогоФайла(«C:doc» + ДанныеФайла.ИмяФайла,Адрес);
МассивОписаний=Новый Массив;
МассивОписаний.Добавить(Описание);
ПолучитьФайлы(МассивОписаний,,,Ложь);
ЗапуститьПриложение(«C:doc» + ДанныеФайла.ИмяФайла);
КонецПопытки;

&НаСервере
Функция ПолучитьФайл(ПолноеИмяФайлаНаКлиенте) Экспорт
Двоичное = Новый ДвоичныеДанные(ПолноеИмяФайлаНаКлиенте);
Адрес = ПоместитьВоВременноеХранилище(Двоичное);
Возврат Адрес
КонецФункции

В настроках Панель управления, далее путь: Администрирование->Управление групповой политикой->Домены – выбираем наш сервер и во вкладке «Делегирование» добавляем группу IIS_users и пользователя IUSR (через которого подключаются внешние пользователи).

В веб-клиенте после отправки документа на печать браузе попросит установить расширение. Нужно установить, и все заработает:

Предпочтительнее использовать Internet Explorer (IE) не ниже 8 версии. При использовании Google Chrome (гугл хром) возникает ошибка: Использование модальных окон в данном режиме запрещено.

Если Internet Explorer не запускает документ на печать, можно принудительно запустить браузер от имени администратора:

В тонком клиенте сразу открывается заполненный шаблон (на примере ниже стерты данные клиента). Форма открывается в формате PDF по требованию клиента, чтобы пользователь не мог редактировать документ перед печатью.

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове конструктора двоичныеданные файл не обнаружен
  • Ошибка при вызове com объекта 1c отказано в доступе
  • Ошибка при вызове конструктора двоичныеданные ошибка доступа к файлу
  • Ошибка при вызове com недопустимая строка с указанием класса
  • Ошибка при вызове конструктора двоичныеданные каталог не обнаружен