Одной из наиболее неприятных проблем при работе с фоновыми заданиями является ситуация, когда код успешно выполняется в интерактивном режиме или в тестовой базе, но стабильно выдает ошибку Информационная база не обнаружена при работе в рабочей среде. Давайте разберем, почему это происходит и как это исправить.
Часто сервер 1С после переименования информационной базы или изменения ее параметров (адрес сервера БД, имя базы) продолжает «держать» в кэше старые идентификаторы. Даже после перезапуска службы сервера 1С данные метаданные могут не обновиться корректно. Это приводит к тому, что рабочий процесс rphost, запускающий фоновое задание, не может корректно разрешить адрес целевой базы.
Как решить эту проблему:
Иногда возникают ситуации, когда 1С по-разному определяет имя сервера или строку соединения в зависимости от того, запущен ли код пользователем или фоновым заданием. Если вы используете COM-объекты для подключения к другой базе, важно проверять строку соединения на соответствие текущему окружению.
Как реализовать защищенный механизм подключения:
Рассмотрим подход, который позволяет избежать ошибок при динамическом определении параметров базы. Мы можем добавить проверку строки соединения перед инициализацией объекта подключения.
// Пример проверки строки подключения с учетом регистра
СтрокаПодключенияВариант1 = "Srvr=Server1;Ref=BaseName;";
СтрокаПодключенияВариант2 = "Srvr=Server1.domain.local;Ref=BaseName;";
Функция ПолучитьВалиднуюСтроку(Строка1, Строка2)
// Проверяем текущее имя хоста через параметры соединения
ТекущаяСтрока = ПолучитьСтрокуСоединенияИнформационнойБазы();
Если НРег(ТекущаяСтрока) = НРег(Строка1) Тогда
Возврат Строка1;
ИначеЕсли НРег(ТекущаяСтрока) = НРег(Строка2) Тогда
Возврат Строка2;
КонецЕсли;
Возврат ТекущаяСтрока;
КонецФункции;
Используя функции НРег() (нижний регистр) или ВРег() (верхний регистр), мы исключаем влияние регистра символов в именах серверов, что часто является скрытой причиной ошибок в инфраструктуре с разными именами хостов.
Если вышеуказанные шаги не привели к немедленному успеху, проанализируем ситуацию глубже:
1cv8.exe на всех узлах кластера была идентичной. Даже незначительная разница в релизах может приводить к ошибкам сериализации параметров заданий.Начните с простого — удаления и повторного добавления базы в консоли сервера. В 90% случаев это устраняет «фантомные» ошибки метаданных, возникающие после административных правок в свойствах баз данных.