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

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

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

Причина проблемы: Механизм хранения вариантов в БСП

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

Способ 1. Принудительное обновление через ключ запуска

Проанализируем самый надежный, но требующий времени способ. Для того чтобы система инициировала полный пересмотр всех встроенных отчетов и их вариантов, необходимо запустить информационную базу с особым параметром. Рассмотрим шаги:

  1. Закройте сеанс 1С:Предприятия.
  2. В окне запуска 1С выберите вашу базу и нажмите кнопку «Изменить».
  3. Перейдите на закладку «Дополнительные параметры запуска».
  4. Введите следующий текст: /c ЗапуститьОбновлениеИнформационнойБазы.
  5. Запустите базу. Система выполнит процедуры обновления, включая синхронизацию вариантов отчетов из метаданных со справочником БСП.

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

Способ 2. Программная регистрация в переопределяемом модуле

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

Найдите модуль ВариантыОтчетовУТПереопределяемый (в ERP он может называться аналогично или ВариантыОтчетовПереопределяемый) и процедуру НастроитьВариантыОтчетов. В ней необходимо прописать настройки для вашего отчета. Посмотрим на пример кода:


Процедура НастроитьВариантыОтчетов(Настройки) Экспорт
    // Находим наш отчет в метаданных
    НастройкиОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.МойНовыйОтчет);
    // Описываем конкретный вариант
    ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "Основной");
    ОписаниеВарианта.Размещение.Вставить(Метаданные.Подсистемы.Продажи);
КонецПроцедуры

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

Способ 3. Обновление через интерфейс «Обслуживание»

Если вы не хотите перезапускать базу с ключами, разберем точечный метод обновления через административную панель. Этот способ доступен пользователям с полными правами:

  1. Перейдите в раздел НСИ и администрирование — Обслуживание.
  2. Разверните группу Отчеты и обработки.
  3. Нажмите на ссылку Отчеты (или «Панель отчетов»).
  4. В открывшейся форме найдите кнопку Обновить список отчетов (иногда скрыта в меню «Еще»).

Проанализируем, что произойдет: система запустит фоновое задание, которое перечитает метаданные только для измененных объектов и актуализирует записи в справочнике ВариантыОтчетов.

Способ 4. Особенности работы с внешними отчетами

Ситуация усложняется, если вы работаете с внешним файлом (.erf). Рассмотрим два сценария:

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

Сценарий Б: Использование справочника «Дополнительные отчеты и обработки». Здесь система ведет себя строго. При загрузке файла 1С считывает все варианты и записывает их в базу. Если вы изменили файл и просто открываете его заново через «Файл — Открыть», но при этом в системе зарегистрирована старая версия этого же отчета как «Дополнительный», 1С может подтягивать настройки из зарегистрированной версии. Рассмотрим правильный алгоритм:

  1. Зайдите в карточку вашего дополнительного отчета.
  2. Нажмите кнопку Загрузить из файла и выберите обновленный .erf.
  3. Система предложит обновить список вариантов — соглашайтесь.

Технические нюансы: UUID и программный вызов

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

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


// Пример вызова обновления для конкретного отчета
ПараметрыОбновления = ВариантыОтчетов.ПараметрыОбновления();
ПараметрыОбновления.ОбновитьТолькоУказанные = Истина;
ПараметрыОбновления.СписокОтчетов.Добавить(Метаданные.Отчеты.МойНовыйОтчет);
ВариантыОтчетов.ОбновитьИзМетаданных(ПараметрыОбновления);

Резюме

Мы выяснили, что основная причина «пропажи» вариантов — это разрыв между метаданными конфигуратора и данными в справочниках БСП. Для решения проблемы мы рассмотрели четыре пути: использование ключа /c ЗапуститьОбновлениеИнформационнойБазы, регистрацию в переопределяемых модулях, ручное обновление через панель обслуживания и корректную перезагрузку внешних отчетов. Выбор метода зависит от того, насколько часто вы вносите изменения и является ли отчет встроенным или внешним.

← На главную