sonyps4.ru

1с обращение к длл без регистрации.

Это выливается в некоторые трудности. Например, при попытке завершения “подвисшего” сеанса из следующей формы:

Сделать это, используя “COM -соединение с агентом сервера”, не получится, и операция завершится ошибкой.

Для того, чтобы вручную создать COM -соединение для 32-х битной версии платформы 1С, работающей на 64-х битной версии операционной системы, необходимы выполнить следующие шаги.

1. Необходимо зарегистрировать в системе 32-х битную библиотеку comcntr.dll . Для этого, откройте на сервере командную строку cmd.exe от имени администратора и выполните следующие команды:

C:\Users\администратор>cd C:\Program Files (x86)\1cv8\8.3.6.2390\bin C:\Program Files (x86)\1cv8\8.3.6.2390\bin>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)\1cv8\8.3.6.2390\bin , которую мы зарегистрировали в системе на первом шаге. Убедитесь, что путь к этой библиотеке совпадает с вашей версией платформы. В примере – это 8.3.6.2390 . И нажмите “Открыть”:

17. В следующем окне “Мастера…” нажмите “Далее”:

18. Закройте “Мастера установки компонентов COM +”, нажав “Готово”:

19. Вы вернетесь к окну консоли “Службы компонентов”. Убедитесь, что в нашем приложении COM + создалась новая компонента:

20. Вызовите её свойства:

21. И на вкладке “Безопасность” в окошке “Явно установленные для выделенных объектов роли:” отметьте мышкой CreatorOwner и нажмите “ОК”:

22. Вернувшись к консоли “Службы компонентов” закройте её и перезагрузите сервер.

После выполнения указанных действий, завершение “подвисших” сеансов в 1С версии 8.3 происходило без проблем. Единственное неудобство – теперь после каждого обновления платформы 1С на новую версию, необходимо проделывать данную операцию.

В свое время столкнулся с проблемой создания 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 "путь к папке 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 объект 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:\Windows\SysWOW64\

c:\Windows\System32>
c:\Windows\System32>cd c:\Windows\SysWOW64
c:\Windows\SysWOW64>
c:\Windows\SysWOW64>regsvr32 "c:\program files (x86)\1cv8\8.3.9.2233\bin\comcntr.dll"
...
Деинсталяция
c:\Windows\SysWOW64>

Windows (x32)

Для 32 разрядной операционной системы Windows выполняется
команда: C:\Windows\System32\regsvr32 "C:\Program Files (x86)\1cv8\8.3.9.2233\bin\comcntr.dll"

c:\Windows\System32>
c:\Windows\System32>regsvr32 "c:\program files (x86)\1cv8\8.3.9.2233\bin\comcntr.dll"
...
Деинсталяция
c:\Windows\System32>regsvr32 "c:\program files (x86)\1cv8\8.3.9.2233\bin\comcntr.dll" /u

После успешного выполнения появится оповещение:



Загрузка...