При разработке интеграционных решений на платформе 1С:Предприятие часто возникает необходимость взаимодействия с другими информационными базами. Одним из классических, хотя и дискуссионных методов является использование V83.COMConnector. Однако при переносе логики из толстого клиента в тонкий разработчики нередко сталкиваются с ошибкой: Произошла исключительная ситуация (V83.COMConnector.1): Идентификация пользователя не выполнена.
Давайте разберемся, почему это происходит и как исправить данную ситуацию.
Основная причина кроется в архитектуре выполнения кода. В толстом клиенте код выполняется в сеансе конкретного пользователя Windows, у которого есть доступ к профилю, реестру и соответствующим правам на COM-объекты. Когда мы работаем в тонком клиенте, вызов серверной процедуры переносит выполнение кода на сторону сервера 1С.
На сервере код исполняется от имени системного пользователя, под которым запущена служба Агент сервера 1С:Предприятия (чаще всего это USR1CV8). У этого пользователя нет прав доступа к интерактивному рабочему столу, а также зачастую отсутствуют необходимые права на запуск COM-компонент в реестре Windows. В итоге, даже если вы передаете в СтрокаПодключения корректные логин и пароль, объект COMConnector не может инициализироваться из-за ограничений безопасности операционной системы.
Прежде всего, проанализируем, где именно вызывается ваш код. Если вы пытаетесь создать COMConnector внутри процедуры с директивой &НаСервере, вы неизбежно столкнетесь с серверными ограничениями. Рассмотрим пример кода, который вызывает проблему:
&НаСервере
Процедура ПодключитьсяКБазе()
Подключение = Новый COMОбъект("V83.COMConnector");
COMОбъект = Подключение.Connect(СтрокаПодключения);
КонецПроцедуры
Если задача позволяет, попробуйте перенести создание объекта на сторону клиента (директива &НаКлиенте), где пользовательский сеанс Windows активен. Однако учтите, что на стороне клиента COM-компонента должна быть установлена и зарегистрирована в реестре локально.
Если использование серверного вызова необходимо, нам нужно «подружить» пользователя, от имени которого запущен сервер 1С, с COMConnector. Часто при обновлении платформы возникают проблемы с регистрацией, поэтому мы рекомендуем выполнить следующие шаги:
C:\Program Files\1cv8\8.3.x.x\bin).regsvr32 /u comcntr.dll.regsvr32 comcntr.dll.После этой процедуры сервер 1С должен корректнее обрабатывать обращения к COM-объекту. Также убедитесь, что в оснастке dcomcnfg (Компоненты службы) у пользователя службы сервера 1С есть права на запуск и активацию компоненты V83.COMConnector.
Несмотря на то что COM-соединение работает, важно помнить, что в современных версиях платформы 1С:Предприятие оно считается устаревающим механизмом. Если вы строите архитектуру с нуля или планируете долгосрочную поддержку, рассмотрите следующие альтернативы:
Используя вышеописанные методы, вы сможете успешно преодолеть проблему идентификации и обеспечить стабильную работу интеграционных процессов в вашей информационной системе.