При разработке и доработке отчетов на базе системы компоновки данных (СКД) разработчики нередко сталкиваются с ситуацией: в конфигураторе в схему добавляются новые поля, группировки или таблицы, но при формировании отчета в режиме 1С:Предприятие внешний вид результата не меняется. Даже если полностью очистить состав выводимых полей в настройках схемы в конфигураторе, отчет продолжает формироваться в прежнем виде. Разберем механизм работы платформы, выясним причину такого поведения и рассмотрим способы решения проблемы.
Проанализируем, как платформа 1С формирует итоговый макет отчета. Структура отчета СКД разделена на два уровня:
СхемаКомпоновкиДанных.НастройкиПоУмолчанию и определяются разработчиком в конфигураторе.КомпоновщикНастроек.ПользовательскиеНастройки и в системных хранилищах настроек базы данных.Когда пользователь открывает отчет в режиме 1С:Предприятие и хотя бы один раз меняет отбор, порядок группировок или состав колонок, платформа автоматически сохраняет эти параметры в системном хранилище (ХранилищеПользовательскихНастроекОтчетов или ХранилищеВариантовОтчетов). При последующих открытиях отчета сохраненные пользовательские настройки накладываются поверх схемы из конфигуратора. В результате любые изменения базового варианта игнорируются, так как сохраненный пользовательский вариант имеет наивысший приоритет.
Рассмотрим самый простой способ вернуть отчет к схеме, заданной в конфигураторе:
После выполнения этой команды платформа очистит наложенные пользовательские корректировки и загрузит настройки по умолчанию непосредственно из актуальной схемы компоновки данных.
Если требуется сбросить сохраненные настройки сразу для конкретного пользователя или группы пользователей, воспользуемся стандартным функционалом администрирования:
Разберем, как программно гарантировать инициализацию компоновщика актуальной схемой в модуле формы или модуле объекта отчета. Это полезно при отладке, когда необходимо исключить влияние кэшированных настроек.
Посмотрим на пример инициализации и перезагрузки настроек по умолчанию:
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(Новый ПользовательскиеНастройкиКомпоновкиДанных);
Данный код полностью переводит КомпоновщикНастроек в исходное состояние, соответствующее настройкам из схемы конфигуратора.
Если сброс настроек к стандартным не помог, проанализируем альтернативные технические факторы:
Варианты отчетов. Для применения изменений схемы может потребоваться выполнить обновление предопределенных вариантов через раздел Администрирование → Печатные формы, отчеты и обработки → Отчеты.ПриКомпоновкеРезультата. Если в модуле объекта формирование отчета переопределено программно с использованием внешней схемы или жестко заданного макета, изменения структуры СКД в интерфейсе конфигуратора не окажут влияния.