При попытке программного подключения к информационной базе 1С с помощью внешнего соединения через объект V83.ComConnector разработчики нередко сталкиваются с исключением:
«Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Неверные или отсутствующие параметры соединения с информационной базой»
Разберем природу возникновения этой ошибки, выясним, почему она происходит на этапе вызова метода Connect, и рассмотрим корректные способы формирования строки подключения, а также сопутствующие технические нюансы настройки серверов и COM-компонентов.
Проанализируем исходный код, вызвавший сбой:
СтрокаПодключения = "Srvr=erpserver;Ref=upp;usr=Администратор;pwd=""";
COM_Коннектор = Новый COMОбъект("V83.ComConnector");
Попытка
Соединение = COM_Коннектор.Connect(СтрокаПодключения);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Посмотрим внимательно на конец строкового литерала: pwd=""". В языке 1С двойная кавычка внутри строки экранируется еще одной кавычкой. В приведенном примере последовательность из трех кавычек воспринимается транслятором следующим образом: первая открывает внутреннее строковое значение, вторая экранирует третью, но закрывающей кавычки для всей строки соединения фактически нет, либо парсинг параметров платформой дает некорректный результат. В итоге параметр пароля передается в метод Connect с искаженным синтаксисом, из-за чего парсер строки подключения 1С не может распознать структуру параметров.
Рассмотрим несколько вариантов исправления строки подключения при работе с базой данных:
СтрокаПодключения = "Srvr='erpserver';Ref='upp';usr='Администратор';pwd=''";
pwd можно вовсе опустить либо передать без кавычек со знаком точки с запятой:
// Вариант без указания параметра pwd:
СтрокаПодключения = "Srvr=erpserver;Ref=upp;usr=Администратор;";
// Вариант с пустым значением без кавычек:
СтрокаПодключения = "Srvr=erpserver;Ref=upp;usr=Администратор;pwd=;";
СтрокаПодключения = "Srvr=erpserver;Ref=upp;usr=Администратор;pwd=""""";
Если учетная запись содержит спецсимволы (точку с запятой ;, пробелы, слеши), обрамление одинарными кавычками ' является обязательным. Кроме того, если сервер 1С использует нестандартный рабочий порт кластера, его следует явно указать через двоеточие: Srvr='erpserver:1641';Ref='upp';.
Если синтаксис строки выверен, но подключение по-прежнему завершается ошибкой, проверим настройки серверного окружения:
ragent, а библиотека comcntr.dll зарегистрирована только как 32-разрядная (или наоборот), возникнет ошибка создания или инициализации COM-объекта. Для межархитектурного взаимодействия настраивают выделенное приложение в службе компонентов Windows (Component Services / COM+), работающее в пуле процессов.comcntr.dll регистрировалась утилитой regsvr32 последней. Если соединяются базы на разных сборках, рекомендуется изолировать вызовы через отдельные COM+ приложения с явным указанием путей к нужным библиотекам.1C:Enterprise Server должна обладать правами на чтение каталога bin установленной платформы и доступ к веткам системного реестра Windows, отвечающим за COM-компоненты.
Соединение = Неопределено;
COM_Коннектор = Неопределено;
При проектировании новых систем важно помнить, что технология COM привязана исключительно к среде Windows и не поддерживается серверами на базе Linux. Для современных и надежных обменов между базами данных 1С рекомендуется отдавать предпочтение кроссплатформенным механизмам: