Сначала зарегистрируем библиотеку comcntr.dll. Для этого запускаем cmd от имени администратора и выполним поочередно следующие команды:
cd C:Program Files (x86)1cv88.3.13.1690bin
regsvr32 comcntr.dll
Вместо «8.3.13.1690» — нужно подставить требуемую версию платформы
Или можно обойтись одной строкой команды:
regsvr32 "C:Program Files (x86)1cv88.3.13.1690bincomcntr.dll"
Далее опишу полный процесс создания COM+ соединения
1. Запускаем оснастку «Службы компонентов» из папки Администрирование.
Пуск — Панель управления — Система и безопасность — Администрирование — Службы компонентов
или
win+R -> control userpasswords -> Службы компонентов
2. Раскрываем ветку «Службы компонентов» — компьютер — Приложения COM+
Создать — приложение
3. Откроется окно мастера установки приложений COM+. Ждем «Далее»
4. Выбираем «Создать новое приложение»
5. Вбиваем имя приложения. В моем примере — «v83COMConnector». Отмечаем чекбокс «Серверное приложение»
6. В следующем окне указывается учетная запись, от имени которой будет запускаться компонент. В моем примере я выбираю чекбокс «Текущий (вошедший в систему) пользователь
7. В следующем окне просто жмем «Далее»
8. На следующем шаге можно добавить пользователей, либо группу пользователей, которым необходимо предоставить права на запуск COM+ приложения (локальные/доменные — не важно)
9. Закрываем мастер кнопкой «Готово»
10. Теперь необходимо создать компонент. Возвращаемся к оснастке «Службы компонентов», раскрываем созданное COM+ приложение, встаем на ветку «Компоненты»
Создать — Компонент
11. Откроется окно «Мастера установки компонентов COM+». Жмем «Далее»
12. В следующем окне выбираем «Установка новых компонентов»
13. Теперь с помощью открывшегося окна проводника выберите ранее зарегистрированную библиотеку comcntr.dll, которая лежит в папке установленной 1С, в каталоге bin. В моем случае
C:Program Files (x86)1cv88.3.13.1690bincomcntr.dll
«Enter» или кнопка «Открыть»
14. В следующем окне просто жмите «Далее»
15. Закрываем окно мастера кнопкой «Готово»
16. Раскройте ветку «Компоненты». Здесь вы должны увидеть созданный на предыдущем шаге компонент. Выделите его, нажмите ПКМ — Свойства
17. На вкладке «Безопасность» нужно отметить галочкой CreateOwner и нажать «ОК»
Компонента COM+ создана. COM+ приложение настроено!
Обновление версии компонента
Иногда необходимо зарегистрировать иную версию библиотеки comcntr.dll.
Для того, чтобы посмотреть текущую зарегистрированную версию, необходимо войти в свойства компонена V83.COMConnector (см п.16) данного руководства
На вкладке «Общие» будет прописан путь. В моем случае это версия 8.3.13.1690
Зарегистрировать другую версию библиотеки можно при помощи уже рассмотренной команды regsvr32
regsvr32 "C:Program Files (x86)1cv88.3.14.1565bincomcntr.dll"
Если в п.8 вы забыли указать пользователей или группы, кому необходимы права для запуска COM+ приложения, то добавить нужных пользователей можно так:
- Панель управления — Система и безопасность — Администрирование — Службы компонентов
- Раскрываем ветку: Приложения COM+ — v83COMConnector — Роли — CreateOwner
- ПКМ на разделе «Пользователи», «Создать — Пользователь»
- В открывшемся окне выбираем локального или доменного пользователя, либо группу
Windows 10 Pro released in July 2015 Windows Vista Enterprise Windows Vista Business Windows Vista Home Basic Windows Vista Home Premium Windows Vista Ultimate Microsoft Windows XP Home Edition Microsoft Windows XP Professional Microsoft Windows XP Tablet PC Edition Windows 7 Enterprise Windows 7 Home Basic Windows 7 Home Premium Windows 7 Professional Windows 7 Ultimate Windows 8 Windows 8 Enterprise Windows 8 Pro Windows 8.1 Windows 8.1 Enterprise Windows 8.1 Pro Еще…Меньше
Если вы получили сообщение об ошибке, описания которого нет в этой статье, можно найти его подробное объяснение, рекомендуемые действия и список дополнительных ресурсов поддержки на странице ошибок и событий TechNet.
Аннотация
Regsvr32 — это служебная программа командной строки для регистрации и отмены регистрации элементов управления OLE, например ActiveX и библиотеки DLL в реестре Windows. Средство Regsvr32.exe установлено в папке %systemroot%System32 в ОС Windows XP и более поздних версиях Windows.
Примечание. В 64-разрядных версиях Windows есть две версии файла Regsv32.exe:
-
64-разрядная версия — %systemroot%System32regsvr32.exe;
-
32-разрядная версия — %systemroot%SysWoW64regsvr32.exe.
Синтаксис команды Regsvr32
Программа RegSvr32.exe имеет следующие параметры командной строки.
Regsvr32 [/u] [/n] [/i[:строка_команд]] DLL-файл
/u — отменяет регистрацию сервера
/i — вызывает DllInstall, передавая ей в параметре необязательную строку_команд; при использовании с ключом /u вызывает DllUnInstall.
/n — не вызывает DllRegisterServer; это может использоваться с ключом /i
/s – «тихий» режим; окна сообщений не отображаются
Типичные решения ошибок Regsvr32
При появлении ошибки Regsvr32 попробуйте устранить ее одним из следующих способов.
-
Способ 1. Повторный запуск команды Regsvr32 в командной строке с повышенными привилегиямиЧтобы открыть командную строку с повышенными привилегиями, выполните указанные ниже действия.
Windows 8.1 и Windows 8Проведите пальцем от правого края экрана к центру и коснитесь кнопки Поиск. Либо, если вы используете мышь, переместите указатель в правый нижний угол экрана и щелкните кнопку Поиск. Введите запрос Командная строка в поле Поиск, щелкните правой кнопкой мыши элемент Командная строка, затем выберите команду Запуск от имени администратора. Если система запросит пароль администратора или подтверждение, введите пароль или нажмите кнопку Разрешить.
Windows 7 и Windows VistaНажмите кнопку Пуск, введите запрос Командная строка или cmd в поле Поиск, щелкните правой кнопкой мыши элемент Командная строка, а затем выберите команду Запуск от имени администратора. Если система запросит пароль администратора или подтверждение, введите пароль или нажмите кнопку Разрешить.
Windows XPВойдите в систему в качестве администратора или с другой учетной записью с правами администратора и откройте окно «Командная строка».
-
Способ 2. Использование 32-разрядной версии Regsvr32 для регистрации 32-разрядной библиотеки DLL в 64-разрядной версии ОС WindowsЕсли при регистрации 32-разрядной библиотеки DLL в 64-разрядной версии ОС Windows появляется ошибка, выполните следующие действия.
-
Откройте командную строку с повышенными привилегиями.
-
Если 32-разрядная библиотека DLL находится в папке %systemroot%System32, переместите ее в папку %systemroot%SysWoW64.
-
Выполните следующую команду:
%systemroot%SysWoW64regsvr32 <full path of the DLL>
-
Сообщения об ошибках Regsvr32
В приведенной ниже таблице содержатся сообщения об ошибках RegSvr32 и возможные причины их возникновения.
Сообщение об ошибке |
Причина |
---|---|
Недопустимый параметр командной строки «»%1″». Проверьте использование команды и повторите попытку. |
Введено недопустимое сочетание параметров командной строки для вызова средства regsvr32.exe. |
Эта команда допустима только в том случае, если открыт проект элемента OLE Activex в Microsoft Visual Studio. |
Средство Regsvr32.exe вызвано программой Visual Studio, но в командной строке не указано ни одного модуля. |
Чтобы зарегистрировать модуль, нужно задать имя двоичного файла. |
Средство Regsvr32.exe вызвано без указания модулей в командной строке. |
Не удалось выполнить команду OleInitialize. Недостаточно свободной оперативной памяти на этом компьютере. Закройте все открытые программы и повторите попытку. |
Средство Regsvr32 должно инициализировать библиотеку COM, прежде чем вызывать ее функции, и отменить инициализацию при завершении работы. Это сообщение об ошибке выводится, если попытка инициализации или ее отмены не были успешными. |
Не удалось загрузить модуль «%1».nn Проверьте, что двоичный файл хранится на указанном пути или запустите отладку, чтобы диагностировать проблемы с этим двоичным файлом или зависимыми DLL-файлами.nn%2. |
При загрузке указанного в командной строке модуля произошла ошибка. Текст ошибки выводится как часть сообщения. |
Модуль «%1″ загружен, но точка входа %2 не найдена.nnПроверьте, что » %1″ является правильным файлом DLL или OCX и повторите попытку. |
Средству Regsvr32.exe не удалось найти необходимую точку входа модуля, указанного в командной строке. Это может произойти при неправильном экспорте точек входа из модуля или если модуль не является DLL- либо OCX-файлом. |
Модуль » %1″ загружен, но не удалось выполнить вызов %2, код ошибки: %3.nnДля получения дополнительных сведений об этой ошибке выполните поиск в Интернете, указав код ошибки как аргумент поиска. |
При вызове средством regsvr32.exe точки входа модуля, указанного в командной строке, произошла ошибка. Код ошибки выводится как часть сообщения. |
Возможно, модуль «%1» несовместим с версией Windows, работающей на этом компьютере. Проверьте, совместим ли этот модуль с x86 (32-разрядной) или x64 (64-разрядной) версией regsvr32.exe. |
Эта ошибка может произойти, если средство regsvr32.exe запущено на 32-разрядном (x86) компьютере, а в командной строке указан 64-разрядный модуль. |
В приведенной ниже таблице содержатся сообщения об ошибках RegSvr32 и возможные причины их возникновения.
Сообщение об ошибке |
Причина |
|
---|---|---|
Нераспознанный флаг: /неверный_флаг |
Введено недопустимое сочетание флагов и ключей. |
|
Не указано имя DLL. |
Не введено имя DLL-файла. |
|
Имя_DLL было загружено, но найти точку входа для DllRegisterServer или DllUnregisterServer не удалось. |
Файл с указанным именем DLL не является DLL- или OCX-файлом. Например, это сообщение об ошибке будет отображено, если введена команда regsvr32 wjview.exe. |
|
Имя_DLL не является исполняемым файлом, и ни одного модуля поддержки для этого типа файлов не зарегистрировано. |
Файл с указанным именем DLL не является исполняемым файлом EXE, DLL или OCX. Например, это сообщение об ошибке будет отображено, если введена команда regsvr32 autoexec.bat. |
|
Имя_DLL не поддерживает автоматическую регистрацию, либо в памяти находится поврежденная версия. |
Например, при вводе команды «regsvr32 icwdial.dll» будет возвращено это сообщение об ошибке, так как файл Icwdial.dll не регистрируется автоматически. При подозрении на наличие в памяти поврежденной версии файла с указанным именем DLL перезагрузите компьютер или повторно извлеките исходную версию файла. |
|
Ошибка функции OleInitialize (или OleUninitialize) |
Средство Regsvr32 должно инициализировать библиотеку COM, прежде чем вызывать ее функции, и отменить инициализацию при завершении работы. Эти сообщения об ошибке возникают, если попытка инициализации библиотеки COM или ее отмены не были успешными. Например, файл Ole32.dll поврежден или является неправильной версией. |
|
Сбой при загрузке библиотеки («Имя_DLL»). GetlastError возвращает ошибку 0x00000485 |
Winerror.h, 0x00000485 = 1157 (ERROR_DLL_NOT_FOUND). Это означает, что «Не найден один из файлов библиотек, необходимых для выполнения данного приложения». Например, при вводе команды regsvr32 missing.dll будет возвращено это сообщение об ошибке, если файл Missing.dll не найден. |
|
Сбой при загрузке библиотеки («Имя_DLL»). GetLastError возвращает ошибку 0x00000002 |
Winerror.h, 0x00000002 = 2 (ERROR_FILE_NOT_FOUND). Это означает «Не удается найти указанный файл». Т. е. не найден соответствующий DLL-файл. Например, при вводе команды regsvr32 icwdial.dll будет возвращено это сообщение об ошибке, если файл Tapi32.dll не найден. |
|
Сбой при загрузке библиотеки (dskmaint.dll). GetLastError возвращает ошибку 0x000001f |
Winerror.h, 0x000001f = 31 (ERROR_GEN_FAILURE). Это означает «Присоединенное к системе устройство не работает». Это происходит при попытке регистрации файла Win16.dll. Например, это сообщение об ошибке будет отображено, если введена команда regsvr32 dskmaint.dll. |
|
Сбой при загрузке DllRegisterServer (или DllUnregisterServer) в Имя_DLL. Возвращенный код: строка |
В файле Winerror.h найдите строку, указанную в сообщении. |
Нужна дополнительная помощь?
Чтобы установить внешнее соединение с информационной базой 1С:Предприятие 8.3 применяют COMConnector. Это позволяет выполнять любое количество подключений. Пользователям, обладающим 64-разрядной платформы 1С:Предприятие 8.3, для осуществления корректной работы режима ComConnector необходимо создать дополнительное COM-соединение. Чтобы это сделать потребуется выполнить определенную последовательность действий.
Содержание
- Как создать оболочку COM+ для 1С (Платформа 1С x64)
- Ошибка «Нам не удалось найти 1С на вашем ПК»
- Как зарегистрировать файл comcntr.dll из каталога 1С в реестре ОС Windows
Как создать оболочку COM+ для 1С (Платформа 1С x64)
1) Регистрация компонента comcntr.dll.
2) Желательно выполнить остановку сервера.
3) Далее необходимо перейти в раздел Панель управления — Все элементы панели управления — Администрирование.
4) После чего открыть Службы компонентов, как показано на примере ниже.
4) Теперь необходимо кликнуть правой кнопкой мыши по Приложения COM+ и из выпадающего списка выбрать пункт Создать — Приложение.
5) В результате запустится Мастер установки приложения COM+, установку необходимо выполнить согласно следующей инструкции:
- во втором окне из двух предложенных вариантов выбрать Создать новое положение;
- имя нового положения нужно указать V82_COMConnector;
- Способ активации: Серверное приложение;
- на шаге выбора учетной записи для запуска приложения выбираем вариант Указанный пользователь, после чего вводим данные для авторизации;
- добавляем роли приложения.
6) Теперь нам необходимо открыть V82_COMConnector, далее правой кнопкой мыши кликаем по Компоненты и из выпадающего списка выбираем Создать — Компонент.
7) Запускаем Мастер установки компонентов COM+, на шаге Импорт или установка компонента выбираем вариант Установка новых компонентов, после чего указываем путь к файлу к comcntr.dll.
В окне Службы компонентов правой кнопкой мыши кликаем по V82_COMConnector и выбираем Свойства. В открывшемся окне Свойств нам нужно снять флажок в пункте Принудительная проверка доступа для приложения, после чего сохраняем настройки, нажав кнопку ОК.
Готово, остается только перезагрузить сервер 1С. Важно, при смене логина или пароля учетной записи, необходимо перенастроить созданное ранее подключение. Далее мы расскажем о наиболее часто встречающейся проблеме и способах её решения при настройке подключения к 1С через ComConnector.
Некоторые пользователи могут столкнуться с сообщением об ошибке «Нам не удалось найти 1С на вашем ПК». Существует несколько возможных причин появления данного сообщения.
Возможная причина 1: Список баз пустой или на компьютере нет платформы 1С
Решение проблемы: проверить, что список баз 1C не пустой а программа 1С запускается на компьютере, где настраивается подключение.
Возможная причина 2: При установке программы 1С по компьютер не произошла автоматическая установка файла comcntr.dll
Решение проблемы: необходимо выполнить регистрацию файл comcntr.dll из каталога 1С в реестре операционной системы Windows.
Важно обратить внимание на следующие моменты:
- при наличии установленных двух и более версий программы 1С, необходимо выполнить отмету регистрации неактуальных версий, только после этого можно выполнять регистрацию файл comcntr.dll;
- при наличии установленной 1С в обеих папках Program Files, нужно выполнить отмену регистрации dll-файлов для обеих папок, после чего нужно зарегистрируйте файл актуальной версии.
Как зарегистрировать файл comcntr.dll из каталога 1С в реестре ОС Windows
1.1 Находим ярлык программы 1С на рабочем столе компьютера и кликаем правой кнопкой мыши, далее из выпадающего списка выбираем пункт Свойства.
1.2 В открывшемся окне Свойства: 1С Предприятие переходим во вкладку Ярлык, где нам необходимо скопировать текст из строки Объект до третьего символа «». Для версии 1С 8.3 это «1cv8», для версии 8.2 — «1cv82».
2.1 Далее вставляем адрес каталога 1С: Предприятие в проводник Windows, после чего жмем Enter на клавиатуре.
2.2 После нужно выбрать актуальную версию платформы для регистрации объекта или с предыдущей версией платформы для отмены регистрации объекта.
2.3 Следующим шагом открываем папку bin и находим в ней файл comcntr.dll.
2.4 После того, как требуемый файл найден, кликаем по нему правой кнопкой мыши и из выпадающего списка выбираем пункт Свойства.
2.5 Переходим во вкладку Безопасность, где нам нужно целиком скопировать значение из строки Имя объекта.
3.1 Запустите командную строку:
- Чтобы запустить командную строку в ОС Windows 7 нужно открыть Пуск и ввести cmd в строку поиска. После чего нажать правой кнопкой мыши на cmd.exe и выбрать Запуск от имени администратора.
- Для запуска командной строки в ОС Windows 10 нажимаем сочетание клавиш Win+X на клавиатуре, далее выбираем Командная строка (администратор).
3.2 В командной следует указать следующую команду:
«regsvr32 /u» — для отмены регистрации;
«regsvr32» — для регистрации.
3.3 Нажимаем клавишу Пробел а клавиатуре и вставляем скопированный адрес файла comcntr.dll в командную строку. Если в адресе есть пробелы, напишите его
в кавычках
.
Пример:
regsvr32 /u «C:/Program Files (x86)/1cv82/8.2.16.368/bin/comcntr.dll»
3.4 Далее жмем Enter. Повторяем команду отмены регистрации regsvr32 /u для всех неактуальных версий платформы 1С. Для актуальной версии регистрацию проведите один раз.
Готово, в результате мы выполнили успешную регистрацию файла comcntr.dll в системе.
Возможная причина 3: при использовании 64-разрядной версию платформы 1С: Предприятие не было создано дополнительное COM-соединение.
Решение проблемы: решение этой проблемы заключается в создании дополнительного COM-соединение, в результате режим ComConnector будет работать в корректном режиме.
Если предложенные решения не помогли, обратитесь к специалистам компании МэйнСервис.
Для доступа к информационной базе из внешней программы используется COM объект COMConnector. В зависимости от версии платформы используется V82.COMConnector или V83.COMConnector. При установке платформы 1С, в операционной системе автоматически регистрируется класс COMConnector. Если по каким либо причинам регистрация не прошла, то его можно зарегистрировать вручную.
Пример по работе с базой 1С через COM соединение можно посмотреть в другой статье.
Если COMConnector не зарегистрирован в Windows, то при программном создании объекта будет появляться ошибка:
Ошибка при вызове конструктора (COMObject): -2147221164(0x80040154): Класс не зарегистрирован.
Регистрацию можно выполнить с помощью командной строки. Для того чтобы открыть командную строку в Windows 7 или Windows 10 нужно в строке поиска в меню «ПУСК» набрать cmd. Для Windows 8 в «Стартовом окне» в поиске набрать cmd. Запустить cmd.exe с правами администратора.
Синтаксис командной строки Windows
cd c:program files — в каталог program files
cd — в корень диска
с: — на диск c
cd.. — на один уровень выше
Windows (x64)
Для того чтобы зарегистрировать ComConnector в 64 разрядной операционной системе Windows выполняется
команда: C:WindowsSysWOW64regsvr32 «C:Program Files (x86)1cv88.3.9.2233bincomcntr.dll»
c:WindowsSystem32>
c:WindowsSystem32>cd c:WindowsSysWOW64
c:WindowsSysWOW64>
c:WindowsSysWOW64>regsvr32 «c:program files (x86)1cv88.3.9.2233bincomcntr.dll»
…
Деинсталяция
c:WindowsSysWOW64>regsvr32 «c:program files (x86)1cv88.3.9.2233bincomcntr.dll» /u
Windows (x32)
Для 32 разрядной операционной системы Windows выполняется
команда: C:WindowsSystem32regsvr32 «C:Program Files (x86)1cv88.3.9.2233bincomcntr.dll»
c:WindowsSystem32>
c:WindowsSystem32>regsvr32 «c:program files (x86)1cv88.3.9.2233bincomcntr.dll»
…
Деинсталяция
c:WindowsSystem32>regsvr32 «c:program files (x86)1cv88.3.9.2233bincomcntr.dll» /u
После успешного выполнения появится оповещение:
83.COMConnector класс не зарегистрирован
Случается, что при попытке подключения к информационной базе через com-соединение возникает ошибка при вызове конструктора (COMОбъект): «Класс не зарегистрирован» или «Недопустимая строка с указанием класса».
Первым делом необходимо зарегистрировать DLL в системе
Regsvr32 «C:Program Files1cv88.3.7.1776bincomcntr.dll»
В случае, если не помогает — создаём коннектор руками:
•Заходим в Панель управления — Администрирование — Службы компонентов.
•Переходим к ветке Компьютеры — Мой компьютер — Приложения COM+.
•В контекстном меню выбираем Создать — Приложение. Откроется Мастер установки приложений COM+.
•Нажимаем «Далее».
•Выбираем «Создать новое приложение».
•Вводим имя «V83COMConnector». Устанавливаем переключатель «Серверное приложение». Нажимаем «Далее».
•На следующем шаге устанавливаем «Текущий пользователь». Нажимаем «Далее».
•Нажимаем «Готово».
•В появившейся ветке V83COMConnector переходим к подветке Компоненты.
•В контекстном меню выбираем Создать — Компонент. Откроется Мастер установки компонентов COM+.
•Нажимаем «Далее».
•Выбираем «Установка новых компонентов».
•Выбираем файл <каталог 1С>bincomcntr.dll.
•Нажимаем «Далее» — «Готово».
•Переходим к ветке V83COMConnector.
•В контекстном меню выбираем «Свойства». В открывшемся окне переходим на вкладку «Безопасность».
•Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку «Применить политику программных ограничений». Устанавливаем Уровень ограничений — «Неограниченный».
•Нажимаем «ОК».
Класс V83.COMConnector зарегистрирован и может использоваться для подключения к информационным базам.
Бывало так, что вместо Текущий пользователь нужно прописать USR1CV8
Как зарегистрировать COM объект в Windows Vista? Есть ли какие-нибудь отличия от этого процесса в других версиях Windows, например, от Windows XP?
задан 12 ноя 2010 в 10:38
Nicolas Chabanovsky♦Nicolas Chabanovsky
50.6k80 золотых знаков257 серебряных знаков493 бронзовых знака
На самом деле, в 64 битной Windows имеется две утилиты regsvr32
. Одна находится в с:windowssystem32, и предназначена для регистрации 64-битных библиотек. Вторая находится в с:windowsSysWOW64 и предназначена для регистрации 32-битных библиотек. Главный косяк в том, что по умолчанию вызывается 64-битная утилита, но с помощью нее зарегистрировать 32-битную библиотеку скорее всего не удастся. Пруф
То есть, чтобы зарегистрировать в Windows 7, например, 32-битную библиотеку (а библиотека, написанная на с++ с огромной долей вероятности 32-битная) нужно сделать следующий финт:
c:>c:windowssyswow64regsvr32 <full_lib_name>.dll
либо так
c:>cd windowssyswow64
c:windowssyswow64>regsvr32 <full_lib_name>.dll
ответ дан 17 апр 2013 в 12:50
cppNoobcppNoob
1831 золотой знак5 серебряных знаков16 бронзовых знаков
1
Пусть у вас есть COM объект someComObj.dll. Для регистрации этого компонента нужно выполнить команду в терминале:
C:>regsvr32.exe /path/to/component/someComObj.dll
Эта процедура одинакова на всех версиях Windows.
ответ дан 12 ноя 2010 в 11:45
Nicolas Chabanovsky♦Nicolas Chabanovsky
50.6k80 золотых знаков257 серебряных знаков493 бронзовых знака
6
Это выливается в некоторые трудности. Например, при попытке завершения “подвисшего” сеанса из следующей формы:
Сделать это, используя “COM
-соединение с агентом сервера”, не получится, и операция завершится ошибкой.
Для того, чтобы вручную создать COM
-соединение для 32-х битной версии платформы 1С, работающей на 64-х битной версии операционной системы, необходимы выполнить следующие шаги.
1.
Необходимо зарегистрировать в системе 32-х битную библиотеку comcntr.dll
. Для этого, откройте на сервере командную строку cmd.exe от имени администратора и выполните следующие команды:
C:Usersадминистратор>cd C:Program Files (x86)1cv88.3.6.2390bin
C:Program Files (x86)1cv88.3.6.2390bin>regsvr32 comcntr.dll
В появившемся окошке с сообщением об успешной регистрации библиотеки необходимо нажать “ОК”:
Папку bin
надо искать по пути, куда у вас установлена текущая версия платформы 1С. На момент написания статьи – её номер 8.3.6.2390
.
2.
Запускаем консоль “Службы компонентов”: Пуск -> Администрирование -> Службы компонентов. Раскрываем ветку “Службы компонентов”. Вызываем меню, кликнув правой клавишей мыши по ветке “Приложения COM
+” и выбираем Создать -> Приложение:
3.
У вас откроется приветственное окно “Мастера установки приложений COM
+”, в котором необходимо нажать “Далее”:
4.
В следующем окне нажмите на “Создать новое приложение”:
5.
Введите желаемое имя для нового приложения. В примере используется V83_ComConnector
, отметьте способ активации, как “Серверное приложение” и нажмите далее:
6.
В следующем окне выберите учетную запись, которую использует при старте агент сервера 1С. В примере – это учетная запись локального администратора сервера. Введите пару логин/пароль и нажмите “Далее”:
7.
8.
На следующем шаге, вам необходимо добавить (если имеет смысл) пользователя, от имени которого стартует агент сервера 1С и, соответственно, учетная запись которого будет использована для удостоверения работы нашего нового COM
+ приложения. В окне данного примера указан только доменный администратор, от имени которого запущен “Мастер установки приложений COM
+”, нажмите кнопку “Добавить”:
9.
В следующем окне введите имя учетной записи, от имени которой работает агент сервера 1С, и нажмите “ОК”:
10.
Вернувшись к “Мастеру…”, убедитесь, что искомая учетная запись добавилась и нажмите “Далее”:
11.
Закройте “Мастер установки приложений COM
+”, нажав “Готово”:
12.
Мы вернулись к окну консоли “Службы компонентов”. Убедитесь, что приложение COM
+ с вашим именем (в примере – V83_ComConnector) создан:
13.
Раскройте дерево созданного приложения и, вызвав меню правой кнопкой мыши по ветви “Компоненты”, создайте новый компонент Создать -> Компонент:
14.
У вас откроется приветственное окно “Мастера установки компонентов COM
+”, в котором необходимо нажать “Далее”:
15.
В следующем окне нажмите на “Установка новых компонентов”:
16.
С помощью окна explorer выберите библиотеку comcntr.dll
, находящуюся по пути C:Program Files (x86)1cv88.3.6.2390bin , которую мы зарегистрировали в системе на первом шаге. Убедитесь, что путь к этой библиотеке совпадает с вашей версией платформы. В примере – это 8.3.6.2390
. И нажмите “Открыть”:
17.
В следующем окне “Мастера…” нажмите “Далее”:
18.
Закройте “Мастера установки компонентов COM
+”, нажав “Готово”:
19.
Вы вернетесь к окну консоли “Службы компонентов”. Убедитесь, что в нашем приложении COM
+ создалась новая компонента:
20.
Вызовите её свойства:
21.
И на вкладке “Безопасность” в окошке “Явно установленные для выделенных объектов роли:” отметьте мышкой CreatorOwner
и нажмите “ОК”:
22.
Вернувшись к консоли “Службы компонентов” закройте её и перезагрузите сервер.
После выполнения указанных действий, завершение “подвисших” сеансов в 1С версии 8.3 происходило без проблем. Единственное неудобство – теперь после каждого обновления платформы 1С на новую версию, необходимо проделывать данную операцию.
Для доступа к информационной базе из внешней программы используется COM объект COMConnector. В зависимости от версии платформы используется V82.COMConnector или V83.COMConnector. При установке платформы 1С, в операционной системе автоматически регистрируется класс COMConnector. Если по каким либо причинам регистрация не прошла, то его можно зарегистрировать вручную.
Пример по работе с базой 1С через COM соединение можно посмотреть в .
Если COMConnector не зарегистрирован в Windows, то при программном создании объекта будет появляться ошибка:
Ошибка при вызове конструктора (COMObject): -2147221164(0x80040154): Класс не зарегистрирован
.
Регистрацию можно выполнить с помощью командной строки. Для того чтобы открыть командную строку в Windows 7 или Windows 10 нужно в строке поиска в меню «ПУСК» набрать cmd. Для Windows 8 в «Стартовом окне» в поиске набрать cmd. Запустить cmd.exe с правами администратора.
Синтаксис командной строки Windows
cd c:program files
— в каталог program files
cd
— в корень диска
с:
— на диск c
cd..
— на один уровень выше
Windows (x64)
Для того чтобы зарегистрировать ComConnector в 64 разрядной операционной системе Windows выполняется
команда: C:WindowsSysWOW64
c:WindowsSystem32>
c:WindowsSystem32>cd c:WindowsSysWOW64
c:WindowsSysWOW64>
c:WindowsSysWOW64>regsvr32 «c:program files (x86)1cv88.3.9.2233bincomcntr.dll»
…
Деинсталяция
c:WindowsSysWOW64>
Windows (x32)
Для 32 разрядной операционной системы Windows выполняется
команда: C:WindowsSystem32regsvr32 «C:Program Files (x86)1cv88.3.9.2233bincomcntr.dll»
c:WindowsSystem32>
c:WindowsSystem32>regsvr32 «c:program files (x86)1cv88.3.9.2233bincomcntr.dll»
…
Деинсталяция
c:WindowsSystem32>regsvr32 «c:program files (x86)1cv88.3.9.2233bincomcntr.dll» /u
После успешного выполнения появится оповещение:
В свое время столкнулся с проблемой создания COM-соединения на стороне сервера. Проблема трудно диагностируется, т.к. код, прекрасно работающий под клиентом отказывается работать на сервере, например, если код исполняет регламентное задание.
Предлагаемая ниже методика позволяет избавиться от описываемой проблемы. К сожалению, после переустановки платформы все возвращается на круги своя и процедуру приходится повторять.
Upd
. Дополнение: если на Windows-сервере 64-бит стоит Сервер 1С Предприятие 64-бит (в дистрибутиве windows64.rar),
то такой проблемы не будет. Уставщик позволяет поставить COM-коннектор без установки самого севера. Это полезно, когда приложение реализовано на платформе 8.3, а COM-соединение нужно к базам на 8.2.
За дополнение спасибо
brix8x
.
Приведен алгоритм настройки системы, со скрином к каждому действию.
2. Регистрация компоненты comcntr.dll
5. Старт сервера 1С. (обязательно:)
Вызываем консоль
Регистрируем компоненту. Компонента отсутствует, если установлен только сервер 1С. Почему-то 1С публикует ее только в составе клиента.
Запускаем службу компонентов. Описывается для Windows Server 2008 R2 Standart.
В ветке Components добавляем новую компоненту comcntr.dll
ВАЖНО!!! После установки нужно немного изменить свойства. Эта тонкость нигде не описана, без нее у меня не работало!
Перезапуск физического сервера
Обновлятор-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 «путь к папке bincomcntr.dll»
В 64-битной версии ОС команда будет примерно такой:
C:
WindowsSysWOW64regsvr32 /
n /
i:
user «путь к папке bincomcntr.dll»
Эти команды запускаем от имени пользователя с правами администратора
. А при включённом UAC, запускаем cmd через «Запуск от имени администратора», либо через такой же запуск написанного батника.
Если команда регистрации не помогла, то нужно предварительно удалить регистрацию библиотеки comcntr.dll, запустив ту же команду вызова regsvr32 с ключом /u
Если и это не помогло, попробуйте переустановить платформу 1С в режиме Исправить, а затем зарегистрируйте библиотеку, как написано выше.
Шаг №3
Похоже, что у обновлятора не получается зарегистрировать COM компоненту из-за настроек безопасности на вашем сервере.
В этом случае:
- Заходим в Панель управления — Администрирование — Службы компонентов.
- Переходим к ветке Компьютеры — Мой компьютер — Приложения COM+.
- В контекстном меню выбираем Создать — Приложение. Откроется Мастер установки приложений COM+.
- Нажимаем «Далее».
- Выбираем «Создать новое приложение».
- Вводим имя «V83COMConnector». Устанавливаем переключатель «Серверное приложение». Нажимаем «Далее».
- На следующем шаге устанавливаем «Текущий пользователь». Нажимаем «Далее».
- Нажимаем «Готово».
- В появившейся ветке V83COMConnector переходим к подветке Компоненты.
- В контекстном меню выбираем Создать — Компонент. Откроется Мастер установки компонентов COM+.
- Нажимаем «Далее».
- Выбираем «Установка новых компонентов».
- Выбираем файл <каталог 1С>bincomcntr.dll.
- Нажимаем «Далее» — «Готово».
- Переходим к ветке V83COMConnector.
- В контекстном меню выбираем «Свойства». В открывшемся окне переходим на вкладку «Безопасность».
- Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку «Применить политику программных ограничений». Устанавливаем Уровень ограничений — «Неограниченный».
- Нажимаем «ОК».
После этого обновлятор должен смочь самостоятельно регистрировать компоненты всех версий платформ, а не только той, которую мы прописали в компоненте.
Шаг №4
Бывает так, что помогает только повторная переустановка платформы (при этом происходит корректная регистрация компоненты).
Шаг №5
Если проблема начала возникать сразу после обновления платформы 1с, то вероятнее всего новой версии платформы 1с не хватает какого-нибудь сервиспака или обновления для вашей операционной системы. Поэтому если есть возможность — ставим их все, если нет — действуем выборочно согласно этой .
Последние изменения: 20.12.2022
Для регистрации COM-объекта нам понадобится запустить несколько файлов из командной строки.
Командная строка — это обычная программа Windows (файл «cmd.exe») и запустить ее можно как любую другую программу. Находится она в папках «Windows/System32» (для 32-разрядных версий Windows) и «Windows/SysWOW64» (для 64-разрядных).
Запустите файл «cmd.exe» от администратора именно правой кнопкой мыши!
-
Перед регистрацией лучше делать отмену регистрации. Запустите из командной строки команды: «1cv8.exe /unregserver» и «regsvr32 comcntr.dll /u».
-
Запустите из командной строки команды: «1cv8.exe /regserver» и «regsvr32 comcntr.dll» из папки «1Сbin».
Если у вас используется 64-битная платформа 1С, то файлы «1cv8.exe» и «comcntr.dll» хранятся в папке вида «C:Program Files1cv828.2.19.83bin». Если у вас 32-битная платформа 1С, то путь к папке будет иметь примерный вид «C:Program Files (x86)1cv828.2.19.83bin».
-
Для этого в командной строке наберите: cd пробел и путь к папке bin (имя команды пока не указываем). Путь должен быть именно к той папке, которую использует платформа.
В появившейся строке добавьте имя команды, которую нужно запустить.
Команды запускаем по очереди (правильно напишите команды, включая пробелы и слеш, а лучше скопируйте и вставьте текст).
«1cv8.exe /regserver»
«regsvr32 comcntr.dll» -
Запустите с правами администратора файл «Зарегистрировать COM.bat» из папки «C:Program Files (x86)Cleverence SoftMobile SMARTSConnectivity».
Запустите файл «Зарегистрировать COM.bat» от администратора именно правой кнопкой мыши!
-
Перезапустите службу драйвера. Запустите Mobile SMARTS, нажмите «Настройки локального сервера», выберите ваш сервер. Затем нажмите на кнопку «Остановить сервер данных», затем «Запустить сервер данных».
-
Данный пункт выполняется только для продукта 1С Драйвер ПРОФ: переподключите промежуточную базу «C:ProgramDataCleverenceDatabase1С Драйвер ТСД Wi-Fi ПРОФOnlineConnection1CBaseSelector.exe».
В случае если при диагностике базы, для которой был зарегистрирован COM-объект, появится нижеуказанное сообщение, оно не будет являться ошибкой и никак не повлияет на работу базы. Это сообщение означает, что в вашем конкретном случае была зарегистрирована 64-разрядная библиотека 1С (может быть наоборот).