Ошибка получения объекта com 2147467262 0x80004002 интерфейс не поддерживается

Платформа: 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 по требованию клиента, чтобы пользователь не мог редактировать документ перед печатью.

Автор Истребитель, 22 июл 2015, 17:48

0 Пользователей и 1 гость просматривают эту тему.

При попытке создать COM объект Excel.Application вылезает стандартная ошибка:
Ошибка получения объекта COM: -2147467262(0x80004002): No such interface support

Однако, если открыть диспетчер задач, то приложение excel.exe запускается!
Приложение excel x32, 1Cка тоже x32.
В списках классов (HKLMSoftwareClasses) класс Excel.Application присутствует.
Права на Distributed COM дал своему юзеру, перелогинился, не помогло, дал всем (Everyone), не помогло.
База файловая.


Попробуйте так


Попытка
ОбъектЭксель = ПолучитьCOMОбъект(СокрЛП(ФайлЗагрузки));//ФайлЗагрузки - путь к файлу. строка
Исключение
Сообщить("Неудачная попытка открытия файла:"+СокрЛП(ФайлЗагрузки));
Возврат;
КонецПопытки;


КомОбъектЗагрузки = ОбъектЭксель.WorkSheets(1);


Очень забавно. Если перед вызовом функции с параметрами (Путь,Excel.Application) вызвать её без указания Excel.Application то повторный вызов уже с указанием Excel.Application работает!

Т.е. так работает:

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

Так не работает:

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

В любом случае, в дальнейшем вылезает вообще непонятная ошибка:

{Форма.Форма.Форма(47)}: Ошибка при вызове метода контекста (ПрочитатьЛистExcel)
ПрочитатьЛистExcel(,ПолучитьCOMОбъект(ИмяФайла));
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
форма: Элемент
имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'COMОбъект'


Поздравляю, походу вы открыли для себя впервые особенности управляемого приложения.


Ок, где мне почитать про эти «особенности» чтобы разобраться как выполнить такое простое задание, как чтение excel файла?


Путем проб и ошибок
Пробуйте «&НаСервере» всё это делать

Помогли — Скажи спасибо! Решил сам — поделись решением!
:)


Не сочтите за издевательство: http://v8.1c.ru/metod/faq2/
&НаКлиенте — это только форма, видимость,доступность, условное офомление и т.д.
&НаСервере — это работа с объектами. Добавить строки, заполнить объект и т.д.

С клиента можно вызывать сервер, наоборот — нельзя.

Все прочие особенности = интернет большой, уверен справитесь


Дааа. Простейшие вещи теперь хрен сделаешь. Почитал я это. Замечательно! Погуглил даже. Простейшая задача, неясно как решать.

Я хочу создать программно документ, заполнить его на основании данных из экселя, и открыть.

На клиенте я это сделать не могу, на клиенте «Документы» неопределена (нельзя создать документ). На сервере тоже не могу, нельзя открыть форму. На клиент нельзя передать ссылку на документ (когда пытаюсь сделать «Возврат Док», где Док это новый документ, вылезает ошибка передачи данных). Гугл «1с 8.3 передача документа с сервера на клиент» ничего не дал.

Что делать?


Остается сесть в углу и плакать.
На клиенте формируете структуры с простыми данными (строки, даты и т.д.) передаете на сервер. Создаете/ищите  документ на сервере и возвращаете ссылку на документ.


Настройка COM Объекта «Excel.Application» на сервере 1С, настройка поможет обработать большие файлы Excel на сервере 1C, в том числе через фоновые задания.
Та же данная настройка может решить проблему с ошибкой 1С:

ошибка -2147467262(0x80004002): Интерфейс не поддерживается
  1. Заходим на сервер приложений 1С под локальным админом или администратором домена
  2. Запускаем DCOMCNFG (Консоль настроек «Службы компонентов»)
    1. Открываем ветку Корень консоли -> Службы компонентов -> Компьютеры -> Мой компьютер -> Настройка DCOM
    2. Ищем «Microsoft Excel Application»
    3. Если запись существует, то переходим к пункту 4
    4. Закрываем «Службы компонентов»
  3. Настройка реестра
    1. Запускаем REGEDIT
    2. Открываем ветку КомпьютерHKEY_CLASSES_ROOTAppIDEXCEL.EXE, если ее нет, то создаем
    3. Создаем в ней строковый параметр AppID = {00020812-0000-0000-C000-000000000046}
    4. Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты
    5. После этого в Component Services должен появиться «Microsoft Excel Application»
  4. Настраиваем свойства DCOM компонента «Microsoft Excel Application»
    1. Заходим в «Свойства», закладка «Безопасность»
      1. «Разрешения на запуск и активацию» — Настроить — Изменить
        1. Добавляем пользователя, под которым запускается агент сервера 1С
        2. Назначаем ему только следующие права (Разрешить):
          1. Локальный запуск
          2. Локальная активация
      2. «Разрешения на доступ» -Настроить — Изменить
        1. Добавляем пользователя, под которым запускается агент сервера 1С
        2. Назначаем ему только следующие права (Разрешить):
          1. Локальный доступ
    2. Переходим на вкладку «Удостоверение»
      1. Выбираем «Запускающий пользователь»
  5. Настройка системных папок
    1. Папка «C:WindowsSysWOW64configsystemprofileDesktop»
      1. Проверяем наличие папки , если нет -то создаем
      2. Заходим в «Свойства» этой папки, закладка «Безопасность»
      3. Добавляем, если нет, пользователя, под которым запускается агент сервера 1С
      4. Добавляем права «Чтение» и «Запись»
    2. Папка «C:WindowsSystem32configsystemprofileDesktop»
      1. Проверяем наличие папки , если нет -то создаем.
      2. Заходим в «Свойства» этой папки, закладка «Безопасность»
      3. Добавляем, если нет, пользователя, под которым запускается агент сервера 1С
      4. Добавляем права «Чтение» и «Запись»
   val245

03.04.18 — 20:24

Здравствуйте

Стоит УТ 11. Клиент-серверный вариант. Загружаю данные из Excel. При попытке открыть файл конструктором

Ex=Новый ComОбъект(«Excel.Application»);

Work = Ex.workbooks.Open(СокрЛП(ПутьКФайлу));

Входит ошибка

{Обработка.ЗагрузкаНоменклатурыИзЭкзель.Форма.Форма.Форма(25)}: Ошибка при вызове конструктора (ComОбъект): -2147467262(0x80004002): No such interface supported

Обработку разрабатывал в фаловом варианте. В файловом варианте обработка проходит нормально. Excel на сервере установлен.

Кто знает, почему файл не хочет читаться в клиент-серверном варианте?

   shuhard

1 — 03.04.18 — 20:27

(0)[Кто знает, почему] Все знают

100500 раз писалось про пути и учетные записи

   Darych

2 — 03.04.18 — 20:28

права

   val245

3 — 03.04.18 — 20:32

права в 1с или права учетных записей Windows?

   Darych

4 — 03.04.18 — 20:32

вин

   MaxS

5 — 03.04.18 — 20:33

Открывайте 1С-ом через Файл-Открыть

   val245

6 — 03.04.18 — 20:34

(1) Ну я пока с такой проблемой не сталкивался

   shuhard

7 — 03.04.18 — 20:34

(3) права учетной записи, от которой крутиться rphost

+ ну и конечно для загрузки из xls ставить на сервер эксель плохое решение, пару раз зависнет и сожрёт всю память

   Cool_Profi

8 — 03.04.18 — 20:35

(7) Твой вариант решения?

   tesseract

9 — 03.04.18 — 20:35

Почему просто в ТД не читать? Зачем Excel дергать?

   val245

10 — 03.04.18 — 20:37

(5) Открывать 1С-ом что? обработку или Excel? Экзель открывается, правда, конечно, не читабельно..

   Darych

11 — 03.04.18 — 20:37

(9) не всегда в ТД получается

   val245

12 — 03.04.18 — 20:38

(9) ТД — это что?

   piter3

13 — 03.04.18 — 20:38

Взять типовую загрузку из йокселя,загрузить,закрыть,забыть.

   val245

14 — 03.04.18 — 20:38

табличный документ?

   val245

15 — 03.04.18 — 20:39

ну так у пользователей данные в экзеле.. приходится загружать из экзель

   tesseract

16 — 03.04.18 — 20:39

(14) Да он давно и Excel и ods нормально грузит.

   piter3

17 — 03.04.18 — 20:39

   shuhard

18 — 03.04.18 — 20:39

(8) adodb однозначно

   shuhard

19 — 03.04.18 — 20:40

(16) многостраничные стал грузить совсем не давно

   Darych

20 — 03.04.18 — 20:41

(18) а у него думаешь не адо?

   Cool_Profi

21 — 03.04.18 — 20:41

(18) И тут мы вам покажем, как вы думаете, что?

Правильно… Вот эту ссылку

https://www.forum.mista.ru/topic.php?id=815766

   shuhard

22 — 03.04.18 — 20:42

(20) ты это о  чем ?

ComОбъект(«Excel.Application»);

   shuhard

23 — 03.04.18 — 20:43

(21) ты неудачник и что ?

   Cool_Profi

24 — 03.04.18 — 20:44

(23) А с какого перепою я неудачник? Можешь обосновать внятно?

Или у тебя перепой?

   shuhard

25 — 03.04.18 — 20:47

(24) хвостик отрасти для объяснений

   val245

26 — 03.04.18 — 20:48

а с чем эта ошибка связана? почему в файловом варианте читает, а в клиент-серверном читать не хочет?

   shuhard

27 — 03.04.18 — 20:49

(26) пипец

ты чё, ответы не читаешь ?

   ДенисЧ

28 — 03.04.18 — 20:49

(25) Так лучше видно?

   tesseract

29 — 03.04.18 — 20:52

(26) Сервер и клиент находятся в разных местах. Если на одном — у них разные пользователи. См НачатьПомещениеФайла для начала.

   shuhard

30 — 03.04.18 — 20:53

(28) =)

   Darych

31 — 03.04.18 — 20:54

все ж написано: «No such interface supported

«

   val245

32 — 03.04.18 — 20:55

сейчас пользователи подключаются через rdp. Все действия происходят на сервере..

   shuhard

33 — 03.04.18 — 20:57

  

val245

34 — 03.04.18 — 21:01

ок. спасибо. Будем разбираться…

  1. Приветствую.

    Столкнулся с проблемой:
    Создал обработку, которая запускает Excel, читает файл, заполняет его и записывает.
    На клиенте все великолепно выполняется.
    Создал регламентное задание, которое запускает в определенное время это на сервере.
    При выполнении на сервере вылезает ошибка про то, что типа MS Excel не удалось получить доступ к файлу. При этом доподлинно известно, что ком. объект Excel даже не создался (нет его в процессах диспетчера задач).
    Примечательно, что если запустить обработку клиентом с машины, где установлен сервер 1С, то все выполняется.

    Excel = Новый COMОбъект("Excel.Application");
    Книга = Excel.WorkBooks.Open("D:DstOrder.xls");
    

    Чувствую, что дело тут в том, что при работе с клиента Excel запускается из-под пользователя в реальном сеансе, а в случае сервера — под пользователем хоть и с полными правами, но без запущенного сеанса.

    Сервер Windows Server 2008 R2 Standart. Service Pack 1
    Как это обойти?


  2. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    1) Файл D:DstOrder.xls действительно существует на сервере?
    2) У пользователя под которым запущен сервер есть право доступа к каталогу D:Dst?

  3. 1. Да, файл существует. Обработка при запуске на этом же сервере из-под клиента выполняется без проблем.
    2. Доступ есть. Пользователь — администратор. Пробовал файл в разные папки класть.

    — Объединение сообщений, 15 авг 2014

    Полный текст ошибки. Ошибка от имени Microsoft Excel, однако процесса EXCEL в диспетчере задач нет!

    Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «D:DstOrder.xls». Это может быть вызвано одной из следующих причин.

    • Указан несуществующий файл или путь.
    • Файл используется другой программой.
    • Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.

    — Объединение сообщений, 15 авг 2014

    8.3.4.496

    Последнее редактирование: 15 авг 2014

  4. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    Т.е. сервер (ragent.exe и т.д.) стартует от имени Администратора? Или все же от USR1CV82 (не знаю как там по умолчанию под 8.3 пользователь называется).

  5. У меня пользователь USR1CV81 со старых времен. Он входит в группу Администраторы.

    Сейчас провел эксперимент. Зашел на сервер от имени этого пользователя и в клиенте запустил обработку — без проблем.

  6. Попробовал вместо COMОбъект использовать ПолучитьCOMОбъект. Вот результат

    Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221021(0x800401E3): Операция недоступна


  7. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104


  8. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104


  9. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104


    likalim и Mark768 нравится это.
  10. Спасибо тебе, добрый человек. Сам бы не допер…


  11. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    Да не за что.
    Не совсем я это, разум это коллективный.. :)

  12. Небольшое уточнение:
    При выборе «Текущий пользователь», обработка на сервере запускает Excel только в том случае, если на сервер выполнил вход кто-нибудь из пользователей.
    Если это условие не выполняется, то получаем ошибку:

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

    На вкладке «Удостоверения» есть 3-й вариант запуска — указать конкретного пользователя и пароль.
    Я указал пользователя, от имени которого работает сервер 1С (USR1CV81).
    В таком варианте обработка запускает Excel при отсутствии работающих пользователей на сервере.
    Это меня устраивает.

    В моем случае не бывает работающих пользователей на сервере и тем более, запускающих Excel
    Могу предположить, что при запуске Excel любым пользователем (не USR1CV81) могут возникнуть проблемы.
    Например, Excel запускается и работает, однако при старте выдает «Невозможно использовать связывание и внедрение объектов».

  13. Приветствую.

    Когда в этой теме мне очень помогли. Восстановили сервер после аварии. Теперь восстанавливаю возможность работы пользователя USR1CV81 с Excel.
    Столкнулся с тем, что в Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM теперь нет ветки Microsoft Excel Application, хотя сам Excel установлен.
    Что я сделал не так?


  14. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Переустанавливать эксель пробовали ?

  15. Да, уже несколько раз и разные версии.
    Вычитал в сети, что если нет ветки явно, то нужно в реестре найти его наименование в виде кода. В реестре нашел, но его кода в Настройка DCOM тоже нет.


  16. Ardak

    Offline

    Ardak

    Регистрация:
    21 дек 2015
    Сообщения:
    1
    Симпатии:
    1
    Баллы:
    1

    Вдруг кому понадобится
    Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты.


  17. limus80

    Offline

    limus80

    Регистрация:
    30 май 2013
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1

    важное как мне кажется дополнение
    ко всему вышесказанному надо добавить учетке права входа в качестве сервиса на компьютер
    без этого у меня не работало на W2K12R2


  18. Gucci76

    Offline

    Gucci76
    Опытный в 1С

    Регистрация:
    9 мар 2008
    Сообщения:
    75
    Симпатии:
    0
    Баллы:
    26

    Здравствуйте.
    У меня похожая проблема, но только с ВОРДом
    В файловом варианте я могу Новый COMОбъект(«Word.Application»), а в клиент-серверном нет.
    Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM тут НЕ нашел ворда (открывал через команду «mmc comexp.msc /32»).


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

  • Ошибка получения объекта com 2147467259 0x80004005
  • Ошибка получения объекта com 2147221164 0x80040154 класс не зарегистрирован
  • Ошибка получения объекта com 2147221021 0x800401e3 операция недоступна
  • Ошибка получения объекта com 2147221020 0x800401e4 синтаксическая ошибка
  • Ошибка получения объекта com 2147221018 0x800401e6 расширение имени файла задано неверно