Интернет Windows Android

Установка com компоненты 1с 8.3. Устранение ошибок подключения через COM-соединение

Как в Windows x32(x86)/x64 зарегистрировать компоненту com-соединения comcntr.dll 1С 8.

Ответ на данный вопрос актуален в контексте натройки обменов между базами 1С с помощью прямого подключения. Один из вариантов установки/регистрации компоненты com-соединения приведен на странице: На ней описан вариант установки компоненты при установке/переустановке компонентов платформы 1С: Предприятие из стандартного пакета установки. Но случается и так, что все-таки com-компонента по каким-то таинственным пирчинам все же не регистрируется при вышеуказанной операции.

На это есть альтернативный вариант с помощью командной строки операционной системы. Забегая немного вперед, и чтобы обезопасить себя от ошибок при регистрации com-компоненты comcntr.dll через командную строку, подобных приведенной на скрине

Чтобы избежать ошибки "Модуль comcntr.dll загружен, но не удалось выполнить вызов DllRegisterServer, код ошибки 0x80070005" запускайте командную строку с правами администратора

В системе с разрядностью x32(x86) для платформы 1С: Предприятие 8.2

C:\Program Files (x86)\1cv82\<номер_релиза>\bin> regsvr32 comcntr.dll

Где <номер_релиза> - номер текущего используемого релиза плафтормы 1С 8.

Для платформы 1С: Предприятие 8.3 командная строка для регистрации com-компоненты будет выглядеть примерно так:

C:\Program Files (x86)\1cv8\<номер_релиза>\bin> regsvr32 comcntr.dll

На скрине, приведенном ниже в качестве пирмере для случая регистрация comcntr.dll в ОС x86 значение <номер_релиза> - "8.3.9.1818"

Теперь рассмотрим вариант для системы с разрядностью x64 для платформы 1С: Предприятие 8.2, альтернативный вариант:

C:\Windows\SysWOW64>regsvr32 "C:\Program Files (x86)\1cv82\<номер_релиза>\bin\comcntr.dll"

Для Windows x64 регистирация com-соединения 1С 8.3 может выглдяеть так:

C:\Windows\SysWOW64>regsvr32 "C:\Program Files (x86)\1cv8\<номер_релиза>\bin\comcntr.dll"

Если все-таки приведенный материал не помог, предлагается обратиться к альтернативным публикациям: Регистрация comcntr.dll-компоненты в 64-битной версии Microsoft Windows и Регистрация компоненты comcntr.dll для COM соединения с 1С 8 в 32-битной операционной системе

© www.. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

Обновлятор-1с. Решение проблем с com-библиотекой для внешнего подключения к базе.

2018-10-05T16:32:35+00:00

Обновлятор-1с в своей работе использует com-библиотеку от 1с для внешнего подключения к базам.

В большинстве случаев никаких проблем с этой библиотекой не наблюдается - обновлятор сам автоматически регистрирует и использует библиотеку нужной версии 1с, но изредка возникают случаи (в основном на серверных ОС), когда требуются "пляски с бубном".

Как понять, что у нас проблемы с COM

Для этого нажимаем кнопку "Проверить настройки" удерживая клавишу "Shift" на клавиатуре:

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

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

Ещё может писать, что -то типа "Не удалось создать программное подключение к 1С ".

Да, судя по тесту, у нас проблемы с COM

Прежде всего, о какой именно библиотеке идёт речь? Эта библиотека comcntr.dll , которая находится в папке bin конкретной платформы 1с:

Эта библиотека устанавливается и автоматически регистрируется в системе при установке платформы.

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

regsvr32. exe / n / i: user

Итак, что мы можем предпринять?

Шаг №0

Прежде всего убеждаемся, что у нас действительно проф-версия платформы, потому что для базовой версии платформы внешнее подключение к базам работать и не должно (это ограничение платформы).

Чтобы понять какая у нас платформа (базовая или проф) выполним вот этот .

Если лицензия на платформу у нас всё же не проф, а базовая, то все остальные шаги не имеют смысла. Внешнее подключение к базам у нас работать не будет (из-за ограничений платформы). Ничего не остаётся, кроме как настроить базы .

Шаг №1

Если у вас включён UAC, то добиться этого можно, нажав на ярлыке обновлятора правой кнопкой, и выбрав вариант "Запуск от имени администратора".

Далее выбираем базу и нажимаем кнопку "Проверить настройки". Если ошибка пропала и больше не воспроизводится даже при обычном запуске обновлятора (без прав администратора) - поздравляю, проблема решена. Если нет - идём дальше.

Шаг №2

В 32-битной версии ОС пробуем выполнить команду

regsvr32 / n / i: user "путь к папке bin\comcntr.dll"

В 64-битной версии ОС команда будет примерно такой:

C: \Windows\SysWOW64\regsvr32 / n / i: user "путь к папке bin\comcntr.dll"

Эти команды запускаем от имени пользователя с правами администратора . А при включённом UAC, запускаем cmd через "Запуск от имени администратора", либо через такой же запуск написанного батника.

Если команда регистрации не помогла, то нужно предварительно удалить регистрацию библиотеки comcntr.dll, запустив ту же команду вызова regsvr32 с ключом /u

Если и это не помогло, попробуйте переустановить платформу 1С в режиме Исправить, а затем зарегистрируйте библиотеку, как написано выше.

Шаг №3

Похоже, что у обновлятора не получается зарегистрировать COM компоненту из-за настроек безопасности на вашем сервере.
В этом случае:

  1. Заходим в Панель управления - Администрирование - Службы компонентов.
  2. Переходим к ветке Компьютеры - Мой компьютер - Приложения COM+.
  3. В контекстном меню выбираем Создать - Приложение. Откроется Мастер установки приложений COM+.
  4. Нажимаем "Далее".
  5. Выбираем "Создать новое приложение".
  6. Вводим имя "V83COMConnector". Устанавливаем переключатель "Серверное приложение". Нажимаем "Далее".
  7. На следующем шаге устанавливаем "Текущий пользователь". Нажимаем "Далее".
  8. Нажимаем "Готово".
  9. В появившейся ветке V83COMConnector переходим к подветке Компоненты.
  10. В контекстном меню выбираем Создать - Компонент. Откроется Мастер установки компонентов COM+.
  11. Нажимаем "Далее".
  12. Выбираем "Установка новых компонентов".
  13. Выбираем файл <каталог 1С>\bin\comcntr.dll.
  14. Нажимаем "Далее" - "Готово".
  15. Переходим к ветке V83COMConnector.
  16. В контекстном меню выбираем "Свойства". В открывшемся окне переходим на вкладку «Безопасность».
  17. Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку "Применить политику программных ограничений". Устанавливаем Уровень ограничений - "Неограниченный".
  18. Нажимаем "ОК".

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

Шаг №4

Бывает так, что помогает только повторная переустановка платформы (при этом происходит корректная регистрация компоненты).

Шаг №5

Если проблема начала возникать сразу после обновления платформы 1с, то вероятнее всего новой версии платформы 1с не хватает какого-нибудь сервиспака или обновления для вашей операционной системы. Поэтому если есть возможность - ставим их все, если нет - действуем выборочно согласно этой .


Часто бывает нужно получить данные из разных баз, которые, что вовсе не редкость работают на разных платформах. Это может быть и регулярный обмен данными между базами. Также могут быть какие-то разовые обработки по переносу данных. Это могут быть и отчеты, собирающие данные из разных баз и формирующие требуемый итог на выходе.
В каждом из этих случаев необходимо из одной базы подключиться к другой через COM -соединение. Вот на этапе подключения часто подстерегают разные неприятности. В этой статье будут рассмотрены некоторые ошибки и способы их устранения. Тут будут приведены конкретные ошибки при соединении между определенными платформами, но способы устранения могут быть такими же подходящими и при соединении между платформами в иных вариациях.

Ситуация первая. При попытке подключения через COM -соединение к базе-источнику выдается сообщение об ошибке. Что-то вроде: "Ошибка при вызове конструктора (COMObject): -2147221164(0x80040154): Класс не зарегистрирован ".
Для устранения подобной ошибки перво-наперво нужно зарегистрировать библиотеку клиента - приемника. Причем для разных версий клиентов одной версии платформы нужно регистрировать свою библиотеку. То есть для разных сборок платформы версии 8.3 нужно заново регистрировать версию библиотеки нужного релиза платформы. Для платформы версии 8.2 такой же подход.
Библиотека регистрируется следующим образом. Запускается Командная строка из-под Администратора, в ней пишется команда

Regsvr32 "[Путь к библиотеке]\bin\comcntr.dll ,

Например, regsvr32 "c:\Program Files (x86)\1cv8\8.3.5.1119\bin\comcntr.dll" и команда выполняется. Все открытые приложения 1С при этом лучше закрыть. При успешной регистрации будет выдано сообщение об успехе. Если выдается сообщение об ошибке, то нужно проверить путь, по которому находится библиотека, и все права.
Также эту команду можно поместить в cmd- файл и запустить его с правами Администратора.

Если такая ошибка выпадает при попытке подключить к БД на платформе 7.7, то следует проверить реестр на предмет наличия регистрации 7.7-коннектора. В разделе HKEY_CLASSES_ROOT должны присутствовать ветки, изображенные на картинке:

Для правильной регистрации 7.7-коннектора следует один раз запустить 1С Предприятие 7.7 от имени Администратора.

Ситуация вторая. При попытке установить COM -соединение выпадает ошибка с сообщением о несоответствии версии клиента БД-источника. В этом случае проблема решается регистрацией правильной версии библиотеки comcntr.dllтак, как это было описано выше.

Ситуация третья. При попытке подключения через COM -соединение к базе-источнику на платформе 1С 7.7 ошибок не выдается, но обработка "намертво" "зависает". При снятии задачи соединение через консоль управления серверами 8.х остается и не сбрасывается никакими ухищрениями, кроме перезапуска службы сервера 1С. Такое явление происходит, когда осуществляется попытка соединения из БД на платформе 8.х к БД на платформе 7.7 из сеанса сервера. Четко определенных причин такого поведения программы здесь не приводится. Рекомендация одна - использовать вызов подключения из сеанса клиента (& НаКлиенте).

Ситуация четвертая. При попытке подключения через COM -соединение к базе-источнику на платформе 1С 7.7 ошибок не выдается, но и соединения не происходит. В этом случае, а также в некоторых других помогает ручная регистрация COM- компонентов.

1. Заходим в Панель управления → Администрирование → Службы компонентов.
2. Переходим к ветке Компьютеры → Мой компьютер → Приложения COM+.


3. В контекстном меню выбираем Создать → Приложение. Откроется Мастер установки приложений COM+. Выбираем "Создать новое приложение".

4. Имя нового приложения лучше написать чтобы было понятно о чем речь: V8_ComConnector, способ активации - "серверное приложение".

5. На следующем шаге устанавливаем «Текущий пользователь». Нажимаем «Далее».В ветке созданного приложения переходим на ветку "Роли" открываем роль "CreatorOwner" и далее в разделе "Пользователи" создаем пользователя - учетную запись под которой работает сервер 1С.
6. В ветке созданного приложения переходим на ветку "Компоненты" и создаем компонент: Создать - Компонент Выбираем "Установка новых компонентов", и в диалоге выбираем нужную DLL-ку (в данном примере: [Путь к библиотеке]\bin\comcntr.dll).
7. В контекстном меню выбираем «Свойства». В открывшемся окне переходим на вкладку «Безопасность».
8. Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку «Применить политику программных ограничений». Устанавливаем Уровень ограничений - «Неограниченный»


9. Нажимаем «ОК».

Поставляемый с платформой COM-компонент позволяет взаимодействовать между собой несколькио информационных баз, а также получать доступ к базам 1С:Предприятия из сторонних приложений. Подробнее можете прочитать на официальном сайте .

Пример работы через COM-соединение мы рассматривали в одной из предыдущих статей . Сегодня рассмотрим действия в системе, необходимые для использования COM-компоненты.

Регистрация в системе

После установки платформы на комьютер COM-компонент должен быть установле автоматически установщиком. Файл внешней компоненты располагается в каталоге:

C:\Program Files\1cv82\[версия платформы]\bin\comcntr.dll

Таким образом, при установке новке новой версии платформы компонент будет установлен новый и находится в соответствующей директории. Для использования COM-компоненты она должна быть зарегистрирована в операционной системе.

Бывают ситуации, когда программа установки не может автоматически зарегистрировать DLL в операционной системе, поэтому это приходится делать вручную. Также при установке новой версии платформы поверх уже установленной может понадобиться зарегистрировать comcntrl.dll из каталога установленной версии.

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

regsvr32 comcntrl.dll

запущенной в вышеуказанном каталоге.

В свое время столкнулся с проблемой создания COM-соединения на стороне сервера. Проблема трудно диагностируется, т.к. код, прекрасно работающий под клиентом отказывается работать на сервере, например, если код исполняет регламентное задание.

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

Http://www.steeltrace.ru/details/articleid/22/%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F-1%D1%81-com-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%B0-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-64-%D0%B1%D0%B8%D1%82%D0%BD%D1%8B%D0%BC%D0%B8-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8.aspx

Upd . Дополнение: если на Windows-сервере 64-бит стоит Сервер 1С Предприятие 64-бит (в дистрибутиве windows64.rar),
то такой проблемы не будет. Уставщик позволяет поставить COM-коннектор без установки самого севера. Это полезно, когда приложение реализовано на платформе 8.3, а COM-соединение нужно к базам на 8.2.

За дополнение спасибо brix8x .

Приведен алгоритм настройки системы, со скрином к каждому действию.

2. Регистрация компоненты comcntr.dll

5. Старт сервера 1С. (обязательно:)

Вызываем консоль


Регистрируем компоненту. Компонента отсутствует, если установлен только сервер 1С. Почему-то 1С публикует ее только в составе клиента.


Upd . Если компонента не регистрируется, то возможно придется сначала удалить старую компоненту, только затем встанет новая.
Делаем regsvr32 /u "c:\Program Files\1cv8\8.2.18.82\bin\comcntr.dll"
Затем тоже самое, но без "/u" regsvr32 "c:\Program Files\1cv8\8.2.18.82\bin\comcntr.dll"

За дополнение спасибо shur52 .

Запускаем службу компонентов. Описывается для Windows Server 2008 R2 Standart.








В ветке Components добавляем новую компоненту comcntr.dll






ВАЖНО!!! После установки нужно немного изменить свойства. Эта тонкость нигде не описана, без нее у меня не работало!

Перезапуск физического сервера