Как подключиться через COM-соединение к базе 1С, если в ней установлена блокировка?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При автоматизации задач часто возникает необходимость подключаться к информационной базе 1С с помощью COMConnector. Однако, если в настройках базы установлена блокировка начала сеансов (например, для проведения регламентных работ), стандартный метод Connect завершается ошибкой «Начало сеанса с информационной базой запрещено». Давайте разберем, как правильно передать код разблокировки, чтобы обойти это ограничение.

Разбор ошибки в синтаксисе строки подключения

Частая ошибка разработчиков заключается в попытке использовать ключи командной строки (например, /UC) внутри строки соединения COMConnector. Важно понимать, что COM-объект ожидает параметры в формате ИмяПараметра=Значение, разделенные точкой с запятой. Использование слэша (/) характерно только для запуска исполняемого файла 1cv8.exe через ярлык или командную строку, но не для механизма внешнего соединения.

Решение: правильный формат строки подключения

Для того чтобы COMConnector успешно открыл сеанс в заблокированной базе, необходимо передать параметр UC (код разблокировки) как полноценную часть строки соединения. Давайте рассмотрим, как выглядит корректная строка подключения:


// Пример правильного синтаксиса для COM-соединения
Сервер = "192.168.199.31:1541";
ИмяИБ = "trade82_test";
Пользователь = "Поль";
Пароль = "Пар";
КодРазблокировки = "2";

СтрокаПодключения = "Srvr=""" + Сервер + """;" +
                     "Ref=""" + ИмяИБ + """;" +
                     "Usr=""" + Пользователь + """;" +
                     "Pwd=""" + Пароль + """;" +
                     "UC=""" + КодРазблокировки + """;";

ComConnector = Новый COMОбъект("v83.COMConnector");
ВнешняяБаза = ComConnector.Connect(СтрокаПодключения);

Обратите внимание на несколько важных моментов:

  1. Отсутствие слэша: Мы используем UC, а не /UC.
  2. Кавычки: Все параметры строки соединения, содержащие значения, рекомендуется брать в двойные кавычки. В коде 1С это достигается их удвоением внутри строки.
  3. Отсутствие пробелов: Не следует добавлять лишние пробелы между параметрами или вокруг знака равенства, так как это может привести к ошибке парсинга строки платформой.

Что делать, если подключение все еще не удается?

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

Альтернативный подход: управление через COM-администратор

Если вам требуется массово или гибко управлять блокировками, можно использовать объект COMConnector для подключения к агенту сервера (ConnectAgent). Это позволит программно изменять свойства информационной базы, включая состояние блокировки, без необходимости каждый раз передавать код разблокировки в строку соединения.

Мы проанализировали ситуацию и выяснили, что ключ блокировки UC является штатным параметром для COMConnector. Главный секрет стабильной работы заключается в строгом соблюдении формата Имя=Значение и правильном экранировании кавычек в строке соединения.

← На главную