Каталог решений - Несколько слов о вложенных схемах компоновки данных

Несколько слов о вложенных схемах компоновки данных

Несколько слов о вложенных схемах компоновки данных

В наличии

За 2 года работы предприятия с конфигурацией «Управление торговлей 11» у нас накопилось немалое число внешних отчетов пользователей (около 30). Соответственно пользователям стало трудно ориентироваться в таком количестве отчетов, поэтому было принято решение сгруппировать отчеты по смыслу и перенести часть отчетов во вложенные схемы компоновки данных. Статья будет полезна тем, кто только начинает знакомиться с компоновкой данных. Примеры из статьи работают как УТ 11 так и в УТ 3.0 (для Украины).

Категория:

Описание

ПРИМЕР БЕЗ ПРОГРАММИРОВАНИЯ

Для начала давайте рассмотрим способ вывода отчета из вложенной схемы без программирования. У нас есть два отчета:

  • Остатки товаров;
  • Цены номенклатуры;

На основании двух отчетов необходимо составить один отчет, где отчет «Цены номенклатуры» будут вызываться как вариант отчета «Остатки товаров» (пример не совсем по смыслу, но демонстрирует возможности платформы).
Итак, сначала откроем отчет «Цены номенклатуры» в конфигураторе и сохраним схему отчета в файл.

Сохранение схемы компоновки данных в файл

Теперь перейдем в отчет «Остатки номенклатуры», откроем основную схему компоновки данных на вкладке «Вложенные схемы». После добавления новой вложенной схемы, загрузим сохраненную схему. Хочу обратить внимание на то, что нельзя изменять имя и заголовок отчета.

Вложенная схема компоновки данных

Создадим новый вариант отчета, дадим ему имя «Цены номенклатуры», подключим вложенный отчет. Должно выйти примерно так, как на картинке.

Настройки варианта отчета СКД

Запустим отчет в режиме «1С Предприятия» и убедимся, что нам доступны 2 варианта отчета.

Отчет в режиме «1С Пердприятия»

ПРОГРАММНЫЙ ВЫВОД ОТЧЕТА С ВЛОЖЕННЫМИ СХЕМАМИ

Хорошо, теперь заделаем то же, но для программного вывода отчета. Задача та же, но отчет будем формировать программно. Такая ситуация может возникнуть например при вызове отчета из обработки.

Программный вызов отчет из обработки

Следующий код выводит отчет из макета обработки:

&НаКлиенте
Процедура ОстаткиНоменклатуры(Команда)
  СформироватьОтчетОстаткиНоменклатуры();
КонецПроцедуры
&НаСервере
Процедура СформироватьОтчетОстаткиНоменклатуры()
  ОбработкаОбъект   = РеквизитФормыВЗначение("Объект");
  СхемаКомпоновкиДанных  = ОбработкаОбъект.ПолучитьМакет("Макет");
  ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");

  Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

  КомпоновщикМакета    = Новый КомпоновщикМакетаКомпоновкиДанных;
  ДанныеРасшифровкиКД   = Новый ДанныеРасшифровкиКомпоновкиДанных;
  МакетКомпоновки    = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);

  ПроцессорКомпоновкиДанны    = Новый ПроцессорКомпоновкиДанных;
  ПроцессорКомпоновкиДанны.Инициализировать(МакетКомпоновки);

  ПроцессорВывода    = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

  ПроцессорВывода.УстановитьДокумент(Результат);
  ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанны);
КонецПроцедуры

Перейдем к выводу вложенной схемы. Давайте посмотрим отладчиком, где ее искать.

Вложенная схема компоновки данных в отладчике

Вот она, во вложенных схемах компоновки данных. Дело за малым, осталось программно вывести результат работы процессора компоновки в форму.

&НаКлиенте
Процедура ЦеныНоменклатуры(Команда)
  СформироватьОтчетЦеныНоменклатуры();
КонецПроцедуры
 
&НаСервере
Процедура СформироватьОтчетЦеныНоменклатуры()
  ОбработкаОбъект 	= РеквизитФормыВЗначение("Объект");
  СхемаКомпоновкиДанных 	= ОбработкаОбъект.ПолучитьМакет("Макет");
  ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
	
  ВложеннаяСКД = СхемаКомпоновкиДанных.ВложенныеСхемыКомпоновкиДанных.Найти("Отчет1");
	
  Если ВложеннаяСКД = Неопределено Тогда
    ВызватьИсключение НСтр("ru=""Не удалось получить вложенную схему компоновки данных.""");
    Возврат;
  КонецЕсли;
	
  Настройки = ВложеннаяСКД.Схема.НастройкиПоУмолчанию;
	
  КомпоновщикМакета 			= Новый КомпоновщикМакетаКомпоновкиДанных;
  ДанныеРасшифровкиКД			= Новый ДанныеРасшифровкиКомпоновкиДанных;
  МакетКомпоновки				= КомпоновщикМакета.Выполнить(ВложеннаяСКД.Схема, Настройки);
	
  ПроцессорКомпоновкиДанны = Новый ПроцессорКомпоновкиДанных;
  ПроцессорКомпоновкиДанны.Инициализировать(МакетКомпоновки);
	
  ПроцессорВывода	= Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	
  ПроцессорВывода.УстановитьДокумент(Результат);
  ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанны);
КонецПроцедуры

В заключение скажу, вложенные схемы – прекрасный механизм, который позволяет гибко использовать функционал схемы компоновки данных.

Статья написана по материалам сайта avtomat.biz

has been added to your cart:
Оформление заказа