1.
Богатырев Артур
12811.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);
(1) Перерегистрировать компоненту пробовали? - если у меня такое случается, то я в реестры винды сношу все ссылки на компоненту (через поиск), перезагружаю комп и заново regsvr... Всегда помогало.
(6) Тоже думаю, сначала надо попытаться перерегистрировать ком компоненту
в командной строке написать для 32 разрядного сервера/платформы regsvr32 comcntrl.dll
для х64 сложнее Статя регистрация для х64 у меня получилось, правда просто с указанием пути к 64 разрядной компоненте.
Или можно поискать статью по "регистрация com комопненты"
(6) Ну как - же - Вы создаете объект - com.sun.star.ServiceManager - за него отвечает dll-ка - com чего - то там. Вам лучше знать какую Вы компоненту используете.
(7) Тогда компоненту для начала перерегьте, как верно подметил первый комментатор.
regsvr32.exe C:\ПутьКФайлу\componenta.dll - самый легкий способ но не всегда канает
Хочу напомнить: что вызов COM-объекта производится в рамках контекста; Проще говоря &НаКлиенте или &НаСервере
Возможно то что у Вас раньше работало было на клиенте а сейчас не работает на сервере ИЛИ НАОБОРОТ.
Возможно нужно поставить OpenOffice программы на серверы кластера 1С, потому что возможно com коннектор создается на сервере, а не на клиенте. Также попробуйте повысить права пользователя-клиента и пользователя службы 1С на серверах кластера.
16.
Богатырев Артур
12816.10.17 09:43 Сейчас в теме
После многочисленных выяснений, переписок и обращений в 1С - кажется, "соль" даже не в самом 1С, а в неких компонентах OpenOffice. Попробуют его переставить.
17.
Богатырев Артур
12807.11.17 14:38 Сейчас в теме
В общем, после длительных переписываний с 1С, с заказчиком и своих "ковыряний" пришли к тому, что ни к чему не пришли. Все варианты были перепробованы. 1С отписался что взял это в ошибки.
Всем большое спасибо за помощь, вышли из ситуации тем, что переделали печатную форму под табличный документ.
Технология 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) задачи развивать само решение интеграции Libre/OpenOffice не стояло, нужно было поддержать и заставить работать легаси конфу.
Возможно решение для x64 и гуглится, но я сходу не нашел правильные слова для гугления, которые дали бы ссылку на рабочий совет. Если у вас такие есть, возможно, стоит их привести для будущих читателей поста.