Ошибка класса при использовании COM-объекта

1. Богатырев Артур 128 11.10.17 15:40 Сейчас в теме
Всем добрый день.
Внезапно перестала работать печатная форма - выводившая трудовой договор в документ OpenOffice через COM-объект. Платформа: 8.3.10.2580; Конфигурация: ЗУП Корп – 3.1.3.224. Проявляется и на файловой и на клиент-серверной базе.

Выскакивает в момент вывода ошибка "Класс не зарегистрирован".

Текст ошибки в конфигураторе:
{ВнешняяОбработка.ТрудовойДоговор.Форма.Форма.Форма(204)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147417846(0x8001010A): Фильтр сообщений выдал диагностику о занятости приложения.
Т.е. ошибка при команде " ПолучитьCOMОбъект" (см. ниже код).
Часть кода :
ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
Scr = Новый COMОбъект("MSScriptControl.ScriptControl");
Scr.Language="javascript";
Scr.Eval("Args=new Array()");
Args = Scr.Eval("Args");
Scr.AddObject("ServiceManager", ServiceManager);

ДвоичныеДанныеМакета = ПолучитьИзВременногоХранилища(ПолучитьМакетСКлиента());
ИмяВрем = ПолучитьИмяВременногоФайла(".odt");
ДвоичныеДанныеМакета.Записать(ИмяВрем);
// выводим данные
Попытка
OpenOffice = Desktop.LoadComponentFromURL(ПреобразоватьВURL(ИмяВрем), "_blank", 0, Args);
Документ = ПолучитьCOMОбъект(ИмяВрем);
OpenOffice.ReplaceAll(Документ)...


Что за ошибка, отчего может быть? Переустановку платформы - пробовали.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. protexprotex 140 11.10.17 16:03 Сейчас в теме
(1) Перерегистрировать компоненту пробовали? - если у меня такое случается, то я в реестры винды сношу все ссылки на компоненту (через поиск), перезагружаю комп и заново regsvr... Всегда помогало.
6. Богатырев Артур 128 11.10.17 16:21 Сейчас в теме
(4) Уточните, пожалуйста, что за компонента именно. А то какие то манипуляции с перерегестрацией у нас пробовали.
8. antonio_i 81 11.10.17 16:35 Сейчас в теме
(6) Тоже думаю, сначала надо попытаться перерегистрировать ком компоненту
в командной строке написать для 32 разрядного сервера/платформы regsvr32 comcntrl.dll
для х64 сложнее Статя регистрация для х64
у меня получилось, правда просто с указанием пути к 64 разрядной компоненте.
Или можно поискать статью по "регистрация com комопненты"
11. protexprotex 140 11.10.17 17:10 Сейчас в теме
(6) Ну как - же - Вы создаете объект - com.sun.star.ServiceManager - за него отвечает dll-ка - com чего - то там. Вам лучше знать какую Вы компоненту используете.
2. YanTsys 12 11.10.17 15:47 Сейчас в теме
Пробовали установить точку отладки на строке
Документ = ПолучитьCOMОбъект(ИмяВрем);
и посмотреть что вы пытаетесь передать в качестве ИмяВрем ?
3. YanTsys 12 11.10.17 15:50 Сейчас в теме
И мы кстати не можем знать что делает ваша функция "ПреобразоватьВURL(ИмяВрем)" и как она может преобразовать эту ИмяВрем при своей работе...
5. Nykos 11.10.17 16:14 Сейчас в теме
Не важно какая там функция. Скорее всего слетела компонента. Что-то делали с базой последнее время? Обновляли? переносили?
7. Богатырев Артур 128 11.10.17 16:22 Сейчас в теме
(5) базу обновляли и переносили на SQL (не я). Код также писал не я, так что эти моменты тоже учту и передам.
9. Nykos 11.10.17 16:36 Сейчас в теме
(7) Тогда компоненту для начала перерегьте, как верно подметил первый комментатор.
regsvr32.exe C:\ПутьКФайлу\componenta.dll - самый легкий способ но не всегда канает
10. Vitaly1C8 11.10.17 17:04 Сейчас в теме
Хочу напомнить: что вызов COM-объекта производится в рамках контекста; Проще говоря &НаКлиенте или &НаСервере
Возможно то что у Вас раньше работало было на клиенте а сейчас не работает на сервере ИЛИ НАОБОРОТ.
14. YanTsys 12 12.10.17 09:30 Сейчас в теме
(10) Если в исходных условиях написана правда о том что
Проявляется и на файловой и на клиент-серверной базе.

то &НаКлиенте или &НаСервере вроде не должно так себя проявлять
15. Богатырев Артур 128 12.10.17 09:35 Сейчас в теме
12. Glebis 13 11.10.17 17:37 Сейчас в теме
Возможно нужно поставить OpenOffice программы на серверы кластера 1С, потому что возможно com коннектор создается на сервере, а не на клиенте. Также попробуйте повысить права пользователя-клиента и пользователя службы 1С на серверах кластера.
13. Богатырев Артур 128 12.10.17 08:13 Сейчас в теме
Рекомендации обязательно сегодня передам по адресу.
16. Богатырев Артур 128 16.10.17 09:43 Сейчас в теме
После многочисленных выяснений, переписок и обращений в 1С - кажется, "соль" даже не в самом 1С, а в неких компонентах OpenOffice. Попробуют его переставить.
17. Богатырев Артур 128 07.11.17 14:38 Сейчас в теме
В общем, после длительных переписываний с 1С, с заказчиком и своих "ковыряний" пришли к тому, что ни к чему не пришли. Все варианты были перепробованы. 1С отписался что взял это в ошибки.
Всем большое спасибо за помощь, вышли из ситуации тем, что переделали печатную форму под табличный документ.
18. user1011815 7 10.12.20 17:15 Сейчас в теме
Технология COM-объектов достаточно старая и очень плохо работает на x64 платформе. Столкнулся ровно с такой же проблемой и методом проб и ошибок удалось выработать вот такой алгоритм:
- удаляем 64-х битную версию 1С и подчищаем все следы ее установки (ProgramFiles, ProgramData, AppData);
- устанавливаем 32-х битную версию платформы;
- устанавливаем 32-х битный LibreOffice (LibreOffice_6.4.7_Win_x86);
- устанавливаем 32-х битный SDK (LibreOffice_6.4.7_Win_x86_sdk).
Всё, модуль работоспособен.

Танцы с 64-х битной версией ни к чему не привели, ни при каких комбинациях установленных приложений COM-объект нормально не создавался.
19. user1503726 10.12.20 17:19 Сейчас в теме
(18) в DCOM не копались? Гуглится..
20. user1011815 7 10.12.20 19:51 Сейчас в теме
(19) задачи развивать само решение интеграции Libre/OpenOffice не стояло, нужно было поддержать и заставить работать легаси конфу.
Возможно решение для x64 и гуглится, но я сходу не нашел правильные слова для гугления, которые дали бы ссылку на рабочий совет. Если у вас такие есть, возможно, стоит их привести для будущих читателей поста.
21. user1503726 10.12.20 20:18 Сейчас в теме
22. user1011815 7 10.12.20 20:53 Сейчас в теме
(21) Да, есть смысл этот путь проверить, LibreOffice создает свой компонент и если права к папкам поднастроить правильно, может и взлетит.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот