В процессе эксплуатации распределенных информационных баз (РИБ) системные администраторы и программисты 1С часто сталкиваются с ситуацией, когда при каждом запуске программы пользователям предлагается пройти процедуру «Обновления параметров работы программы». Если это окно появляется постоянно, даже после завершения всех регламентных операций, значит, механизм обновления «застрял» в состоянии незавершенного процесса. Давайте разберем, как проанализировать причину и устранить эту ошибку.
Прежде чем приступать к исправлению, важно выяснить, почему система считает обновление незавершенным. Основная причина кроется в работе механизмов Библиотеки стандартных подсистем (БСП). Система проверяет совпадение версий метаданных и наличие отложенных обработчиков.
Рассмотрим, как программа понимает, что обновление необходимо. В общем модуле ОбновлениеИнформационнойБазыСлужебныйПовтИсп существует функция НеобходимоОбновлениеИнформационнойБазы. Она выполняет следующие проверки:
Версии подсистем.ЗапуститьОбновлениеИнформационнойБазы в параметрах клиента.Если хотя бы одна из этих проверок возвращает Истина, окно будет появляться снова и снова. Мы рекомендуем первым делом заглянуть в Журнал регистрации. Отфильтруйте его по событию Обновление информационной базы — там часто можно найти запись об ошибке, которая указывает, на каком именно объекте «споткнулся» процесс обновления.
В случае с РИБ проблема часто носит специфический характер: подчиненный узел считает, что он не завершил первичную настройку после получения образа от главного узла. Одним из самых эффективных методов решения является проверка константы НастройкаПодчиненногоУзлаРИБЗавершена.
Разберем по шагам, как проверить и исправить это значение:
НастройкаПодчиненногоУзлаРИБЗавершена.Ложь, измените его на Истина.В большинстве случаев после установки этого флага циклическое окно перестанет беспокоить пользователей.
Если установка константы не помогла, возможно, в системе остались записи о невыполненных отложенных обработчиках. Мы можем проанализировать их состояние через регистр сведений Версии подсистем. Если в нем есть записи с флажками о необходимости выполнения отложенных процедур, которые не закрываются, попробуем запустить принудительное обновление.
Для принудительного запуска процедур обновления можно воспользоваться встроенной обработкой, которую можно вызвать из меню «Администрирование» -> «Поддержка и обслуживание» -> «Обновление версии программы». Если кнопка запуска обработок недоступна, можно воспользоваться консолью кода, выполнив процедуру:
// Пример принудительного вызова обработчиков
ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОтложенныеОбработчикиОбновления();
Часто в сети можно встретить совет «захардкодить» ответ функции НеобходимоОбновлениеИнформационнойБазы на Ложь. Мы настоятельно не рекомендуем использовать этот метод как основное решение. Это лишь маскировка симптома, которая может привести к критическим ошибкам в учете.
Рассмотрим, почему это опасно: если существуют невыполненные обработчики данных (например, алгоритмы пересчета остатков при изменении структуры регистров), принудительное отключение уведомлений приведет к тому, что база данных останется в «полуобновленном» состоянии. Это вызовет расхождения в отчетах и ошибки при последующих обновлениях конфигурации на новые релизы.
Таким образом, мы выяснили, что для устранения окна с обновлением параметров в РИБ необходимо:
НастройкаПодчиненногоУзлаРИБЗавершена имеет значение Истина.Помните, что аккуратная диагностика состояния метаданных и регистров сведений всегда предпочтительнее, чем внесение изменений в типовой код конфигурации.