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