При работе с внешними отчетами и обработками в конфигурациях на базе Системы Компоновки Данных (СКД), таких как 1С:ERP, разработчики часто сталкиваются с непониманием того, где именно хранятся настройки отчета. Возникает ситуация, когда при выгрузке внешней обработки «движок» отчета сохраняется, но все привычные пользователю настройки («варианты») пропадают. Давайте разберем, как устроены эти механизмы и как правильно переносить настройки между базами.
Для начала важно провести четкую грань между двумя понятиями:
Конфигураторе. Сюда входят Схема компоновки данных, запросы, поля, параметры и связи наборов данных. Когда вы сохраняете внешнюю обработку в файл, вы сохраняете именно эту структуру.1С:Предприятие. Вариант включает в себя текущий набор группировок, отборов, порядок колонок и их видимость.Варианты отчетов хранятся в базе данных, а не внутри файла внешней обработки. Платформа использует Хранилище настроек, чтобы привязывать конкретные конфигурации колонок и фильтров к пользователю или к предопределенным элементам. Именно поэтому при переносе внешней обработки в другую базу вы получаете «чистый» отчет без пользовательских пресетов.
Если вам нужно перенести настройки отчета, которые вы видите у пользователя, следуйте этим шагам:
1С:Предприятие в той базе, где эти настройки уже существуют..xml.Важное примечание: Никогда не пытайтесь загружать файлы настроек (.xml) через Конфигуратор. Конфигуратор предназначен для изменения метаданных, а настройки вариантов — это данные информационной базы. Загрузка должна происходить только в режиме 1С:Предприятие.
Иногда возникает необходимость задавать параметры отчета программно, например, при открытии или при добавлении новых пользователей. Рассмотрим, как это можно реализовать с помощью кода 1С.
Для работы с вариантами можно обращаться к справочнику СохраненныеНастройки. В следующем примере мы рассмотрим, как можно программно назначить определенный вариант отчета:
// Пример программного поиска и установки варианта отчета
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭтотОбъект.АналитическийОтчет = Справочники.ПроизвольныеОтчеты.НайтиПоКоду("000000000001");
ЭтотОбъект.НаименованиеВарианта = "МойВариантОтчета";
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СохраненныеНастройки.Ссылка
|ИЗ
| Справочник.СохраненныеНастройки КАК СохраненныеНастройки
|ГДЕ
| СохраненныеНастройки.Наименование = &Наименование
| И СохраненныеНастройки.НастраиваемыйОбъект = &НастраиваемыйОбъект";
Запрос.УстановитьПараметр("Наименование", ЭтотОбъект.НаименованиеВарианта);
Запрос.УстановитьПараметр("НастраиваемыйОбъект", ЭтотОбъект.АналитическийОтчет);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
ЭтотОбъект.ВариантОтчета = Выборка.Ссылка;
КонецЕсли;
КонецПроцедуры
Если вы заметили, что при одинаковой внешней обработке отчеты в разных базах показывают разный набор полей, причины могут быть следующими:
Рекомендация: Для анализа логики отчета всегда начинайте с открытия Схемы компоновки данных в Конфигураторе. Там вы увидите все доступные поля и запросы. Если же вам нужно понять, как отчет настроен именно «для пользователя», открывайте его в Предприятии, переходите в панель настроек (кнопка «Расширенный») и изучайте структуру группировок и отборов, которые были применены в конкретном варианте.