Почему в периферийном узле РИБ при каждом запуске происходит обновление параметров и не работают регламентные задания?

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

При работе с распределенными информационными базами (РИБ), особенно в конфигурациях на базе Библиотеки стандартных подсистем (БСП), таких как «1С:Розница 2.2», системные администраторы и программисты часто сталкиваются с ситуацией, когда периферийный узел начинает вести себя нестабильно после обновления главного узла. Одной из самых неприятных проблем является циклическое появление окна «Обновление параметров работы программы» при каждом входе в систему, которое сопровождается полным отказом регламентных заданий. Разберем детально причины этого поведения и способы исправления ситуации.

Анализ механизма обновления в современных конфигурациях

Для начала проанализируем, как устроено обновление в БСП. Весь процесс обновления конфигурации разделен на два ключевых этапа:

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

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

Причина №1: Неработающие регламентные задания в файловой базе

В рассматриваемом случае главный узел работает в режиме клиент-сервер, а периферийный — в файловом режиме. В файловых базах выполнение регламентных заданий имеет свои особенности: они запускаются либо в отдельном выделенном сеансе, либо в текущем пользовательском сеансе при наличии активности. Если регламентные задания «зависли» или заблокированы, процесс обновления параметров никогда не получит статус «Завершено».

Проверим статус блокировки регламентных заданий программно. Рассмотрим код, который позволяет увидеть состояние блокировки:


Блокировка = ИнформационнаяБаза.ПолучитьБлокировкуРегламентныхЗаданий();
Если Блокировка.Установлена Тогда
    Сообщить("Внимание: Регламентные задания заблокированы!");
    Блокировка.Установлена = Ложь;
    ИнформационнаяБаза.УстановитьБлокировкуРегламентныхЗаданий(Блокировка);
КонецЕсли;

Также важно убедиться, что платформа понимает, какому сеансу разрешено выполнять эти задания. Попробуем запустить клиента с параметром командной строки AllowExecuteScheduledJobs. Это принудительно разрешает выполнение заданий в данном сеансе.

Причина №2: Отложенные обработчики обновления

Если регламентные задания не запускаются автоматически, нам необходимо заставить систему выполнить обработчики обновления вручную. Проанализируем состояние регистра сведений «Потоки обновления» или воспользуемся типовым интерфейсом: «Администрирование» — «Обслуживание» — «Обновление программы» — «Результаты обновления».

Если в списке есть незавершенные пункты, их можно попробовать запустить форсированно. Для этого закроем все сеансы и запустим 1С с ключом:

/C ЗапуститьОбновлениеИнформационнойБазы

Этот параметр заставляет БСП выполнить все отложенные процедуры обновления в текущем (активном) окне, не дожидаясь срабатывания регламентного задания. Это критически важно для удаленных магазинов с плохим интернетом, где фоновые процессы могут обрываться.

Причина №3: Синхронизация идентификаторов объектов метаданных

В РИБ часто возникает конфликт идентификаторов. Система сравнивает структуру метаданных конфигурации со справочником «Идентификаторы объектов метаданных». Если в периферийном узле данные справочника «разъехались» с реальной структурой базы (что бывает при некорректном приеме сообщения обмена), система будет пытаться обновить параметры при каждом запуске.

Для решения этой проблемы рекомендуется использовать стандартную обработку БСП «Обновление идентификаторов объектов метаданных». Если обработка не помогает, стоит проверить регистр сведений «Версии подсистем». Выясним причину расхождений, сравнив версии в главном и периферийном узлах. В крайнем случае, можно принудительно прописать актуальный номер версии конфигурации в этот регистр для всех подсистем, используя код:


МенеджерЗаписи = РегистрыСведений.ВерсииПодсистем.СоздатьМенеджерЗаписи();
МенеджерЗаписи.ИмяПодсистемы = "СтандартныеПодсистемы";
МенеджерЗаписи.Прочитать();
МенеджерЗаписи.Версия = "2.2.11.24"; // Указываем актуальный номер релиза
МенеджерЗаписи.Записать();

Причина №4: Режим «Копия базы» и права доступа

Разберем ситуацию, когда база была скопирована или перенесена. В файловом режиме при первом запуске система часто спрашивает: «Это копия или база перемещена?». Если пользователь случайно ответил, что это копия, 1С блокирует все внешние соединения и регламентные задания в целях безопасности.

Чтобы исправить это, перейдем в раздел «Обслуживание» и найдем кнопку «Разблокировать работу с внешними ресурсами» (или «Я подтверждаю, что это не копия»). Без этого действия ни одно регламентное задание по обновлению параметров не запустится.

Также проанализируем права доступа к самой папке с файловой базой. Поскольку обновление параметров требует записи в служебные файлы (включая временные файлы и файлы блокировок), у пользователя Windows должны быть полные права на папку DBName. Тот факт, что проблема решается под учетной записью «Администратор», часто указывает именно на ограничение прав на уровне файловой системы или на уровне ролей в самой 1С (недостаток прав на запись в технические регистры сведений БСП).

Итоговый алгоритм действий

Рассмотрим пошагово, что нужно сделать, чтобы починить периферийный узел:

  1. Запустите базу с параметром /C ЗапуститьОбновлениеИнформационнойБазы под пользователем с полными правами.
  2. Дождитесь окончания всех процедур в открывшемся окне.
  3. Если обновление завершается ошибкой, проверьте регистр «Версии подсистем» и убедитесь, что номера версий соответствуют конфигурации.
  4. Проверьте, не включена ли блокировка регламентных заданий в консоли администрирования или через встроенные отчеты БСП.
  5. Если ничего не помогает, попробуйте временно «отвязать» узел от РИБ (установить ПланыОбмена.УстановитьГлавныйУзел(Неопределено)), выполнить запуск и обновление параметров, а затем вернуть привязку к главному узлу.

Помните, что в РИБ крайне важно соблюдать идентичность версий платформы на всех узлах. Разные релизы платформы могут по-разному вычислять хэш метаданных, что также приводит к постоянному желанию системы «обновить параметры».

← На главную