При работе с распределенными информационными базами (РИБ) в программных продуктах на платформе 1С:Предприятие 8.3 (например, «Айлант: ЖКХ», «Бухгалтерия предприятия» или «ERP») специалисты часто сталкиваются с ситуацией, когда после очередного обновления конфигурации в подчиненных узлах перестают сохраняться настройки отчетов. Типичная картина: в центральной базе (ЦБ) всё работает корректно, а в узле РИБ пользователь выбирает параметры, формирует отчет, но при повторном открытии все «галочки» исчезают, и форма остается пустой.
Рассмотрим подробно причины возникновения этой ошибки и разберем по шагам алгоритм её устранения, основываясь на практическом опыте решения подобных инцидентов.
Проанализируем механизм обновления современных конфигураций 1С. В большинстве случаев они базируются на Библиотеке стандартных подсистем (БСП). Процесс обновления в таких системах разделен на два этапа:
В распределенных базах техническое обновление доходит до узла через файл обмена, но программные обработчики должны запуститься непосредственно в самом узле. Если этот процесс не был инициирован или завершился с ошибкой, системные таблицы, отвечающие за ХранилищеВариантовОтчетов и ХранилищеНастроекПользователей, могут оказаться заблокированными или работать некорректно.
Как решить проблему:
Выясним статус обновления в подчиненном узле. Перейдем в раздел Администрирование — Обслуживание — Результаты обновления программы. Проанализируем список процедур. Если в списке есть незавершенные задачи или ошибки, необходимо дождаться их выполнения или запустить их принудительно. Рассмотрим ситуацию, когда обновление «зависло». В этом случае помогает запуск базы с параметром командной строки:
/C ЗапуститьОбновлениеИнформационнойБазы
После успешного завершения всех фоновых процедур механизмы сохранения настроек в 90% случаев восстанавливают свою работу.
Проанализируем ситуацию, когда отчет является встроенным в основную конфигурацию или расширение. У каждого отчета в 1С есть важные свойства: ХранилищеВариантов и ХранилищеНастроек. Разберем, как они должны быть заполнены для корректной работы в типовых решениях.
Для отчетов, использующих механизм БСП, эти свойства обычно имеют значение ХранилищеВариантовОтчетов. Если после обновления в центральной базе эти настройки изменились (например, отчет перевели на использование другого хранилища), а в узле РИБ изменения метаданных не были приняты корректно из-за конфликта версий, запись настроек будет блокироваться платформой.
Проверим в конфигураторе подчиненного узла:
Посмотрим на техническую сторону работы платформы 8.3. Иногда возникает «тихая» рассинхронизация идентификаторов объектов. Даже если номер релиза совпадает, внутренние идентификаторы (UUID) новых реквизитов или форм в узле РИБ могут не сопоставиться с центральной базой. Это приводит к тому, что SystemSettingsStorage (внутреннее хранилище платформы) не может соотнести сохраняемую структуру данных с текущим объектом метаданных.
Рекомендуемые действия:
Рассмотрим ситуацию, описанную в сообщении №6: автор отчета мог организовать сохранение настроек специфическим способом. Например, через регистр сведений или внешний файл. Посмотрим на пример кода, который может блокировать сохранение в узлах РИБ:
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ПланыОбмена.ГлавныйУзел() <> Неопределено Тогда
// Логика, которая может препятствовать сохранению
// если мы находимся в подчиненном узле
Возврат;
КонецЕсли;
// Код сохранения настроек...
КонецПроцедуры
Проанализируем код модуля формы отчета и модуля объекта. Ищем методы ПередЗагрузкойВариантаНаСервере, ПриСохраненииНастроекНаСервере или ручную работу с объектом ХранилищеОбщихНастроек. Если в коде присутствует проверка на ГлавныйУзел(), это может быть причиной того, что настройки в РИБ не фиксируются преднамеренно разработчиком.
Выясним, не изменились ли права доступа после обновления. В 1С 8.3 права на чтение и запись в системные таблицы настроек могут быть ограничены механизмом RLS (Record Level Security). Если в узле РИБ профили групп доступа не обновились (что также является частью пост-обновляемых процедур), у пользователя может пропасть право на запись в РегистрСведений.СохраненныеНастройки или аналогичные системные таблицы.
Что нужно сделать:
Если проблему нужно решить оперативно (например, нужно срочно печатать квитанции в ЖКХ), воспользуемся методом ручного переноса. Во многих конфигурациях реализована возможность выгрузки настроек в файл. Разберем шаги:
Подводя итог, наиболее вероятной причиной является незавершенность процедур обновления данных. Всегда начинайте диагностику с проверки монитора обновления БСП в конкретном узле РИБ, так как без выполнения фоновых обработчиков корректная работа хранилища настроек не гарантируется.