За 2 года работы у клиента с конфигурацией «Управление торговлей 11» накопилось немалое число внешних отчетов пользователей (около 30). Соответственно пользователям стало трудно ориентироваться в таком количестве отчетов, поэтому было принято решение сгруппировать отчеты по смыслу и перенести часть отчетов во вложенные схемы компоновки данных. Статья будет полезна тем, кто только начинает знакомиться с компоновкой данных. Примеры из статьи работают как УТ 11 так и в УТ 3.0 (для Украины).
Пример без программирования
Для начала давайте рассмотрим способ вывода отчета из вложенной схемы без программирования. У нас есть два отчета:
&НаКлиенте
Процедура ОстаткиНоменклатуры(Команда)
СформироватьОтчетОстаткиНоменклатуры();
КонецПроцедуры
&НаСервере
Процедура СформироватьОтчетОстаткиНоменклатуры()
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
СхемаКомпоновкиДанных = ОбработкаОбъект.ПолучитьМакет("Макет");
ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровкиКД = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
ПроцессорКомпоновкиДанны = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанны.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанны);
КонецПроцедуры
&НаКлиенте
Процедура ЦеныНоменклатуры(Команда)
СформироватьОтчетЦеныНоменклатуры();
КонецПроцедуры
&НаСервере
Процедура СформироватьОтчетЦеныНоменклатуры()
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
СхемаКомпоновкиДанных = ОбработкаОбъект.ПолучитьМакет("Макет");
ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
ВложеннаяСКД = СхемаКомпоновкиДанных.ВложенныеСхемыКомпоновкиДанных.Найти("Отчет1");
Если ВложеннаяСКД = Неопределено Тогда
ВызватьИсключение НСтр("ru=""Не удалось получить вложенную схему компоновки данных.""");
Возврат;
КонецЕсли;
Настройки = ВложеннаяСКД.Схема.НастройкиПоУмолчанию;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровкиКД = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(ВложеннаяСКД.Схема, Настройки);
ПроцессорКомпоновкиДанны = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанны.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанны);
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua