Почему не отображаются новые варианты отчета СКД в 1С и как это исправить?

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

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

Причина проблемы: Справочник «Варианты отчетов»

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

Проанализируем основные способы синхронизации метаданных со справочником вариантов.

Способ 1. Использование параметра запуска базы

Это самый простой и эффективный способ для разработчика. Он позволяет инициировать процедуру обновления всех вспомогательных данных, включая идентификаторы объектов метаданных и варианты отчетов.

Для выполнения обновления выполним следующие действия:

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

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

Способ 2. Программное обновление через модуль менеджера

Если мы хотим, чтобы наши варианты имели специфические настройки (например, определенное описание или функциональные опции), необходимо использовать программный интерфейс БСП. Рассмотрим, как правильно прописать настройки в модуле менеджера отчета. Разберем пример кода, который должен быть размещен в модуле менеджера вашего отчета:


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

Важный нюанс: Обратите внимание на свойство ВидимостьПоУмолчанию. Если в коде или в свойствах варианта по ошибке указано Ложь, вариант будет создан в справочнике, но не отобразится в панели отчетов. Пользователю придется заходить в настройки панели и вручную проставлять флаг видимости.

Для того чтобы система применила эти настройки немедленно, можно воспользоваться методом программного вызова обновления предопределенных вариантов:


// Пример вызова в обработке или консоли кода
ВариантыОтчетов.ОбработкаПредопределенныхВариантов();

Способ 3. Работа с обработкой «Обновление вспомогательных данных»

В составе БСП поставляется внешняя обработка ОбновлениеВспомогательныхДанных.epf. Она предназначена для принудительного обновления различных служебных регистров и справочников. Рассмотрим алгоритм работы с ней:

  1. Откроем обработку в режиме «1С:Предприятие».
  2. Найдем в списке групп настроек пункт «Варианты отчетов».
  3. Установим флаг напротив этого пункта.
  4. Нажмем кнопку «Обновить».

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

Способ 4. Точечное обновление конкретного отчета (через консоль кода)

Если мы не хотим ждать полного обновления базы, можно вызвать метод обновления только для нашего объекта метаданных. Это самый быстрый способ для промышленной эксплуатации. Выполним следующий код в консоли заданий или временной обработке:


ИмяОтчета = "ВашИмяОтчетаИзМетаданных";
МетаданныеОтчета = Метаданные.Отчеты[ИмяОтчета];
ВариантыОтчетов.Обновить(МетаданныеОтчета);

Этот метод синхронизирует записи в справочнике ВариантыОтчетов только для указанного отчета, проверяя все варианты, описанные в его СКД.

На что еще обратить внимание?

Выясним причины, по которым отчет может не появиться даже после обновления данных:

  1. Ключ варианта: Убедитесь, что имя варианта в СКД (на вкладке «Настройки») в точности совпадает с именем, которое вы указываете в коде процедуры НастроитьВариантыОтчета. Ключ чувствителен к регистру и пробелам.
  2. Функциональные опции: Если ваш отчет или конкретный вариант привязан к функциональной опции, которая выключена в настройках системы, он будет скрыт интерфейсом БСП. Проверьте свойство ФункциональныеОпции в объекте НастройкиВарианта.
  3. Идентификаторы объектов метаданных: Если вы только что создали сам объект «Отчет», убедитесь, что он зарегистрирован в справочнике идентификаторов. Это происходит автоматически при обновлении версии ИБ или при запуске с параметром /C ЗапуститьОбновлениеИнформационнойБазы.
  4. Настройки пользователя: Иногда система уже сохранила «состояние» панели отчетов для конкретного пользователя. В этом случае, даже если новый вариант появился, он может быть выключен в персональных настройках. Попробуйте нажать кнопку «Установить стандартные настройки» в панели отчетов раздела.

Подводя итог, можно сказать, что в 90% случаев проблема решается либо использованием параметра запуска /C ЗапуститьОбновлениеИнформационнойБазы, либо точечным вызовом ВариантыОтчетов.Обновить() для конкретного метаданного. Выбор метода зависит от того, находитесь ли вы в процессе разработки или вносите изменения в рабочую базу.

← На главную