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