Обновлено: 27.01.2023
В организации, где я сейчас работаю, для обмена данными между базами 1С широко используется механизм COM. Пока все рабочие базы работали на одном сервере, проблем с этой технологией не было. Организация растет, часть баз уехала на другой сервер, и, когда типовые конфигурации потребовали срочного обновления платформы, на одном из серверов установили сервер приложений одной из последних версий. По некоторым технологическим причинам быстро обновить платформу на втором сервере не представлялось возможным, и интеграция между базами расположенными на разных серверах встала.
Пришлось искать решение. Я имею представление о принципах работы технологии COM (безотносительно к 1С) и посчитал, что есть шанс решить проблему.
До тех пор я «знал», что нельзя заставить COM работать с разными версиями платформы, и не удосужился проверить эту информацию. Статьи на инфостарте нашел уже в ходе своих экспериментов, когда разбирался с ошибками. Тем не менее, решил написать статью с пошаговым руководством, позволяющим избежать все известные мне ошибки.
В ходе эксперимента возникали ошибки. При поиске решения этих ошибок наткнулся на хорошую статью «Параллельное использование нескольких версий COM control (несколько версий платформ)»; и сама статья и комментарии к ней мне очень помогли, но всех проблем решить не смогли.
Эксперименты проводились на виртуальной машине с установленной Windows Server 2012 R2 Standard (англоязычная). Сервер приложений не ставил. Экспериментировал с 32-х разрядной клиентской частью 1С. Для экспериментов написал простую обработку, которая позволяет задавать и сохранять в настройках параметры нескольких COM-подключений, с их помощью подключаться к базам и выполнять произвольный код для проверки корректности подключения. Обработка позволяет выбрать где будет создаваться подключение: на клиенте или на сервере. Обработку прикладываю.
Итак, вот что у меня получилось.
Чтобы не запутаться, приложения буду называть «Приложение1» и «Приложение2», компоненты «Компонент1» и «Компонент2» (само собой их может быть больше). Приложение1 и Компонент1 будут использоваться для подключения к базам на платформе 8.3.12.1595, а Приложение2 и Компонент2 – для 8.3.17.1851.
Порядок действий:
1. В проводнике правой кнопкой мыши по This PC -> Manage. Откроется окно «Server manager. Dashboard».
2. В правом верхнем углу этого окна Tools — > Component services. Откроется соответствующее окно.
3. В дереве левой части окна разворачиваем Console Root -> Component Sarvices -> Computers -> My Computer -> COM+ Applications.
4. Создание приложений.
a. В контекстном меню COM+ Applications в дереве -> New -> Application. Откроется мастер.

b. В окне приветствия жмем Next.

c. Выбираем «Create an empty application».
d. Вводим имя приложения для первого соединения COM. Я в имени использовал номер версии платформы.

e. Жмем Next, и на следующем шаге указываем, пользователя, от имени которого будет работать компонент (я использовал первый вариант, т.к. для эксперимента это не важно).

f. Жмем Next, и следующий шаг позволяет добавить роли, позволяющие работать с этим компонентом. Тут я ничего делать не стал.
g. Жмем Next, и можем в каждую из ролей предыдущего шага добавить конкретных пользователей. Тут также оставил все без изменений.
h. Жмем Next, затем Finish, и у нас есть Приложение1.
i. Аналогично создаем Приложение2.
j. Наше дерево в левой части окна выглядит примерно вот так:

5. Создаем компоненты.
a. Для Приложения1 вызываем контекстное меню для раздела Components –> New -> Component. Откроется мастер установки компонентов.
b. На странице приветствия нажимаем Next, и на следующем шаге выбираем «Install new component(s)».

c. Откроется диалог выбора файла, в котором мы указываем путь к файлу comcntr.dll соответствующей версии.

d. Жмем Next, затем Finish, и у нас появляется новый компонент с названием по умолчанию.

e. Во многих статьях рекомендуют открыть Properties этого компонента и правильно установить настройки безопасности. У меня работает и так, поэтому не буду ничего делать.
f. Жмем правой кнопкой мыши по этому компоненту и в контекстном меню выбираем «Alias…». Откроется инструмент, позволяющий создать копию этого компонента с новыми ProgID и CLSID.
g. В открывшемся окне указываем название нового компонента (я использовал в названии часть номера релиза платформы). Список в левой части окна («Please select a destination») показывает, в каком приложении будет располагаться наша копия, проверяем, что она остается в Приложении1 и жмем OK.

У нас есть Компонент1.
h. Создаем новый компонент повторяя шаги f и g еще раз, но в названии используем номер другого релиза платформы и в левой части окна указываем, что вторая копия будет располагаться в Приложении2. У нас есть и Компонент2.
i. Структура наших приложений и компонентов теперь выглядит так:

j. Осталась небольшая проблема: все наши компоненты ссылаются на одну и ту-же dll. Для её решения вызываем контекстное меню Компонент2, открываем Properties и копируем CLSID.

k. Запускаем regedit и ищем в дереве узел соответствующий CLSID из предыдущего пункта и содержащий в себе подузел InprocServer32.

l. Путь указанный в значении (Default) меняем на путь к comcntr.dll версии, соответствующей Компонент2.
m. Закрываем regedit.
6. Можем проверить COM-соединения с помощью приложенной обработки.
Обработка для проверки.
Интерфейс обработки прост. По нажатии кнопки «Проверить соединение» выполняется попытка создать соединение с параметрами, указанными в текущей строке, и выполнить код прописанный в поле «Код проверки».

Почему сделано именно так:
2. Создаем отдельные приложения для каждой версии платформы. Если компоненты разных версий размещать в одном приложении, то при последовательном использовании разных компонентов, выдается ошибка «-2147024769(0x8007007F): The specified procedure could no be found.».

Видимо, первый из используемых компонентов как-то кэшируется, и второй перестает работать.
При обмене с базами возникает ошибка:
При попытке подключения к информационной базе произошла ошибка:
Ошибка при вызове конструктора (COMОбъект): Недопустимая строка с указанием класса: Недопустимая строка с указанием класса
Решение ошибки подключения через COM
Все что нам надо это выполнить регистрацию COM-соединения.
Вот что говорит 1С: Программа установки сама выполняет регистрацию COM-соединения “ для компьютера”. Имеется возможность выполнить регистрацию «для пользователя» с помощью командной строки «regsvr32 /n /i:user comcntr.dll».
А вот как это сделал я с помощью командной строки и команды Regsvr32.
Пуск – Выполнить ввел команду Regsvr32 «C:Program Files1cv828.2.14.533bincomcntr.dll» и жмем Enter.
Regsvr32 – команда регистрирует в реестре файлы .dll как компоненты команды.
regsvr32 [/u] [/s] [/n] [/i[:cmdline]] имя_dll
Специальные предложения







У меня была такая беда, только текст ошибки другой:
При попытке соедиения с COM-сервером произошла следующая ошибка:
Метод объекта не обнаружен (Connect)
И тоже помогло 🙂
Блин, а я с бубном плясал во круг служб компонентов, настроек DCOM и все что на ум приходило 🙂
Для Win 7 нужно создавать файл с расширением bat или cmd и выполнять от имени администратора иначе ни чего не получится.
Господа Ошибка
-2147221005(0x800401F3): Недопустимая строка с указанием класса
: Ошибка при вызове конструктора (COMОбъект)
Эксель = Новый COMОбъект(«Excel.Application»);
вот код
______________________________________
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика.
Эксель = Новый COMОбъект(«Excel.Application»);
Эксель.WorkBooks.Open(Путь);
Эксель.Sheets(1).Select();
.
.
____________
Везде где мог зарегистрировал comcntr.dll и в службе компонентов под учеткой админ и в настройке компонента все ок поставилось . Проблема не решилась и клиент Толстый «Управляемое и обычный». ОС 7 х64 платформа х32 на х64 тоже ставил такая же беда . Права полные запуск под админом . файл открытия Excel разблокированный что не так?
У меня ошибка осталась проделал и в реестре и в компоненте под полными правами .
: Ошибка при вызове конструктора (COMОбъект)
Эксель = Новый COMОбъект(«Excel.Application»);
-2147221005(0x800401F3): Недопустимая строка с указанием класса
_____
Только вот на ноуте Excel не устанавливал для открытия файла этого! Надо или не надо его устанавливать . связь 1С и Excell есть какая нибудь по билиотекам
А Вы не можете подсказать решение проблемы?:
При попытке редактирования документа выскочила ошибка: «Ошибка СУБД. Внутренняя ошибка компоненты dbeng8». Документ невозможно ни откорректировать, ни пометить на удаление.
(4) Nadegda_P,
Если файловая база 1С:Предприятие 8, то что-то подобное разок случилось в ситуации, когда пользователь в уже ранее проведенном документе перезаполнял табличную часть. И в момент этих его действий выключилось питание.
В результате получилась такая картина:
— движения документа есть,
— в списке документов он виден,
— запросами через консоль запросов получается выбрать и реквизиты документа, и строки табличных частей,
— но при открытии формы документа выдается ошибка наподобие указанной Вами, с подробностями, в которых упоминается несуществующая строка табличной части. И программа закрывается.
Попытки вылечить документ ни к чему не привели, и пришлось применить обходной путь:
1. Движения документа удалили с помощью обработки типа «Корректировка движений документов» (на Инфостарте есть такие),
2. Реквизиты документа подправили с помощью, например, «Групповой обработки объектов» — так, чтобы было видно, что не надо трогать его.
3. Сделали новый документ взамен этого, и провели его. А старый так и лежит, и никому вроде не мешает.
Если бы существовал бэкап, содержащий этот документ в нормальном состоянии, можно было бы XML-обменом попробовать загрузить документ из бэкапа. Но не было такого бэкапа.
Если файловая база 1С:Предприятие 8, то что-то подобное разок случилось в ситуации, когда пользователь в уже ранее проведенном документе перезаполнял табличную часть. И в момент этих его действий выключилось питание.
В результате получилась такая картина:
— движения документа есть,
— в списке документов он виден,
— запросами через консоль запросов получается выбрать и реквизиты документа, и строки табличных частей,
— но при открытии формы документа выдается ошибка наподобие указанной Вами, с подробностями, в которых упоминается несуществующая строка табличной части. И программа закрывается.
Попытки вылечить документ ни к чему не привели, и пришлось применить обходной путь:
1. Движения документа удалили с помощью обработки типа «Корректировка движений документов» (на Инфостарте есть такие),
2. Реквизиты документа подправили с помощью, например, «Групповой обработки объектов» — так, чтобы было видно, что не надо трогать его.
3. Сделали новый документ взамен этого, и провели его. А старый так и лежит, и никому вроде не мешает.
Если бы существовал бэкап, содержащий этот документ в нормальном состоянии, можно было бы XML-обменом попробовать загрузить документ из бэкапа. Но не было такого бэкапа.
ага, еще бы на SQL бы перевести базу, вообще цены бы вам не было )
(8) WKBAPKA,
Мы тоже не в деревне родились, и про клиент-серверный вариант работы с 1С знаем.
У меня на поддержке есть и базы файловые, и клиент-серверные в достаточном количестве.
В сети той организации, у которой эта проблема случилась, не было установленного 1С-сервера и SQL-сервера, и серверное железо не подходило для такого режима работы.
Да и пользователей в этой организации не столько, чтобы было необходимо переходить на вариант работы через сервер 1С-Предприятия.
Поэтому, раз проблема была только в одном этом документе, было сделано то, что я описал выше.
(4) Nadegda_P, решением для вас будет файл chdbfl.exe который лежит в папке BIN.
в смысле? у мну на домашней машине стоит 2005 скуль. и машина у меня не серверная.
вы бы могли эту базу вообще не поднять, там же один файл. в случае разрушения его, все, капут.
другой вопрос, что нужно покупать 1С сервер. это да. тока думаю, что они уже раза три как переплатили за ваши услуги. но то такое. не мое дело конечно.
Если пользователей не много то и железо для сервака не нужно суперское. В одной конторе 5 пользователей, стоит обычный комп проц уже не помню, но с 2 гб. оперативы, SentOS+PostgreSQL+1C все нормально работает уже 3 года.
Недавно обновлял платформу и 2 дня работали в файловом варианте, так все кричали что все ужасно тормозит.
не особо силен в консольных командах, возьму на заметку. Спасибо!
Еще в профилях пользователей C:Documents and Settings….Application Data1C1CEStart1CEStart.cfg изменяем параметр UseHWLicenses=0 на UseHWLicenses=1
Отпишись ели получится
Garik8866; dante; AKV77; user895546; CratosX; user1042924; ch1mera; quNas; kondr1221; wolder; DrVitaly; mnb-next; Pavel_NT; rus_alexey; nano1c; 77dream77; StAlf; BoryaMbi; emilliya; blich; collider; sv_dima; Z_Z; Dimka74; EugeneMal; vikvikmag; barelpro; 1379511; mi0999; Татьяна_69; Xytras; busy1; alimuslim; Sh00rick; mousesport; markela; Alexion; aronskiy; sergsqr; swflash; Apolonov-Erik; smolyakov; Jon2011; Glukaman; FSerg; bar_s; + 46 – Ответить
(15)
Спасибо, то что нужно — помогло! Только я думаю надо добавить, что компоненту ещё надо запустить!
(15)
хотя у меня просто после обновления платформы перестало подключаться из базы в базу.
я попробовал.
вот только «Поставил галку «Применить политику программных ограничений» — Уровень ограничений «Неограниченный»» не нашел.
но стало наверное еще хуже.
стало примерно так «. метод Подключить не обнаружен . «
удалил Ветку V82COMConnector . и все заработало. вот только не знаю. после перезагрузки сервера что будет.
и это из Бухгалтерии 2.0 в Комплексную автоматизацию.
Но вот основную то необходимость из Бухгалтерии 2.0 в Докуметооборот сходу не получилось.
Пишет «При попытке создания обработки ОбменДаннымиXML произошла ошибка:: Поле объекта не обнаружено (ОбменДаннымиXML)»
ну есно! «Обработка.ОбменДаннымиXML» такого в ДО нет.
Чтож . будем шаманить дальше.
(15) Супер! Какой вы МОЛОДЕЦ! Столько времени промучалась с сервером! И как все просто решается! Спасибо огромное!
(15) Для Windows 7×64 у меня вот так получилось
в %systemroot%SysWoW64 нашел cmd.exe
далее клик на нем правой мышкой и открываю его из меню как администратор
открывается командное окно с путем: C:Windowssystem32
Далее RegSvr32 «С:Program Files (x86)1cv828.2.19.76bincomcntr.dll»
(15) яростно плюсанула 10 пальцами
давно пыталась решить проблему с этими коннекторами — особенно когда несколько разных платформ и выгрузка идет например с 8.2 торговли в 8.3 бухгалтерию
огромное СПАСИБО за такую подробную инструкцию.
первый вариант с regsvr32 не помогал
(15) , (77)
Спасибо, оба молодцы, хотя (77) выдал более подробную, пошаговую для «чайников» инструкцию.
Рекомендации работают .
Спасибо за то что написали об этом. Когда мне было нужно — нигде об этом не писалось. Было убито немерено времени.
Большое спасибо, сам сталкивался с такой проблемой, сломали голову, так и не смогли забороть. А сейчас попробовал и все получилось.
регистрация по новой этой dll не решило проблемы: платформа 1С:Предприятие 8.2 (8.2.13.219) — может есть еще решения проблемы.
З.Ы.
Платформу не целесообразно обновлять так как у меня распределенка — а новая платформа при изменении в конфигурации отправляет в файле обмена полностью файл конфигурации в подчиненные узлы. (по крайне мере была такая проблема)
Использовал, и очень даже неплохо получилось! Спасибо.
Манипуляция с компонентой не помогла.
Regsvr32 «C:Program Files1cv828.2.14.540bincomcntr.dll» делал результат ноль.
Платформу переставлял, тоже не помогло.
Какие будут идеи может с компонентой есть еще какая то настройка?
Как вариант, чтобы запустить cmd в windows 7 от имени администратора, можно запустить его из папки «C:WindowsSystem32» (в папке System32 есть файл cmd, который нужно запустить от имени администратора :)))
Автору респект, что поделился. Давно это проходил и, именно так решал проблему. Но не удосужился где-то зафиксировать.
Решил проблему с выгрузкой базы данных dbeng8. Спасибо!
а я просто платформу обновил, и у меня эта ошибка исчезла
(36) Ксалекс, просто при обновлении платформы зарегистрировалась библиотека comcntr.dll
Спасибо, оказалось полезней. Обычная регистрация компоненты тоже не спасала.
если не помог не один из двух вариантов, еще есть решение?
Win Server 2003 x64
1С 8.2
пытаюсь из ЗУП подключиться к УТ
При попытке соедиения с COM-сервером произошла следующая ошибка:
: Ошибка при вызове конструктора (COMОбъект): Недопустимая строка с указанием класса: Недопустимая строка с указанием класса
У меня компонента успешно регистрируется, однако ошибка все равно вылетает. Уже сносил компа старую и новую версию платформы, комп перезагружал.
Что еще может быть?
Мне тоже помогло, но только после того, как я ЗАШЕЛ в систему как Администратор.
Просто запуск от имени Администратора не помогал.
У меня Windows 7 64-битная
Обратите на это внимание, я убил на это 6 часов.
Воспользовался советом. Винда 64 разрядная, запустил cmd от имени администратора,
командная строка Regsvr32 «C:Program Files (x86)1cv828.2.19.90bincomcntr.dll». путь изменил на нужный в блокноте. все сработало
Спасибо! Помогла регистрация компоненты! Win server 2012 r2
Мне помогло в следующем случае:
на серваке стоит рабочая версия Бухгалтерии на платформе 8.2.17.143
Себе локально для разработки поставил наверх платформу 8.2.19.116, ибо в старой неприятный глюк с убеганием курсора в левый верхний угол. Но теперь при попытке COM-соединения с сервером от себя выскакивала ошибка несоответствия версий comcntr.dll на клиенте (у меня) и сервере (рабочая).
Зарегистрировал у себя regsvr32 «c:Program Files (x86)1cv828.2.17.143bincomcntr.dll» поверх 8.2.19.116 и соединение с сервером через COM теперь проходит.
+ Запуск от имени администратора. Может понадобится отключение антивирусов.
Был настроен обмен между ИБ комплексной конфигурации (КА).
После обновления конфигураций в двух базах при обмене выдал эту ошибку.
Воспользовался предложенной командой — обмен восстановился.
Огромное спасибо автору.
Начат обмен данными под полными правами на сервере 1С:Предприятия по настройке «Обмен с «1С:Бухгалтерия государственного учреждения 8 (начиная с версии 1.0.2)»» 08.12.2015 20:26:28
Завершен обмен данными под полными правами на сервере 1С:Предприятия по настройке «Обмен с «1С:Бухгалтерия государственного учреждения 8 (начиная с версии 1.0.2)»» 08.12.2015 20:26:30
Отслеживаю отладкой:
в Функция ПодключитсяКИнформационнойБазе
При «Проверке подключения» ТекCOMПодключение получаем COMОбъект
При «Выполнении обмена» ТекCOMПодключение получаем Неопределено
ОбъектПодключения в обоих случаях равен «V83.COMConnector»
В чем может быть проблема. Подскажите.
(60) as7bs,
Сразу не отписался, но лучше поздно.
Проблема была решена установкой сервера 1С заново. Предполагаю, что проблема возникла из за того, что возможно, когда первоначально обновляли сервер 1С в компонентах не включили «COM-соеденение». После новой установки сервера 1С ошибка пропала.
помогло, Но все же пляски с бубном пришлось совершать — и в «Службу компонентов» тоже слазить.
Ошибка возникает при установке новой версии платформы/сервера 1с
Решение:
1)Деинсталлировать технологические платформы предыдущих версий(если они не требуются вам для старых версий баз)
2)Переставить нужную тех. платформу(должна быть одинаковой версии с версией сервера, если есть сервер)
3)Произвести манипуляцию типа «regsvr32 «c:Program Files (x86)1cv828.2.17.143bincomcntr.dll»» или ее 64 разр аналог.
как на машине, так и на сервере
p.s. при этом regsvr как не хотел нормально её регить, так и не согласился. Но работает.
Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(13799)>: Ошибка при вызове конструктора
После этого начинает работать COM на стороне сервера x64.
set version=8.3.5.1625
set x64=C:Program Files1cv8%version%bincomcntr.dll
set x32=C:Program Files (x86)1cv8%version%bincomcntr.dll
set reg64=%systemroot%System32regsvr32.exe
set reg32=%systemroot%SysWoW64regsvr32.exe
%reg64% /i /s «%x64%»
%reg64% /u /s «%x32%»
%reg64% /i /s «%x64%»
%reg32% /u /s «%x64%»
%reg64% /i /s «%x64%»
%reg32% /u /s «%x32%»
%reg64% /i «%x64%»
Не могу вас не поблагодарить — 3 дня я мучался с запуском COM на сервере, только ваш совет помог!
В большинстве случаев никаких проблем с этой библиотекой не наблюдается — обновлятор сам автоматически регистрирует и использует библиотеку нужной версии 1с, но изредка возникают случаи (в основном на серверных ОС), когда требуются «пляски с бубном».
Как понять, что у нас проблемы с COM
Для этого нажимаем кнопку «Проверить настройки» удерживая клавишу «Shift» на клавиатуре:

При нормальной работе COM отчёт будет примерно таким:

При проблемах же с COM возникнет вот такая или похожая ошибка:
Ещё может писать, что -то типа » Не удалось создать программное подключение к 1С «.
Да, судя по тесту, у нас проблемы с COM
Прежде всего, о какой именно библиотеке идёт речь? Эта библиотека comcntr.dll, которая находится в папке bin конкретной платформы 1с:
Эта библиотека устанавливается и автоматически регистрируется в системе при установке платформы.
Кроме того, обновлятор перед тем как подключаться к базе через внешнее соединение сам дополнительно регистрирует в системе библиотеку из нужной версии платформы при помощи команды:
Итак, что мы можем предпринять?
Шаг №0
Обратите внимание на утилиту для отображения и регистрации библиотек RegDllView. При помощи неё вы как минимум сможете контролировать результат работы следующих шагов.
Шаг №1
Прежде всего убеждаемся, что у нас действительно проф-версия платформы, потому что для базовой версии платформы внешнее подключение к базам работать и не должно (это ограничение платформы).
Чтобы понять какая у нас платформа (базовая или проф) выполним вот этот пункт.
Если лицензия на платформу у нас всё же не проф, а базовая, то все остальные шаги не имеют смысла. Внешнее подключение к базам у нас работать не будет (из-за ограничений платформы). Ничего не остаётся, кроме как настроить базы вот так.
Шаг №2
Далее пробуем запустить обновлятор с правами администратора.
Если у вас включён UAC, то добиться этого можно, нажав на ярлыке обновлятора правой кнопкой, и выбрав вариант «Запуск от имени администратора».
Далее выбираем базу и нажимаем кнопку «Проверить настройки». Если ошибка пропала и больше не воспроизводится даже при обычном запуске обновлятора (без прав администратора) — поздравляю, проблема решена. Если нет — идём дальше.
Шаг №3
В 32-битной версии ОС пробуем выполнить команду
В 64-битной версии ОС команда будет такой:
— для регистрации 64-битной платформы 1С:
— для регистрации 32-битной платформы 1С:
Эти команды запускаем от имени пользователя с правами администратора. А при включённом UAC, запускаем cmd через «Запуск от имени администратора», либо через такой же запуск написанного батника.
Если команда регистрации не помогла, то нужно предварительно удалить регистрацию библиотеки comcntr.dll, запустив ту же команду вызова regsvr32 с ключом /u
Если этот шаг не помог — идём дальше.
Шаг №4
Похоже, что у обновлятора не получается зарегистрировать COM компоненту из-за настроек безопасности на вашем сервере.
В этом случае:
- Заходим в Панель управления — Администрирование — Службы компонентов.
- Переходим к ветке Компьютеры — Мой компьютер — Приложения COM+.
- В контекстном меню выбираем Создать — Приложение. Откроется Мастер установки приложений COM+.
- Нажимаем «Далее».
- Выбираем «Создать новое приложение».
- Вводим имя «V83COMConnector». Устанавливаем переключатель «Серверное приложение». Нажимаем «Далее».
- На следующем шаге устанавливаем «Текущий пользователь». Нажимаем «Далее».
- Нажимаем «Готово».
- В появившейся ветке V83COMConnector переходим к подветке Компоненты.
- В контекстном меню выбираем Создать — Компонент. Откроется Мастер установки компонентов COM+.
- Нажимаем «Далее».
- Выбираем «Установка новых компонентов».
- Выбираем файл <каталог 1С>bincomcntr.dll.
- Нажимаем «Далее» — «Готово».
- Переходим к ветке V83COMConnector.
- В контекстном меню выбираем «Свойства». В открывшемся окне переходим на вкладку «Безопасность».
- Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку «Применить политику программных ограничений». Устанавливаем Уровень ограничений — «Неограниченный».
- Нажимаем «ОК».
После этого обновлятор должен смочь самостоятельно регистрировать компоненты всех версий платформ, а не только той, которую мы прописали в компоненте.
Шаг №5
Бывает так, что помогает только повторная переустановка платформы (при этом происходит корректная регистрация компоненты).
Шаг №6
Если проблема начала возникать сразу после обновления платформы 1с, то вероятнее всего новой версии платформы 1с не хватает какого-нибудь сервиспака или обновления для вашей операционной системы. Поэтому если есть возможность — ставим их все, если нет — действуем выборочно согласно этой ссылке.
Шаг №7
Бывает так, что всё работает при обычном запуске обновлятора, но не работает при запуске с повышением привилегий до администратора, когда вы запускаете обновлятор через пункт меню «Запустить от имени администратора» или из программы (типа TotalCommander), которая сама запущена с повышенными привилегиями.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Если фоновый процесс COM-соединения завершается с ошибкой:
: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Invalid class string
Нужно зарегистрировать библиотеку ComConnector comcntr.dll из каталога программы.
. Перед этим нужно отключить службу агента сервера 1С:Предприятия и все программы, использующие эту DLL .

При удачном выполнении Вы увидите:

Разместил: all4cf Версии: | 8.2 УП | 8.3 | Дата: 05.09.2016 Прочитано: 215656

Похожие FAQ
Еще в этой же категории
Ключевые слова и Изображения
Слова упорядочены по частоте использования в тексте
Изображения
Первым делом необходимо зарегистрировать DLL в системе
В случае, если не помогает — создаём коннектор руками:
•Заходим в Панель управления — Администрирование — Службы компонентов.
•Переходим к ветке Компьютеры — Мой компьютер — Приложения COM+.
•В контекстном меню выбираем Создать — Приложение. Откроется Мастер установки приложений COM+.
•Выбираем «Создать новое приложение».
•Вводим имя «V83COMConnector». Устанавливаем переключатель «Серверное приложение». Нажимаем «Далее».
•На следующем шаге устанавливаем «Текущий пользователь». Нажимаем «Далее».
•В появившейся ветке V83COMConnector переходим к подветке Компоненты.
•В контекстном меню выбираем Создать — Компонент. Откроется Мастер установки компонентов COM+.
•Выбираем «Установка новых компонентов».
•Нажимаем «Далее» — «Готово».
•Переходим к ветке V83COMConnector.
•В контекстном меню выбираем «Свойства». В открывшемся окне переходим на вкладку «Безопасность».
•Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку «Применить политику программных ограничений». Устанавливаем Уровень ограничений — «Неограниченный».
Бывало так, что вместо Текущий пользователь нужно прописать USR1CV8
Читайте также:
- Driver installation module что это
- Ошибки при загрузке больничного в 1с
- Microsoft edge xbox one вылетает
- Microsoft edge сохранить видео
- Как поставить пикеты в автокаде
Если сервер 1С стоит на Windows х64, то рано или поздно Вы столкнетесь с проблемой создания COM-соединения, если соединение инициируется на стороне сервера. На стороне клиента COM-соединение работает нормально, на стороне сервера вываливается с ошибкой.
Данная статья позволяет снять проблему. НО – до переустановки или обновления платформы!
Столкнулся с проблемой создания COM-соединения на стороне сервера. Обновили версию платформы, но после установки, компонент COM-соединения не регистрировался в системе. Предлагаемая ниже методика позволяет избавиться от описываемой проблемы.

Ниже алгоритм настройки системы, со скрином к каждому действию. Внимание скрины взяты с другого сайта, для общего понимания действий!
И так:
- Остановка сервера 1С (рекомендуется, но не обязательно)
- Регистрация компоненты comcntr.dll
- Создание обертки COM+, позволяющей 64-битному приложению взаимодействовать с 32-битном.
- Перезагрузка сервера (физического). Не обязательно, но рекомендуется
- Старт сервера 1С. (обязательно 🙂
Вызываем консоль

Регистрируем компоненту. Компонента отсутствует, если установлен только сервер 1С. Почему-то 1С публикует ее только в составе клиента.
вызвать в cmd
regsvr32 "C:Program Files1cv8[номер платформы]bincomcntr.dll"


Библиотека успешно зарегистрирована.
Теперь запускаем службу компонентов. Описывается для Windows Server 2008 R2 Standart.

Создаем приложение.


Выбираем – Создать приложение

Называем наше приложение – V83.COMConnector, ставим галочку – Серверное приложение.

На этом окне – выбираем учетную запись под которой будет запускаться наше приложение. Лучше указать “учетку” с правами Администратора. Я ставил – текущий пользователь т.к., работал под Администратором.



После того как мы создали Приложение, заходим в него, в раздел – Компоненты и создаем новый компонент.


На данном этапе нужно указать где лежит библиотека dll. Как правило библиотека лежит – “С:Program Files1cv8[номер платформы]bincomcntr.dll”


Теперь установи права на Приложение. Правой кнопкой на созданном Приложении – Свойства.

Выбираем вкладку – Безопасность и Снимаем галочку – Принудительная проверка доступа для приложений => (Ставим галочку) => Применить политику программных ограничений => Уровень ограничений => Неограниченный.

Далее переходим к самому Компоненту – Выбираем – Свойства, раздел Безопасность.

Проверяем что галка стоит на “Владельце”

На этом у меня заработало!
Оглавление
- Как понять, что у нас проблемы с COM
- Да, судя по тесту, у нас проблемы с COM
- Шаг №0
- Шаг №1
- Шаг №2
- Шаг №3
- Шаг №4
- Шаг №5
- Шаг №6
- Шаг №7
Обновлятор-1с в своей работе использует com-библиотеку от 1с для внешнего подключения к базам.
В большинстве случаев никаких проблем с этой библиотекой не наблюдается — обновлятор сам автоматически регистрирует и использует библиотеку нужной версии 1с, но изредка возникают случаи (в основном на серверных ОС), когда требуются «пляски с бубном».
Как понять, что у нас проблемы с COM
Для этого нажимаем кнопку «Проверить настройки» удерживая клавишу «Shift» на клавиатуре:

При нормальной работе COM отчёт будет примерно таким:

При проблемах же с COM возникнет вот такая или похожая ошибка:

Ещё может писать, что -то типа «Не удалось создать программное подключение к 1С«.
Да, судя по тесту, у нас проблемы с COM
Прежде всего, о какой именно библиотеке идёт речь? Эта библиотека comcntr.dll, которая находится в папке bin конкретной платформы 1с:

Эта библиотека устанавливается и автоматически регистрируется в системе при установке платформы.
Кроме того, обновлятор перед тем как подключаться к базе через внешнее соединение сам дополнительно регистрирует в системе библиотеку из нужной версии платформы при помощи команды:
regsvr32.exe "путь к папке bincomcntr.dll"
Итак, что мы можем предпринять?
Шаг №0
Обратите внимание на утилиту для отображения и регистрации библиотек RegDllView. При помощи неё вы как минимум сможете контролировать результат работы следующих шагов.
Шаг №1
Прежде всего убеждаемся, что у нас действительно проф-версия платформы, потому что для базовой версии платформы внешнее подключение к базам работать и не должно (это ограничение платформы).
Чтобы понять какая у нас платформа (базовая или проф) выполним вот этот пункт.
Если лицензия на платформу у нас всё же не проф, а базовая, то все остальные шаги не имеют смысла. Внешнее подключение к базам у нас работать не будет (из-за ограничений платформы). Ничего не остаётся, кроме как настроить базы вот так.
Шаг №2
Далее пробуем запустить обновлятор с правами администратора.
Если у вас включён UAC, то добиться этого можно, нажав на ярлыке обновлятора правой кнопкой, и выбрав вариант «Запуск от имени администратора».
Далее выбираем базу и нажимаем кнопку «Проверить настройки». Если ошибка пропала и больше не воспроизводится даже при обычном запуске обновлятора (без прав администратора) — поздравляю, проблема решена. Если нет — идём дальше.
Шаг №3
В 32-битной версии ОС пробуем выполнить команду
regsvr32 "путь к папке bincomcntr.dll"
В 64-битной версии ОС команда будет такой:
— для регистрации 64-битной платформы 1С:
regsvr32 "путь к папке bincomcntr.dll"
— для регистрации 32-битной платформы 1С:
C:WindowsSysWOW64regsvr32 "путь к папке bincomcntr.dll"
Эти команды запускаем от имени пользователя с правами администратора. А при включённом UAC, запускаем cmd через «Запуск от имени администратора», либо через такой же запуск написанного батника.
Если команда регистрации не помогла, то нужно предварительно удалить регистрацию библиотеки comcntr.dll, запустив ту же команду вызова regsvr32 с ключом /u
Если и это не помогло, попробуйте переустановить платформу 1С в режиме Исправить, а затем зарегистрируйте библиотеку, как написано выше.
Если этот шаг не помог — идём дальше.
Шаг №4
Похоже, что у обновлятора не получается зарегистрировать COM компоненту из-за настроек безопасности на вашем сервере.
В этом случае:
- Заходим в Панель управления — Администрирование — Службы компонентов.
- Переходим к ветке Компьютеры — Мой компьютер — Приложения COM+.
- В контекстном меню выбираем Создать — Приложение. Откроется Мастер установки приложений COM+.
- Нажимаем «Далее».
- Выбираем «Создать новое приложение».
- Вводим имя «V83COMConnector». Устанавливаем переключатель «Серверное приложение». Нажимаем «Далее».
- На следующем шаге устанавливаем «Текущий пользователь». Нажимаем «Далее».
- Нажимаем «Готово».
- В появившейся ветке V83COMConnector переходим к подветке Компоненты.
- В контекстном меню выбираем Создать — Компонент. Откроется Мастер установки компонентов COM+.
- Нажимаем «Далее».
- Выбираем «Установка новых компонентов».
- Выбираем файл <каталог 1С>bincomcntr.dll.
- Нажимаем «Далее» — «Готово».
- Переходим к ветке V83COMConnector.
- В контекстном меню выбираем «Свойства». В открывшемся окне переходим на вкладку «Безопасность».
- Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку «Применить политику программных ограничений». Устанавливаем Уровень ограничений — «Неограниченный».
- Нажимаем «ОК».
После этого обновлятор должен смочь самостоятельно регистрировать компоненты всех версий платформ, а не только той, которую мы прописали в компоненте.
Шаг №5
Бывает так, что помогает только повторная переустановка платформы (при этом происходит корректная регистрация компоненты).
Шаг №6
Если проблема начала возникать сразу после обновления платформы 1с, то вероятнее всего новой версии платформы 1с не хватает какого-нибудь сервиспака или обновления для вашей операционной системы. Поэтому если есть возможность — ставим их все, если нет — действуем выборочно согласно этой ссылке.
Шаг №7
Бывает так, что всё работает при обычном запуске обновлятора, но не работает при запуске с повышением привилегий до администратора, когда вы запускаете обновлятор через пункт меню «Запустить от имени администратора» или из программы (типа TotalCommander), которая сама запущена с повышенными привилегиями.
Наверняка есть и другие экзотические случаи о которых я пока не знаю — пожалуйста, пишите о них мне на почту helpme1c.box@gmail.com, чтобы я смог дополнить эту статью.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Цитата: Alex26 от 17 июл 2018, 09:32
Цитата: Sheriff от 16 июл 2018, 13:12(5) А вот ЭТО уже ИНТЕРЕСНЕЕ: { Ошибка при вызове конструктора (ComОбъект) }
напишите тестовый отчёт, который будет &наКлиенте создавать ComОбъект и подключаться туда.
Теперь другая странность
При попытке соедиения с COM-сервером произошла следующая ошибка:
{ОбщийМодуль.МодульРегламентныхЗаданий.Модуль(415)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Информационная база не обнаружена
Отсутствует файл базы данных ‘E:DistrБазы1Сблокировка документа/1Cv8.1CD’
Файл есть и доступ к нему есть.Скинь фрагмент кода как ты к базе подключаешься, и у тебя на сервере установлен компонент V83.COMConnector.1 ?
Тут код при открытии списка Реализации
&НаСервере
Процедура ПриОткрытииНаСервере()
///////////////////////////////////////////////////////////// поключение к базе
///-- если константа заполнена то создаем соеденение
//ПутьКБазе = Константы.ЦЗС_АдресБазыАвтовесовой.Получить();
//Если ЗначениеЗаполнено(Константы.ЦЗС_АдресБазыАвтовесовой.Получить()) Тогда
//Если глV21Object = Неопределено Тогда
//ПутьКБазе = Константы.ЦЗС_АдресБазыАвтовесовой.Получить();
СтруктураПодключения = МодульРегламентныхЗаданий.ПолучитьСтруктуруПодключения_Авто() ;
глV21Object = МодульРегламентныхЗаданий.ПодключитсяКИнформационнойБазе2(СтруктураПодключения);
Если глV21Object = Неопределено Тогда
Сообщить( "Ошибка подключения к базе данных!!!", СтатусСообщения.Важное ) ;
Возврат ;
КонецЕсли;
Сообщить( ""+ТекущаяДата() + " - Подключение к конфигурации "+глV21Object.Метаданные.Synonym+" выполнено успешно!" ) ;
//КонецЕсли;
//КонецЕсли;
КонецПроцедуры
Тут уже модуль
Функция ПолучитьСтруктуруПодключения_Авто(КаталогИБДляПодключения="") Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| НастройкаАвтовесовой.ПутьКБазе,
| НастройкаАвтовесовой.Платформа,
| НастройкаАвтовесовой.Серверная,
| НастройкаАвтовесовой.ИмяСервера,
| НастройкаАвтовесовой.ИмяБазы,
| НастройкаАвтовесовой.Пользователь,
| НастройкаАвтовесовой.Пароль
|ИЗ
| РегистрСведений.НастройкаАвтовесовой КАК НастройкаАвтовесовой
|ГДЕ
| НастройкаАвтовесовой.База = &База";
Запрос.УстановитьПараметр("База", Перечисления.УдаленныеБазы.АвтоВесовая);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
СтруктураПодключения = Новый Структура();
СтруктураПодключения.Вставить("ПутьКБазе" , ВыборкаДетальныеЗаписи.ПутьКБазе);
СтруктураПодключения.Вставить("Платформа" , Строка(ВыборкаДетальныеЗаписи.Платформа));
СтруктураПодключения.Вставить("СерверныйРежим", ВыборкаДетальныеЗаписи.Серверная);
СтруктураПодключения.Вставить("ИмяСервера" , ВыборкаДетальныеЗаписи.ИмяСервера);
СтруктураПодключения.Вставить("ИмяБазы" , ВыборкаДетальныеЗаписи.ИмяБазы);
СтруктураПодключения.Вставить("Пользователь" , ВыборкаДетальныеЗаписи.Пользователь);
СтруктураПодключения.Вставить("Пароль" , ВыборкаДетальныеЗаписи.Пароль);
Возврат СтруктураПодключения;
КонецЕсли;
Возврат Неопределено;
КонецФункции // ПолучитьСтруктуруПодключения()
//=== ФУНКЦИИ ОБРАБОТКИ ПОДКЛЮЧЕНИЯ К УДАЛЕННО БАЗЕ ДАННЫХ ======================
// их можно вставить в общий модуль, и обращаться из рахных объектов
Функция ПодключитсяКИнформационнойБазе2(СтруктураПараметров, СтрокаСообщенияОбОшибке = "") Экспорт
Перем СтрокаПодключения;
Если СтруктураПараметров = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
ПараметровДостаточно = МодульЦемзавод.ОпределитьДостаточностьПараметровДляПодключенияКИнформационнойБазе(СтруктураПараметров, СтрокаПодключения, СтрокаСообщенияОбОшибке);
Если Не ПараметровДостаточно Тогда
Возврат Неопределено;
КонецЕсли;
Если СтруктураПараметров.СерверныйРежим Тогда
ПараметрыПодключения = "Srvr=""" + СокрЛП(СтруктураПараметров.ИмяСервера) + """; Ref=""" + СокрЛП(СтруктураПараметров.ИмяБазы) + """; Usr=""" + СокрЛП(СтруктураПараметров.Пользователь) + """; Pwd=""" + СокрЛП(СтруктураПараметров.Пароль) + """;";
Иначе
ПараметрыПодключения = "File=""" + СокрЛП(СтруктураПараметров.ПутьКБазе) + """; Usr=""" + СокрЛП(СтруктураПараметров.Пользователь) + """; Pwd=""" + СокрЛП(СтруктураПараметров.Пароль) + """;";
КонецЕсли;
Попытка
//#Если Клиент Тогда
//Состояние("Идет процесс соединения ...");
Сообщить("Идет процесс соединения ...");
//#КонецЕсли
Попытка
Если СтруктураПараметров.Платформа = Перечисления.Платформы.Платформа82 Тогда
Обработчик = Новый COMОбъект("V82.COMConnector");
Иначе
Обработчик = Новый COMОбъект("V83.COMConnector");
КонецЕсли;
Исключение
Сообщить("Ошибка создания объекта "+Обработчик+" !") ;
Сообщить(ОписаниеОшибки()) ;
КонецПопытки;
ТекCOMОбъект = Обработчик.Connect(ПараметрыПодключения);
//#Если Клиент Тогда
//Состояние("Соединение установлено");
Сообщить("Соединение установлено");
//#КонецЕсли
Исключение
СтрокаСообщенияОбОшибке = "При попытке соедиения с COM-сервером произошла следующая ошибка:" + Символы.ПС
+ ОписаниеОшибки();
//#Если Клиент Тогда
Сообщить(СтрокаСообщенияОбОшибке, СтатусСообщения.Важное);
//Состояние("Соединение установить не удалось");
//Состояние();
Сообщить("Соединение установить не удалось");
//#КонецЕсли
Возврат Неопределено;
КонецПопытки;
Возврат ТекCOMОбъект;
КонецФункции
Компонента установлена и зарегистрирована.
Вообще на сервере стоит только одна платформа 8.3
Обе базы работают на этой платформе, просто одна серверная, а другая файловая.
Я установил SQL и платформу на обычную винду, чистую и сделал всё так же, как на рабочем сервере и у меня с этим кодом всё работает на моём компе, а на рабочем сервере НЕТ.
Каждый раз пишет разные ошибки.