Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Несколько слов о вложенных схемах компоновки данных          
Vofka Подменю пользователя
сообщение 19.02.13, 15:04
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

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

Пример без программирования

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

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


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



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



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



Программный вывод отчета с вложенными схемами

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



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

&НаКлиенте
Процедура ОстаткиНоменклатуры(Команда)
СформироватьОтчетОстаткиНоменклатуры();
КонецПроцедуры

&НаСервере
Процедура СформироватьОтчетОстаткиНоменклатуры()

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

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

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

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

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

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

КонецПроцедуры


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



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

&НаКлиенте
Процедура ЦеныНоменклатуры(Команда)
СформироватьОтчетЦеныНоменклатуры();
КонецПроцедуры

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

ВложеннаяСКД = СхемаКомпоновкиДанных.ВложенныеСхемыКомпоновкиДанных.Найти("Отчет1");

Если ВложеннаяСКД = Неопределено Тогда
  ВызватьИсключение НСтр("ru=""Не удалось получить вложенную схему компоновки данных.""");
  Возврат;
КонецЕсли;

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

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

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

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

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

КонецПроцедуры


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

[необходимо зарегистрироваться для просмотра ссылки]

Спасибо сказали: Petre,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 12:24
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!