![]() |
|
как наиболее оптимально можно программно вывести отчет на скд с группировками? | ☑ | ||
---|---|---|---|---|
0
gabd_marat
08.07.17
✎
14:43
|
Народ, подскажите, как можно наиболее оптимально вывести отчет с группировками программно, группировки находятся в реквизите отчета в виде таблицы значений. Простая группировка и вывод отчета есть:
&НаСервере Процедура СформироватьОтчетНаСервере() СхемаКомпоновкиДанных = Отчеты.МТ_ОстаткиТоваровНаСкладах.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Параметр = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Организация")); мОбъект = РеквизитФормыВзначение("Отчет"); Параметр.Значение = мОбъект.Организация; Параметр.Использование = Истина; Параметр = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Склад")); Если Параметр <> Неопределено Тогда Параметр.Значение = мОбъект.Склад; Параметр.Использование = Истина; КонецЕсли; Параметр = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецДата")); Если Параметр <> Неопределено Тогда Параметр.Значение = Новый Граница(КонецДня(мОбъект.КонецПериода),ВидГраницы.Включая); Параметр.Использование = Истина; КонецЕсли; ТекНастройкиКомпоновщика = Отчет.КомпоновщикНастроек.Настройки; ТекНастройкиКомпоновщика.Структура.Очистить(); //добавить группировку ГруппировкаПоСкладу = ТекНастройкиКомпоновщика.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ГруппировкаПоСкладу.Имя = "Номенклатура.ВидНоменклатуры"; ГруппировкаПоСкладу.Использование = Истина; //созданная группировка по полю "Склад" ПолеГруппировкиСклад = ГруппировкаПоСкладу.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировкиСклад.Использование = Истина; ПолеГруппировкиСклад.Поле = Новый ПолеКомпоновкиДанных("Номенклатура.ВидНоменклатуры"); ПолеГруппировкиСклад.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия; ПолеГруппировкиСклад.ТипДополнения = ТипДополненияПериодаКомпоновкиДанных.БезДополнения; //добавить выводимые поля в группировке: склад и количество остаток для данной группировки ВыбранноеПоле = ГруппировкаПоСкладу.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Номенклатура.ВидНоменклатуры"); //ВыбранноеПоле = ГруппировкаПоСкладу.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); //ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток"); //добавим детальные записи как подгруппу в "Склад". Все отличие только в том, что нет группировки ДетальныеЗаписи = ГруппировкаПоСкладу.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ДетальныеЗаписи.Имя = "Детальные"; ДетальныеЗаписи.Использование = Истина; //добавить выводимые поля в детальных записях: Номенклатуру и количество остаток ВыбранноеПоле = ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Номенклатура"); ВыбранноеПоле = ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток"); ДанныеРасшифровкиОтчета = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Отчет.КомпоновщикНастроек.Настройки, ДанныеРасшифровкиОтчета); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ,ДанныеРасшифровкиОтчета); ТаблицаРезультата = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТаблицаРезультата); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ЭтаФорма.Результат.Очистить(); ЭтаФорма.Результат.Вывести(ТаблицаРезультата); ЭтаФорма.Результат.ТолькоПросмотр = Истина; ЭтаФорма.Результат.ПоказатьУровеньГруппировокСтрок(2); ЭтаФорма.Результат.ФиксацияСлева = 1; ЭтаФорма.Результат.ФиксацияСверху = 6; ТаблицаРезультата.Очистить(); КонецПроцедуры |
|||
1
gabd_marat
08.07.17
✎
14:44
|
Коментарии не подправил группировка по виду номенклатуры и детальные записи(номенклатура, количество остаток)
|
|||
2
gabd_marat
08.07.17
✎
14:45
|
Перебирать таблицу значений и добавлять элементы группировки или можно сразу через структуру создать группировки?
|
|||
3
craxx
08.07.17
✎
14:45
|
(0) Вся проблема в том, как ты хочешь это вывести. У СКД древообразная структура вывода, в группировке может быть не одно поле, плюс может быть несколько различных группировок на одном уровне. А так, создавай Дерево значений и оттуда уже грузи, но ИМХО, извращение.
|
|||
4
gabd_marat
08.07.17
✎
14:56
|
(3) Задача состоит в том, что пользователь может выбрать любое количество реквизитов номенклатуры в качестве группировки, в детальных записях будет номенклатура и количествоостаток. Выбор группировки осуществляется через форму и сохраняется в реквизите отчета в виде таблицы значений(здесь походу надо исправить в дерево значений?)
|
|||
5
craxx
08.07.17
✎
14:59
|
(4) чем не устраивает поле типовой настройки структуры?
|
|||
6
gabd_marat
08.07.17
✎
15:02
|
(5)задание сказали сделать так
|
|||
7
Cyberhawk
08.07.17
✎
15:09
|
(6) Кто дал задание (в какой он должности)? А ты?
|
|||
8
gabd_marat
08.07.17
✎
15:26
|
(6) тестовое задание) устраиваюсь на работу)
Создать отчет по остаткам товара на складах со следующими возможностями: 1) Выбор пользователем любых реквизитов справочника Номенклатура 2) Формирование отчета с группировкой по выбранным реквизитам в следующем виде: Реквизит 1 |– Реквизит 2 |– Реквизит 3 |– ... Для реализации данных возможностей пользоваться настройкой структуры, которую предоставляет СКД, нельзя. Необходимо реализовать одним из двух вариантов: 1) Программно предоставить возможность выбора реквизитов, программно сформировать отчет с использованием макета. 2) (предпочтительный) Использовать для вывода отчета СКД, но при этом программно предоставить возможность выбора реквизитов, программно произвести настройку структуры СКД. Допускается использование процедур и функций типового механизма печати для программной работы со структурой компоновки данных. Для реализации первой возможности необходимо через Метаданные получить список реквизитов и дать возможность выбора |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |