Содержание:
1. Что такое COM и COM объект 1С
COM – это объектная модель данных, выстроенная на Майкрософт компоненте, которая является независимой от платформы и распределённой объектной системой. Данная объектная модель служит для создания компонентов в двоичном программном обеспечении, при условии взаимодействия компонентов.
Главным, единым, условием языка программирования, который сможет обеспечить объектную модель COM сервера 1С, является возможность писать структуры указателей и ними вызывать различные функции.
Рассмотрим, что такое COM объект 1С – это некий объект, доступ к данным которого можно получить только при помощи функций, которые связаны. Набор из таких функций называют интерфейсом платформы 1С, а функции внутри наборов называются методами.
Помимо этого, в модели COM сервера 1С необходимо, чтобы для получения доступа к интерфейсным методам нужно было обращаться к указателям на интерфейсы платформы 1С.
2. Ошибка вызова конструктора COMОбъекта в 1С
Ошибка возникает в некоторых случаях, когда бывает, что во время установки системы 1С не регистрируется файл с названием «comcntr.dll», из-за чего работать с COM соединением сервера 1С нельзя ни при каких условиях.
В этом случае, при решении ошибки, важно учитывать нюансы при работе с операционной системой Windows (при этом, версия Windows должна быть выше XP, т.е. будем рассматривать выход для новых версий) и с администрированием системы 1С.
3. Устранение ошибки при вызове конструктора COMОбъект
Ошибка при вызове конструктора COMОбъект в 1С имеет следующее отображение: «2147221164 (0х80040154): Класс не зарегистрирован» либо «Ошибка при вызове конструктора COMОбъект: Недопустимая строка с указанием класса 1С»), вид ошибки представлен на скриншоте ниже:
Выполняем такие действия:
· Для начала, переходим в режим администратора и запускаем командную строку. Важно обратить внимание, что в командной строке должно быть написано: «C:windowssystem32» (либо 64 в конце, если это 64-х битная версия операционной системы). Получаем, что корректный путь для корневой строки должен выглядеть таким образом:
· Следующий шаг – это написать команду «regsvr32», она будет выглядеть так: «C:Program Files1cv88.3.ХХ.ХХХХbincomcntr.dll». Стоит отметить, что нужно прописать свой точный номер релиза платформы, а путь к самой библиотеке нужно брать в кавычки, конечный итог продемонстрирован ниже:
После этих действий, ошибка полностью устранена. В скриншотах-примерах была показана версия платформы 1С под номером «8.3.11.2867 х64».
Специалист компании «Кодерлайн»
Лев Туренко
Перейти к содержимому
Настройка 1С
Решения по использованию программ 1С. Техподдержка. Сопровождение. Услуги программистов.
При этом 1С не удается произвести подключение к информационной базе. Ошибка связана с регистрацией одной компоненты в системе.
На что обратить внимание
- Зарегистрируйте библиотеку comcntr вручную. При выполнении операции или открытия командной строки используйте запуск от имени администратора (полные права).
Например,
regsvr32 «C:Program Files1cv88.3.xx.xxxxbincomcntr.dll»
или
regsvr32 «C:Program Files (x86)1cv88.3.xx.xxxxbincomcntr.dll»
, где 8.3.xx.xxxx — версия целевой технологической платформы. Путь к каталогу «Program Files» зависит от разрядности вашей ОС и клиента 1С.
До сообщения «Успешное выполнение DllRegisterServer в [путь_компоненты]».
★ Возможно, потребуется удалить или отменить регистрацию старой версии, которая была ранее активна (запуск regsvr32 с ключом «/u» — отмена регистрации через DllUnregisterServer).
- Проверьте соответствие разрядности библиотеки и клиента 1С, который вызывает com-коннектор.
- Проверьте настройки в «Администрирование — Службы компонентов — Приложения COM+ — V83COMConnector» с помощью оснастки comexp. Подробная регистрация коннектора — в заметке (п. 3).
- Перезагрузите ПК.
Бывает, что программа установки не может автоматически зарегистрировать новую DLL, поэтому приходится делать регистрацию comcntr из каталога bin установленной версии вручную.
Не получается? Зовите на помощь ИТ-специалиста или обратитесь с нашим джедаям техподдержки → +7-911-500-10-11
Ошибка -2147221005(0x800401F3) возникает в 1С преимущественно при инициации синхронизации данных в ручном порядке, но может появиться и без видимых причин, во время фоновой работы. Количество случаев резко увеличивается после каждого обновления 1С Бухгалтерии. Чтобы обмен данными с базой заработал нормально, придется выполнить несколько действий вручную, так как без вмешательства извне здесь не обойтись.
Ошибка при вызове конструктора (COMObject) по причине: -2147221005(0x800401F3): Недопустимая строка с указанием класса
Причины
Спровоцировать ошибку могут разные неполадки и в тексте сообщения может быть указан виновник сбоя. Так бывает не всегда, порой дополнительной информации там не указано и приходится искать в ручном режиме.
Основные причины ошибки -2147221005(0x800401F3):
- отсутствует регистрация определенного СОМ-объекта, к которому сейчас происходит обращение;
- недостаточно прав для выполнения процедуры, хотя обычно в этом случае появляется другая ошибка;
- попытка запроса устаревшего или отсутствующего объекта.
Как исправить ошибку -2147221005(0x800401F3)?
Как следует из перечня причин ошибки, может быть несколько решений данного сбоя. И первым делом стоит проверить права пользователя, который запустил процедуру, спровоцировавшую ошибку. Возможно, нужно повысить его полномочия, расширив доступ к важным компонентам. К примеру, служба Агента сервера 1С запускается с технологической записью, но обмен данными требует использование файловой ИБ. В этом случае следует добавить разрешение NTFS для конкретного доступа. Это довольно банальное действие, поэтому расписывать не имеет смысла.
Регистрация объектов
Очень часто причиной сбоя становится незарегистрированная библиотека comcntr.dll, но не она одна. Чтобы провести регистрацию, нужно ввести в командную строку несколько команд: C:WindowsSysWOW64regsvr32 /u “c:Program Files1cv88.3.17.1851bincomcntr.dll” и C:WindowsSysWOW64regsvr32 “c:Program Files1cv88.3.17.1851bincomcntr.dll”. Если результат будет неожиданным, скорее всего в вашей системе вместо Program Files нужно использовать Program Files (x86).
Если в тексте сообщения есть указание проблемного COM-объекта, нужно поработать с ним. Например, у некоторых пользователей проблема в MSXML2.XMLHTTP.4.0. Решением будет его регистрация или редактирование объекта. В конкретном случае нужно просто запустить редактор реестра, в поиск ввести MSXML2.XMLHTTP.4.0 и заменить значение с 4.0 на 6.0.
Отказ от устаревших объектов
Еще одна из наиболее вероятных проблем – обращение к устаревшему объекту. Если у вас где-то в коде есть строка COMConnector = Новый COMObject(«V82.COMConnector»);, то нужно заменить на актуальную версию V83.COMConnector. То же самое и с другими объектами, которые сейчас не поддерживаются.
Преимущественно одно из действий помогает устранить ошибку -2147221005(0x800401F3) в 1С. За редкими исключениями все должно работать стабильно. Мы же ожидаем, что вы напишете – удалось ли решить проблему и что было сделано.
12.11.20 — 15:11
Перестало работать OLE-соединение «V83.Application»: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса. Тема заезженная, везде предлагают выполнить перерегистрацию платформы. Стоит 8.3.10.2466 х64, но клиентская часть 32-разрядная, делаю (под админом): regsvr32 «c:Program Files1cv88.3.10.2466bincomcntr.dll» (или надо regsvr32 «c:Program Files (x86)1cv88.3.10.2466bincomcntr.dll»?). Дальше надо сервер перезагрузить, или необязательно?
Читал статьи Ошибка V82.COMConnector на сервере 64. Решение проблемы (http://catalog.mista.ru/1c/articles/197627/) и Решение проблемы «Недопустимая строка
с указанием класса (https://efsaver.ru/docs/reshenie-problemy-nedopustimaya-stroka-s-ukazaniem-klassa.html), кое-что изменил/добавил в приложение COM+ V8COMConnector. Чтобы изменения вступили в силу, как перезапустить?
1 — 12.11.20 — 15:36
Службы компонентов/Действие/Пуск?
2 — 12.11.20 — 15:40
не помню что конкретно сделал, но статья с инфостарта не помогла, по моему привел разрядность к одному знаменателю
3 — 12.11.20 — 15:41
сижу уже с начала создания темы вспоминаю как эту бяку победил, хоть убей не помню, помню точно что по статье делал, не вылечилось и сервант ребутил и клиента
4 — 12.11.20 — 15:42
Взять regsvr32 не из system, а из SysWOW ?
5 — 12.11.20 — 15:50
Не помогло… Службу Агент сервера 1С:Предприятия 8.3 (x86-64) перезапустить, выкинет пользователей?
(1) У Альфа-Авто должна быть 32-разрядная клиентская часть, иначе торговое оборудование не работает.
(4) Полностью C:WindowsSysWOW64regsvr32 «c:Program Files1cv88.3.10.2466bincomcntr.dll»? Не Program Files (x86)?
6 — 12.11.20 — 15:52
(5) Если SysWOW, то (x86)
И наоборот
7 — 12.11.20 — 15:52
(5) как ты пытаешься вызвать х64 ком объект с х32 разрядного клиента? ответ, никак, регистрируй на клиенте х32 компненту
8 — 12.11.20 — 15:53
(4) Чтоб в силу вступило, что сделать?
9 — 12.11.20 — 15:55
(8) Ничего, так должно все работать, у тебя из сабжа не создается ком объект, потому что он ее не видит, а точнее видит другой разрядности, это не проблема подключений к базе через ком(сервер х64,х32, не важно), это проблема создания объекта как такого
10 — 12.11.20 — 15:56
(0) делай обертку через службы компонентов для библиотеки comcntr.dll
11 — 12.11.20 — 16:09
(9) Дык, как правильно ее регистрировать?
(10) Вроде все сделано. Описание: 1CV83 COM Connector Class, DLL: C:Program Files1cv88.3.10.2466bincomcntr.dll
12 — 12.11.20 — 16:22
(11) а у тебя точно регистрация проходит?
13 — 12.11.20 — 16:24
И так, делает reg.bat файл , вставляем туда строку
C:WindowsSystem32regsvr32.exe «C:Program Files1cv88.3.15.1830bincomcntr.dll»
pause
сохраняем, запускаем от имени администратора, пробуй, скрин о регистрации сюда
14 — 12.11.20 — 16:25
(13) Пути поменять на свои, лучше полные
15 — 12.11.20 — 16:26
для х32 путь в C:Program Files (x86)
16 — 12.11.20 — 16:31
17 — 12.11.20 — 16:55
(13) Успешное выполнение: https://ibb.co/z5h2fHc. Ошибка осталась. 1С надо перезапускать?
(16) Что им должен увидеть?
Вроде дело не в регистрации, в чем-то другом… Может служба какая-то отвалилась… Какая? Работало же раньше…
18 — 12.11.20 — 17:01
1С конечно надо перезапустить
19 — 12.11.20 — 17:03
(18) Не помогло.
20 — 12.11.20 — 17:51
(19) У тебя com соединение на сервере ведь создается, причем тут клиентская часть. Вот на сервере и регистрируй dll. Причем, если сервер 64х, то и dll нужно соответствующую. Сперва лучше отмени уже сделанную регистрацию, чтобы в реестре путаницы не было.
21 — 12.11.20 — 17:59
В БСП и типовых конфигурациях есть функция ЗарегистрироватьCOMСоединитель()
22 — 12.11.20 — 18:14
О да тут похоже все не понимают, что COMСоединитель и OLEAutomation (V8*.Application) — разные вещи и имеют существенные отличия в отношении контроля совместимости версий платформы и способа регистрации.
Кто хочет прокачать теорию, читайте тут все разжевано http://catalog.mista.ru/1c/articles/387577/
Кому нужно решение, в (16) уже дали ссылки — там все сделано очень универсально (как и весь ИР). Картинка на странице описания правда старовата уже. Запускать эту приблуду надо на том компьютере, где будет создаваться COM-объект (COM-клиент).
23 — 12.11.20 — 19:49
(20) (22) Уже всяко пробовал, в том числе с ключом /u (с отменой регистрации). Другой вариант: переустановить платформу, при этом она зарегистрирует все компоненты заново. Но это крайний вариант. Вроде дело не в регистрации…
Службы компонентов как перезапустить? Хотя сервер перезагрузил (все вышли), не помогло!?
24 — 12.11.20 — 22:16
Где, в какой ветке реестра Windows прописывается регистрация платформы?
25 — 12.11.20 — 22:43
(23) Если ты пробовал все, что я рекомендовал, то покажи скриншот с COM классами в ИР.
26 — 13.11.20 — 05:33
(25) Как это сделать? Это с помощью инструментов (16)? У меня их нет.
27 — 13.11.20 — 07:54
(26) Почему у тебя их нет? Что ты делал, чтобы они у тебя появились?
28 — 13.11.20 — 08:09
(27) Управление COM классами 1С
Просмотр и регистрация COM классов платформы 1С.
Все разрядности
Все типы классов
Все издания платформы
Генерация конфигурационного файла разрешения отладки COM-соединения
Можно указать для каждого класса нужную версию платформы из списка установленных
Пожалуй стоит поставить…
А «Регистрация утилиты администрирования серверов (8.3.10.2466)» — то, нет? Объект: «C:Program Files (x86)1cv88.3.10.2466binRegMSC.cmd» выполнил: C:Program Files (x86)1cv88.3.10.2466bin>regsvr32 /n /i:user radmin.dll — Успешное выполнение DllInstall в radmin.dll, но ошибка осталась.
29 — 13.11.20 — 08:14
(28) Поздравляю. Ты сделал первый шаг в правильном направлении — осознал, что «стоит поставить». Представляй, что я крепко держу тебя за руку, и потому делай уверенно следующий шаг.
30 — 13.11.20 — 08:15
«C:Program Files (x86)1cv88.3.10.2466bin1cv8.exe» /regserver
31 — 13.11.20 — 08:21
(29) Не понял, что скачивать: ИНСТРУМЕНТЫ РАЗРАБОТЧИКА ПОРТАТИВНЫЕ 1С 8.2+ V5.67P или 1С 8.3 V5.67E (1С 8.2 смущает)?
(30) В командной строке (под админом)?
32 — 13.11.20 — 08:24
(31) да… а потом на всякий случай: regsvr32 «C:Program Files (x86)1cv88.3.10.2466bincomcntr.dll»
33 — 13.11.20 — 08:27
(31) не смущайся. Скачивай
34 — 13.11.20 — 08:31
(31) Там не 8.2, а 8.2+. Качай портативные
35 — 13.11.20 — 08:33
(32) Сообщений не выдало, процесс OLE-соединения вроде пошел… сразу ошибку (0) не выкинула. О, Подключение выполнено к базе: ‘Srvr=»ANDROMEDA»;Ref=»PATRCA»;’ 13.11.2020 10:27:23 — успех! Посмотрю как в рабочей базе…
36 — 13.11.20 — 08:44
(35) Только это не из-за (32), а из-за (30). Ну хоть кто то здесь знает разницу из (22).
37 — 13.11.20 — 11:29
Все же, в какой ветке реестра Windows прописывается регистрация платформы?
(36) Статью в (22) читал, но по другому поводу: Альфа-Авто обычно ведет Com-обмены с УПП/КА1. Когда поддержка КА1 кончилась, создали базу ERP/КА2, но она потребовала более высокую версию платформы. С OLE-обменом возникли проблемы: https://i.ibb.co/pdrH9Wy/COM.jpg. Меняю версию зарегистрированной платформы, тогда нормально. Даже функции написал:
// Определяет версию подключаемого приложения, при не соответствии требуемой переключает ее для OLE
// для пользователей с административными правами
Функция ВерсияПодключаемогоПриложения(СтрокаПодключения) Экспорт
СисИнфо = Новый СистемнаяИнформация;
ТекущаяВерсия = СисИнфо.ВерсияПриложения;
Если Найти(ТекущаяВерсия, «8.3») = 0 Тогда
Возврат ТекущаяВерсия;
КонецЕсли;
ТребуемаяВерсия = ?(ПодключенаВысокаяВерсия(СтрокаПодключения), ВысокаяВерсия, ПрежняяВерсия);
х86 = Не ПодключенаВысокаяВерсия(СтрокаПодключения);
WshShell = Новый COMОбъект(«WScript.Shell»); Ключ = «»;
Значение = ЗначениеКлючаЗарегистрированнойВерсииV83Application(WshShell, Ключ);
// Перключение версии OLE
// Если Не ПустаяСтрока(Значение) И Найти(Значение, ТребуемаяВерсия) = 0 Тогда // ТекущаяВерсия <> ТребуемаяВерсия
// Значение = СтрЗаменить(Значение, «Program Files» + ?(х86, «», » (x86)»), «Program Files» + ?(х86, » (x86)», «»));
// Значение = СтрЗаменить(Значение, ТекущаяВерсия, ТребуемаяВерсия);
// WshShell.RegWrite(Ключ, Значение);
// ЗапуститьПриложение(«taskkill.exe /f /im dllhost.exe»,, Истина);
// Сообщить(«Переключили версию платформы на » + ТребуемаяВерсия, СтатусСообщения.Информация);
// КонецЕсли;
Возврат ?(ПустаяСтрока(Значение), ТекущаяВерсия, ТребуемаяВерсия);
КонецФункции // ВерсияПодключаемогоПриложения()
// Переключает на старую версию платформы для OLE-соединения, если она переключена на новую версию
// для пользователей с административными правами
Процедура ЗвершитьПодключениеOLE() Экспорт
WshShell = Новый COMОбъект(«WScript.Shell»); Ключ = «»;
Значение = ЗначениеКлючаЗарегистрированнойВерсииV83Application(WshShell, Ключ);
Если ПустаяСтрока(Значение) Или Найти(Значение, «Program Files (x86)1cv8» + ПрежняяВерсия) > 0 Тогда
Возврат;
КонецЕсли;
WshShell.RegWrite(Ключ, «C:Program Files (x86)1cv8» + ПрежняяВерсия + «bin1cv8.exe»);
ЗапуститьПриложение(«taskkill.exe /f /im dllhost.exe»,, Истина);
КонецПроцедуры // ЗвершитьПодключениеOLE()
Функция ЗначениеКлючаЗарегистрированнойВерсииV83Application(WshShell, Ключ) Экспорт
// значение HKEY_LOCAL_MACHINESOFTWAREClassesCLSID{e92b75e3-2ea1-4fec-b493-cef3ec59fca6}LocalServer32 должно быть C:Program Files1cv88.3.14.1779bin1cv8.exe
CLSID = «{E92B75E3-2EA1-4FEC-B493-CEF3EC59FCA6}»;
Ключ = «HKEY_CLASSES_ROOTWow6432NodeCLSID» + CLSID + «LocalServer32»;
Значение = «»;
Попытка
Значение = WshShell.RegRead(Ключ);
Исключение
Сообщить(«Произошла исключительная ситуация (WshShell.RegRead): Неверная ссылка на корень в разделе реестра » + Ключ + » — недостаточно прав на реестр Windows», СтатусСообщения.Внимание);
КонецПопытки;
Возврат Значение;
КонецФункции // ЗначениеКлючаЗарегистрированнойВерсииV83Application()
Но это только для пользователей с административными правами, пришлось от них отказаться. А метод COM (не OLE) нормально работает. Нашел на http://catalog.mista.ru/public/1042208/ метод открытия объекта по ссылке в другой базе (подобно OLE), написал:
// Открытие объекта по ссылке в базе ERP/КА2, работающей на более высокой версии платформы
//
Процедура ОткрытьОбъектВБазеВысокойВерсии(Ссылка) Экспорт
Если обЗначениеНеЗаполнено(Ссылка) Тогда
Предупреждение(«Объект в » + БазаОрганизации(ОрганизацияТекущегоПодключенияКА()) + «не найден!», 60);
Возврат;
КонецЕсли;
ИмяСервера = Сред(ОбъектКА.СтрокаСоединенияИнформационнойБазы(), 7, Найти(ОбъектКА.СтрокаСоединенияИнформационнойБазы(), «;Ref=») — 8); // «andromeda:1641»;
ИмяБазы = Сред(ОбъектКА.СтрокаСоединенияИнформационнойБазы(), Найти(ОбъектКА.СтрокаСоединенияИнформационнойБазы(), «;Ref=») + 6, СтрДлина(ОбъектКА.СтрокаСоединенияИнформационнойБазы()) — Найти(ОбъектКА.СтрокаСоединенияИнформационнойБазы(), «;Ref=») — 7); // «PatrERP»;
Если Не БазаКАОткрытаПользователем() Тогда
Предупреждение(«База ‘» + ИмяБазы + «‘ не открыта под пользователем ‘» + СокрЛП(ПараметрыСеанса.Пользователь) + «‘», 60);
Возврат;
КонецЕсли;
Объект = Ссылка.ПолучитьОбъект();
ТипОбъекта = СокрЛП(Объект.Метаданные().ПолноеИмя());
GUID = ОбъектКА.XMLСтрока(Ссылка.УникальныйИдентификатор());
НавигационныйGUID = Сред(GUID, 20 ,4) + Сред(GUID, 25, 12) + Сред(GUID, 15, 4) + Сред(GUID, 10, 4) + Сред(GUID, 1, 8);
ПутьОбъекта = «e1cib/data/» + ТипОбъекта + «?ref=» + НавигационныйGUID;
НазваниеОкна = СокрЛП(ОбъектКА.Константы.ЗаголовокСистемы.Получить()); // «КА2 ИП Патрушева Г.М.»;
НазваниеОкна = СтрЗаменить(НазваниеОкна, «»»», «»»»»»);
НазваниеОкна = СтрЗаменить(НазваниеОкна, » «, «»» «»»);
СерверБаза = ИмяСервера + «» + ИмяБазы;
СерверБаза = «/S»»» «»»» + СерверБаза + «»»» «»»/URL»»» «»»» + ПутьОбъекта; // после СерверБаза? » /N»»Администратор»» /P»»2001221″
ПутьКФайлу = «\corp.akitworkspace$1c1с_Архивы»;
ПолныйПутьКФайлу = ПутьКФайлу + «ОткрытьСсылкуВДругойБазе.exe»;
ПолныйПутьОткрытияОбъекта = «»»»»»; // вроде не нужно СтрЗаменить(«c:Program Files1cv8common1cestart.exe ENTERPRISE » + СерверБаза,» «,»»» «»»);
Файл = Новый Файл(ПолныйПутьКФайлу);
Если Не Файл.Существует() Тогда
Сообщить(«Файл: ‘» + ПолныйПутьКФайлу + «‘ не существует.», СтатусСообщения.Информация);
Возврат;
КонецЕсли;
Приложение = ПолныйПутьКФайлу
+ » » + НазваниеОкна
+ » » + ПутьОбъекта
+ » » + СерверБаза
+ » » + ПолныйПутьОткрытияОбъекта;
// Сообщить(Приложение, СтатусСообщения.Информация);
ЗапуститьПриложение(Приложение);
КонецПроцедуры // ОткрытьОбъектВБазеВысокойВерсии()
38 — 13.11.20 — 11:40
(37) > ПолныйПутьКФайлу = ПутьКФайлу + «ОткрытьСсылкуВДругойБазе.exe»;
/URL <адрес>
— указывает необходимость перехода по ссылке. Поддерживаются ссылки формата e1c:
Если указана внешняя ссылка — выполняется поиск запущенного клиентского приложения с той же строкой соединения, которая указана в параметре. В найденном клиентском приложении не должно быть открыто модальное или блокирующее окно. После этого выполняется попытка перехода по локальной ссылке из исходной навигационной ссылки и активизируется основное окно приложения. В случае неудачи клиентское приложение продолжает работу. Если исходная навигационная ссылка не содержит локальной ссылки (содержит только адрес информационной базы), то попытка перехода не выполняется, активируется основное окно найденного клиентского приложения.
Если подходящего клиентского приложения не найдено, строка соединения определяется из параметра командной строки /URL.
Если указана локальная ссылка — клиентское приложение запускается в общем порядке. После запуска выполнится попытка перехода по переданной локальной ссылке.
Для ссылок формата http(s) всегда запускается (или находится активный) тонкий клиент.
© ООО «1С-Софт», 1996-2019. Все права защищены.
39 — 13.11.20 — 11:55
(38) Что-то не понял к чему это, о чем?
40 — 13.11.20 — 12:42
Не сразу заметил эту (0) ошибку, потому что в ЖР в отборе на вкладке Данные отмечаю лишь объекты заслуживающие внимание (например, по кассе). Тогда ошибки по другим объектам не видны. Можно как-то настроить отбор, чтобы события с ошибками все отображались. А события Информация — только отмеченные на вкладке Данные?
41 — 13.11.20 — 13:13
(39) ОткрытьСсылкуВДругойБазе.exe не нужен
42 — 13.11.20 — 13:55
Mikhail Volkov
43 — 13.11.20 — 17:33
На счет ЖР (40), смотреть либо ошибки, либо отмеченные объекты? Вместе никак?
Первая статья в новом 2021 году будет посвящена программе 1С. Это связанна с тем что данное ПО очень распространено. Так как альтернативы пока что нет. К типовым конфигурация претензий практически нет, в них не появляются ошибки, при обновлении, переносе и других манипуляциях. Что нельзя сказать о самопысных конфигурациях или измененных типовых. Как правило занимаются этим программисты не высокого уровня, так как час разработки профессионала стоить достаточно дорого. В результате конечный пользователь получаем огромные проблемы которые возникают после каких либо манипуляций либо с базой или клиентами. Сегодня поговорим об одной интересной ошибки которая появляется при попытке распечатать какой либо документ «Ошибка при вызове конструктора (COMOбъект) класс не зарегистрирован».
Использование COMOбъектов в 1С это прошлый век, сейчас уже ни кто так не пишет. Раньше с его помощью реализовали печать документов. Они выгружались в OpenLibre Office и от туда уже печатались.
Появиться такая ошибка может после
1 Обновления платформы
2 Переустановки ОС и 1С
3 Обновление конфигурации
4 Проблем с офисными пакетами
5 и т.д.
Это самые распространенные.
У меня есть еще несколько статей в которых я рассказывал как можно исправить различные ошибки 1С рекомендую прочитать.
Ошибка при отправке запроса на сервер
При появлении ошибки в 1С нет кнопки подробнее
Как настроить сортировку в отчете
Как сохранить обработку (как внешнюю)
Как указать версию платформы
Как посмотреть изменения в конфигурации
Три способа избавиться от ошибки «Ошибка при вызове конструктора…»
И так после каких либо манипуляций с 1С у вас стала появляться ошибка.
Ошибка при вызове конструктора (COMOбъект): -2147221164(0x80040154) класс не зарегистрирован
Первый способ
Самое простое это переустановить офисные пакеты OpenLibre, так же как вариант если у вас стоял Open поставить Libre и на оборот. Это нужно для того чтобы обновить специальный компонент.
Второй способ
Попробовать зарегистрировать самостоятельно, для этого запускаем командную строку от имени администратора, переходим в каталог введя команду.
cd windowssyswow64
И регистрируем
regsvr32 «C:Program Files (x86)1cv88.3.16.18.14comcntr.dll»
Кстати данную манипуляцию нужно проводить на сервере.
Третий способ
Установить 32 битную версию клиента 1С, можно даже поверх х64. В итоге у вас появиться два ярлычка для запуска, один для х32 второй х64.
Версию можно указать и в ярлыке запуска 1С.
Можно еще попробовать самостоятельно создать COM + , но лично из своего опыта могу сказать это не помогает. Самый действенный вариант это установка х32 клиента. Так как компонента которая необходимо работает только с х32.
Так же проблема может быть непосредственно в самом коде.