Почему в конфигураторе пуст справочник «Предопределенные варианты отчетов» и как добавить свой элемент

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой IT и автоматизация бизнеса
← На главную

При разработке или кастомизации конфигураций на базе Библиотеки стандартных подсистем (БСП), таких как УНФ, ERP или Бухгалтерия предприятия 3.0, разработчики часто сталкиваются с парадоксальной ситуацией. Открывая справочник Предопределенные варианты отчетов в конфигураторе и пытаясь просмотреть его предопределенные данные, они видят абсолютно пустой список. При этом в режиме «1С:Предприятие» справочник заполнен множеством записей. Более того, любая попытка программной записи в этот справочник извне вызывает исключение: «Запись в справочник "Предопределенные варианты отчетов" запрещена. Его данные заполняются автоматически».

В рамках этой статьи мы подробно разберем, почему так происходит, как устроена архитектура хранения вариантов отчетов в современных конфигурациях и какими способами можно добавить свой вариант, чтобы он выглядел как «системный».

Анализируем причину: технологические предопределенные элементы

Для начала выясним причину «пустоты» справочника в конфигураторе. В платформе 1С существуют традиционные предопределенные элементы, которые создаются непосредственно в дереве метаданных. Однако БСП использует иной подход — так называемые логические (или технологические) предопределенные элементы.

Справочник Предопределенные варианты отчетов служит своего рода «эталонным хранилищем». Его элементы не создаются вручную в конфигураторе, так как это затруднило бы поддержку и обновление конфигурации. Вместо этого они формируются программно на основе настроек, заложенных в коде менеджеров конкретных отчетов и их схем компоновки данных (СКД). Когда система запускается или обновляется, механизмы БСП опрашивают все отчеты в базе и «зеркалируют» найденные в них варианты настроек в этот справочник.

Именно поэтому в модуле объекта справочника мы видим жесткую проверку в процедуре ПередЗаписью:


Процедура ПередЗаписью(Отказ)
    Если Не ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных") Тогда
        ВызватьИсключение НСтр("ru='Запись в справочник ""Предопределенные варианты отчетов"" запрещена. Его данные заполняются автоматически.'");
    КонецЕсли;
КонецПроцедуры

Система защищает целостность данных, разрешая запись только внутренним механизмам обновления БСП, которые передают специальное свойство ЗаполнениеПредопределенных.

Различие между справочниками вариантов

Проанализируем структуру системы отчетов. Для управления вариантами в БСП используются два ключевых справочника, которые важно не путать:

  1. Предопределенные варианты отчетов: Это «склад» системных настроек, поставляемых разработчиком конфигурации. Пользователь не имеет к нему прямого доступа для редактирования. Эти элементы часто помечаются в интерфейсе специальной иконкой (синий шарик).
  2. Варианты отчетов: Это основной справочник, с которым работает пользователь и интерфейс отчетов. В нем хранятся как ссылки на «предопределенные» варианты, так и «пользовательские» варианты (созданные через «Сохранить как»).

Если ваша задача — просто создать личную настройку, вам не нужно лезть в конфигуратор. Достаточно изменить настройки в режиме «1С:Предприятие» и сохранить их под новым именем. Но если вы хотите, чтобы ваш вариант стал частью «коробки» и был доступен всем пользователям как стандартный, необходимо использовать программный метод.

Способ 1: Добавление системного варианта через модуль менеджера

Рассмотрим по шагам, как правильно зарегистрировать новый предопределенный вариант отчета, чтобы он автоматически попал в нужные справочники.

Во-первых, создайте новую настройку в самой Схеме компоновки данных (СКД) вашего отчета. Перейдите на вкладку «Настройки», добавьте новый вариант и настройте его (группировки, поля, отборы).

Во-вторых, нам нужно сообщить системе о наличии этого варианта. Для этого перейдите в Модуль менеджера вашего отчета. В типовых конфигурациях там должна быть (или ее нужно создать) процедура НастроитьВариантыОтчета. Рассмотрим пример кода:


Процедура НастроитьВариантыОтчета(Настройки) Экспорт
    
    // Описываем новый вариант
    ВариантНастройки = Настройки.Варианты.Добавить();
    ВариантНастройки.Имя = "МойНовыйВариантПродаж"; // Должно совпадать с именем в СКД
    ВариантНастройки.ВидимостьПоУмолчанию = Истина;
    ВариантНастройки.Описание = НСтр("ru = 'Подробный анализ продаж по регионам'");
    
КонецПроцедуры

В этой процедуре мы регистрируем вариант в коллекции Настройки. После того как вы изменили код, система должна «увидеть» изменения.

Способ 2: Принудительное обновление данных

Выясним, что делать, если код написан, но в справочнике Предопределенные варианты отчетов ничего не появилось. Система кэширует данные о вариантах и обновляет их только при изменении номера версии конфигурации.

Чтобы заставить 1С обновить список вариантов без изменения версии, можно воспользоваться следующими методами:

  1. Использование консоли кода: Выполните следующий метод под администратором: Справочники.ВариантыОтчетов.ОбновитьДанныеОбОтчетах(); Этот метод инициирует полный пересчет всех отчетов и сопоставление их с данными в справочниках.
  2. Режим обновления конфигурации: Запустите программу с параметром /C ЗапуститьОбновлениеИнформационнойБазы.
  3. Панель администрирования: В некоторых конфигурациях (зависит от версии БСП) можно перейти в раздел «Обслуживание» -> «Отчеты и формы» и нажать кнопку «Обновить» или «Сбросить настройки».

Визуальные отличия: что означает «синий шарик»?

Проанализируем ситуацию с иконками. Если вы создаете вариант через режим «Сохранить как» в интерфейсе, он будет считаться пользовательским. У него не будет значка синего шарика. Синий шарик — это признак того, что запись в справочнике Варианты отчетов связана с записью в справочнике Предопределенные варианты отчетов.

Если вы добились появления шарика у своего нового варианта — значит, вы успешно зарегистрировали его как «предопределенный» на уровне разработчика. Теперь он будет доступен всем пользователям сразу после обновления информационной базы, и они смогут использовать его как отправную точку для своих отчетов.

Резюме для разработчика

Подведем итог нашему исследованию:

Таким образом, архитектура БСП отделяет описание отчетов в коде от их представления в базе данных, что позволяет гибко управлять правами доступа и пользовательскими настройками, сохраняя при этом целостность типового функционала.

← На главную