Каждый специалист, работающий с современными конфигурациями на платформе 1С:Предприятие 8.3 (такими как «Бухгалтерия предприятия 3.0», «Зарплата и управление персоналом 3.1» или «ERP Управление предприятием»), может столкнуться со следующей неприятной ситуацией. При запуске программы в режиме «1С:Предприятие» вместо открытия привычного рабочего стола на экране появляется окно с текстом: «Обновление параметров работы программы...». Процесс может длиться несколько минут, завершаться, но при следующем запуске базы данных всё повторяется заново. Происходит зацикливание процедуры.
В этой статье мы подробно разберем, почему возникает данный сбой с точки зрения архитектуры платформы и Библиотеки стандартных подсистем (БСП), проанализируем основные причины его появления и рассмотрим пошаговые методы устранения этой проблемы.
Данный механизм напрямую связан с работой Библиотеки стандартных подсистем (БСП). В структуре метаданных конфигурации существует служебный регистр сведений ПараметрыРаботыПрограммы. При каждом старте системы платформа вызывает метод РегистрыСведений.ПараметрыРаботыПрограммы.НеобходимоОбновление().
Этот регистр отвечает за хранение кэшированных данных о правах доступа, настройках интерфейса, доступных ролях и других служебных параметрах. Кэширование необходимо для ускорения работы интерфейса, чтобы система не считывала метаданные заново при каждом действии пользователя. Если кэш признается устаревшим (например, после обновления конфигурации, изменения прав или при первом запуске информационной базы), система инициирует фоновое или последовательное обновление этих параметров.
Если процесс обновления прерывается ошибкой или не может завершиться корректно из-за внешних факторов, флаг необходимости обновления в базе данных не снимается. В результате при каждом последующем входе пользователя программа вновь пытается выполнить эту процедуру, создавая бесконечный цикл.
Чаще всего циклическое обновление параметров возникает в подчиненных узлах распределенных баз данных (РИБ). Это связано с тем, что процесс создания или синхронизации узла не завершился в штатном режиме.
Для решения этой проблемы нам необходимо принудительно указать системе, что первоначальная настройка подчиненного узла РИБ успешно завершена. Разберем, как это сделать:
Настройка подчиненного узла РИБ завершена (или НастройкаПодчиненногоУзлаРИБЗавершена).Если доступ к интерфейсу полностью заблокирован, вы можете выполнить этот код программно. Для этого запустите базу в режиме Конфигуратора, откройте внешнюю обработку или выполните код в модуле управляемого приложения при запуске:
Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Установить(Истина);
После выполнения данного кода перезапустите программу. В большинстве случаев бесконечный цикл прекратится.
Если простое изменение значения константы не помогло, это может свидетельствовать о более глубоком повреждении структуры распределенной базы данных. В таком случае рекомендуется переподключить узел к главному узлу РИБ:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
1Cv8.cf), выгруженный из главного узла РИБ, через меню Конфигуратора Конфигурация -> Загрузить конфигурацию из файла....
СсылкаНаУзел = ПланыОбмена.ГлавныйУзел();
// Укажите ссылку на предопределенный узел главного узла
ПланыОбмена.УстановитьГлавныйУзел(СсылкаНаУзел);
Иногда бесконечное обновление параметров вызывается некорректными настройками отладки или запуска в самом Конфигураторе.
Выясним, как проверить и очистить эти параметры:
/C ЗапуститьОбновлениеИнформационнойБазы. Если этот ключ присутствует, удалите его.В некоторых релизах конфигурации «Бухгалтерия предприятия» (например, в ветке 3.0.58) присутствует зарегистрированная программная ошибка, из-за которой автозаполнение настроек начальной страницы вызывает сбой. Программа пытается принудительно обновить параметры работы для выбранной по умолчанию организации, но падает в бесконечный цикл или аварийно завершает работу.
Для исправления этой ошибки выполните следующие действия:
Если вышеописанные методы не привели к результату, нам необходимо локализовать конкретную ошибку в коде, которая мешает штатному завершению обновления параметров. Для этого проанализируем Журнал регистрации:
_ИБ.ОбновлениеПараметровРаботыПрограммы или ОшибкиОбновленияИБ).Современные версии Библиотеки стандартных подсистем очень критично относятся к активным расширениям конфигурации, изменяющим роли и структуру прав пользователей. В файловых базах данных при программном обновлении параметров может возникать скрытая коллизия: обновление параметров работы программы не может быть выполнено из фонового задания или COM-соединения, если подключены расширения.
Рассмотрим алгоритм действий в этом случае:
Если конфигурация ранее обновлялась динамически (без монопольного выталкивания пользователей), локальный кэш метаданных на компьютерах пользователей мог синхронизироваться некорректно. Платформа начинает бесконечно видеть «фантомные» изменения в структуре базы и постоянно запускает обновление параметров.
Для решения этой проблемы проведем комплексную очистку кэша и тестирование базы:
%AppData%\1C\1Cv8 и %LocalAppData%\1C\1Cv8.
Применяя последовательно предложенные методы, мы гарантированно найдем причину зацикливания и восстановим стабильную работу системы «1С:Предприятие».