При разработке и доработке отчетов на базе системы компоновки данных (СКД) разработчики часто сталкиваются со следующей ситуацией: в Конфигураторе добавляются новые поля, параметры или отборы, однако после сохранения внешнего файла .erf и его открытия в режиме 1С:Предприятие отчёт остаётся в неизменном виде. Любые правки структуры СКД проигнорированы, а новые поля не появляются в списке доступных.
В этой статье мы разберем причины такого поведения платформы 1С и типовых конфигураций, а также рассмотрим проверенные способы применения новых настроек схемы компоновки данных.
Главная причина, по которой изменения в СКД не отображаются в пользовательском режиме — это механизм работы подсистемы «Варианты отчетов» Библиотеки Стандартных Подсистем (БСП) и кэширование настроек в информационной базе.
Проанализируем порядок действий платформы при первом открытии или сохранении отчета:
Дополнительные отчеты и обработки или при его запуске через меню «Файл» -> «Открыть», конфигурация фиксирует структуру вариантов отчета в специальном системном хранилище ХранилищеВариантовОтчетов.Важно учитывать, что изменения настроек на вкладке «Настройки» в Конфигураторе не сбрасывают уже зафиксированный пользовательский кэш в информационной базе.
Самый простой и быстрый вариант применить обновленную схему СКД без переименования отчета — выполнить сброс настроек непосредственно в пользовательском интерфейсе.
Рассмотрим порядок действий по шагам:
Если требуется гарантировать, что платформа создаст полностью новый кэш настроек и не будет обращаться к ранее сохраненным вариантам из информационной базы, можно изменить идентификатор отчета:
Поскольку имя отчета изменилось, подсистема БСП не найдет старых настроек в хранилище и инициализирует схему СКД строго из текущего файла.
В случаях, когда отчет уже встроен в справочник Дополнительные отчеты и обработки и используется несколькими сотрудниками, индивидуальный сброс настроек каждым пользователем может быть неудобен. Рассмотрим, как очистить настройки глобально:
При активной разработке внешнего отчета постоянный сброс настроек вручную отнимает много времени. Чтобы при каждом формировании отчета гарантированно применялась актуальная схема из Конфигуратора, разберем программный метод.
В модуле объекта внешнего отчета в процедуру ПриКомпоновкеРезультата добавим сброс пользовательских настроек к настройкам по умолчанию:
Процедура ПриКомпоновкеРезультата(ИсполнительКомпоновки, СхемаКомпоновки, НастройкиПоУмолчанию, ВнешниеНаборыДанных)
// Принудительно загружаем базовые настройки из схемы СКД
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
КонецПроцедуры
Обратите внимание: данный код следует использовать только на этапе разработки и отладки. Перед передачей отчета конечным пользователям или публикацией в справочник доп. обработок эту строчку кода необходимо удалить или закомментировать, чтобы пользователи могли сохранять собственные варианты отчета.