|
Печатная форма с иерархией номенклатуры | ☑ | ||
---|---|---|---|---|
0
Max57
25.09.23
✎
12:21
|
Здравствуйте, уважаемые формучане. Подскажите, пожалуйста, как мне модифицировать данную процедуры печати внешней печатной формы, чтобы выводилась иерархия номенклатуры?
Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектПечати, ПараметрыПечати) ДопРеквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Склад"); ТабличныйДокумент = Новый ТабличныйДокумент; МакетОбработки = ПолучитьМакет("МакетРаспоряжениеНаОтгрузку"); ОбластьЗаголовка = МакетОбработки.ПолучитьОбласть("Заголовок"); ОбластьПоставщик = МакетОбработки.ПолучитьОбласть("Поставщик"); ОбластьПокупатель = МакетОбработки.ПолучитьОбласть("Покупатель"); ОбластьШапкиТаблицы = МакетОбработки.ПолучитьОбласть("ШапкаТаблицы"); ОбластьСтроки = МакетОбработки.ПолучитьОбласть("СтрокаТаблицы"); ОбластьОтветственный= МакетОбработки.ПолучитьОбласть("Ответственный"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказКлиентаТовары.Ссылка КАК Ссылка, | ЗаказКлиентаТовары.Количество КАК Количество, | ЗаказКлиентаТовары.НомерСтроки КАК НомерСтроки, | ЗаказКлиентаТовары.Номенклатура КАК Номенклатура, | ЗаказКлиентаТовары.Количество * ЗаказКлиентаТовары.Номенклатура.ОбъемЧислитель КАК КоличествоШт, | ЗаказКлиентаТовары.Ссылка.Партнер КАК Партнер, | ЗаказКлиентаТовары.Ссылка.Организация КАК Организация |ПОМЕСТИТЬ ВТ_ТЧ_Товары |ИЗ | Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары |ГДЕ | ЗаказКлиентаТовары.Ссылка В(&МассивОбъектов) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НоменклатураДополнительныеРеквизиты.Значение КАК Значение, | НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка |ПОМЕСТИТЬ ВТ_Номенклатура_ДопРек |ИЗ | Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты |ГДЕ | НоменклатураДополнительныеРеквизиты.Свойство = &Свойство |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ТЧ_Товары.Ссылка КАК Ссылка, | ВТ_ТЧ_Товары.Количество КАК Количество, | ВТ_ТЧ_Товары.НомерСтроки КАК НомерСтроки, | ВТ_ТЧ_Товары.Номенклатура КАК Номенклатура, | ВТ_ТЧ_Товары.КоличествоШт КАК КоличествоШт, | ВТ_ТЧ_Товары.Партнер КАК Партнер, | ВТ_ТЧ_Товары.Организация КАК Организация, | ВТ_Номенклатура_ДопРек.Значение КАК Склад |ИЗ | ВТ_ТЧ_Товары КАК ВТ_ТЧ_Товары | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Номенклатура_ДопРек КАК ВТ_Номенклатура_ДопРек | ПО ВТ_ТЧ_Товары.Номенклатура = ВТ_Номенклатура_ДопРек.Ссылка"; Запрос.УстановитьПараметр("Свойство",ДопРеквизит); Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Для каждого Ссылка Из МассивОбъектов Цикл ОбластьПоставщик.Параметры.Поставщик = Ссылка.Организация; ОбластьПокупатель.Параметры.Покупатель = Ссылка.Партнер; ТабличныйДокумент.Вывести(ОбластьЗаголовка); ТабличныйДокумент.Вывести(ОбластьПоставщик); ТабличныйДокумент.Вывести(ОбластьПокупатель); ТабличныйДокумент.Вывести(ОбластьШапкиТаблицы); Отбор = Новый Структура; Отбор.Вставить("Ссылка",Ссылка); Выборка = РезультатЗапроса.НайтиСтроки(Отбор); Для каждого СтрокаТЧ Из Выборка Цикл ЗаполнитьЗначенияСвойств(ОбластьСтроки.Параметры, СтрокаТЧ); ТабличныйДокумент.Вывести(ОбластьСтроки); КонецЦикла; ТабличныйДокумент.Вывести(ОбластьОтветственный); КонецЦикла; ТабличныйДокумент.АвтоМасштаб = Истина; Возврат ТабличныйДокумент; КонецФункции // СформироватьПечатнуюФорму () |
|||
1
Max57
25.09.23
✎
12:22
|
Функцию*
|
|||
2
Kigo_Kigo
25.09.23
✎
12:26
|
|ВЫБРАТЬ
| НоменклатураДополнительныеРеквизиты.Значение КАК Значение, | НоменклатураДополнительныеРеквизиты.Родитель КАК Родитель, | НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка |ПОМЕСТИТЬ ВТ_Номенклатура_ДопРек |ИЗ | Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты |ГДЕ | НоменклатураДополнительныеРеквизиты.Свойство = &Свойство |; не? |
|||
3
Kigo_Kigo
25.09.23
✎
12:29
|
вот такое извращение есть в типовых
"ВЫБРАТЬ | р.ВНА КАК ВНА, | 0 КАК Приоритет, | р.ВНА КАК Родитель |ПОМЕСТИТЬ втРодителиВНА |ИЗ | втДляРодителей КАК р | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | р.ВНА, | 1, | р.ВНА.Родитель |ИЗ | втДляРодителей КАК р |ГДЕ | НЕ р.ВНА.Родитель ЕСТЬ NULL | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | р.ВНА, | 2, | р.ВНА.Родитель.Родитель |ИЗ | втДляРодителей КАК р |ГДЕ | НЕ р.ВНА.Родитель.Родитель ЕСТЬ NULL | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | р.ВНА, | 3, | р.ВНА.Родитель.Родитель.Родитель |ИЗ | втДляРодителей КАК р |ГДЕ | НЕ р.ВНА.Родитель.Родитель.Родитель ЕСТЬ NULL | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | р.ВНА, | 4, | р.ВНА.Родитель.Родитель.Родитель.Родитель |ИЗ | втДляРодителей КАК р |ГДЕ | НЕ р.ВНА.Родитель.Родитель.Родитель.Родитель ЕСТЬ NULL | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | р.ВНА, | 5, | р.ВНА.Родитель.Родитель.Родитель.Родитель.Родитель |ИЗ | втДляРодителей КАК р |ГДЕ | НЕ р.ВНА.Родитель.Родитель.Родитель.Родитель.Родитель ЕСТЬ NULL | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | р.ВНА, | 6, | р.ВНА.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель |ИЗ | втДляРодителей КАК р |ГДЕ | НЕ р.ВНА.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель ЕСТЬ NULL | |ИНДЕКСИРОВАТЬ ПО | Родитель"; |
|||
4
Max57
25.09.23
✎
13:01
|
(3) Я сделал такой запрос. Скажите, пожалуйста, он имеет смысл? Как на печатной форме добавить возможность, чтобы можно было разворачивать строки как в консоли запросов?
ВЫБРАТЬ ЗаказКлиентаТовары.Ссылка КАК Ссылка, ЗаказКлиентаТовары.Количество КАК Количество, ЗаказКлиентаТовары.НомерСтроки КАК НомерСтроки, ЗаказКлиентаТовары.Номенклатура КАК Номенклатура, ЗаказКлиентаТовары.Количество * ЗаказКлиентаТовары.Номенклатура.ОбъемЧислитель КАК КоличествоШт, ЗаказКлиентаТовары.Ссылка.Партнер КАК Партнер, ЗаказКлиентаТовары.Ссылка.Организация КАК Организация, ЗаказКлиентаТовары.Номенклатура.Родитель КАК НоменклатураРодитель, ЗаказКлиентаТовары.Номенклатура.Родитель.Родитель КАК НоменклатураРодительРодитель, ЗаказКлиентаТовары.Номенклатура.Родитель.Родитель.Родитель КАК НоменклатураРодительРодительРодитель, ЗаказКлиентаТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель КАК НоменклатураРодительРодительРодительРодитель ПОМЕСТИТЬ ВТ_ТЧ_Товары ИЗ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары ГДЕ ЗаказКлиентаТовары.Ссылка В(&МассивОбъектов) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НоменклатураДополнительныеРеквизиты.Значение КАК Значение, НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка ПОМЕСТИТЬ ВТ_Номенклатура_ДопРек ИЗ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты ГДЕ НоменклатураДополнительныеРеквизиты.Свойство = &Свойство ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ТЧ_Товары.НоменклатураРодительРодительРодительРодитель КАК ВидПродукции, ВТ_ТЧ_Товары.НоменклатураРодительРодительРодитель КАК ТипПокрытия, ВТ_ТЧ_Товары.НоменклатураРодительРодитель КАК Диаметр, ВТ_ТЧ_Товары.НоменклатураРодитель КАК Ячейка, ВТ_ТЧ_Товары.Ссылка КАК Ссылка, ВТ_ТЧ_Товары.Количество КАК Количество, ВТ_ТЧ_Товары.НомерСтроки КАК НомерСтроки, ВТ_ТЧ_Товары.Номенклатура КАК Номенклатура, ВТ_ТЧ_Товары.КоличествоШт КАК КоличествоШт, ВТ_ТЧ_Товары.Партнер КАК Партнер, ВТ_ТЧ_Товары.Организация КАК Организация, ВТ_Номенклатура_ДопРек.Значение КАК Склад ИЗ ВТ_ТЧ_Товары КАК ВТ_ТЧ_Товары ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Номенклатура_ДопРек КАК ВТ_Номенклатура_ДопРек ПО (ВТ_ТЧ_Товары.Номенклатура = ВТ_Номенклатура_ДопРек.Ссылка) ИТОГИ ПО ВидПродукции, ТипПокрытия, Диаметр, Ячейка |
|||
5
АгентБезопасной Нацио
25.09.23
✎
13:24
|
>чтобы можно было разворачивать строки как в консоли запросов
прочитать про НачатьГруппировкуСтрок |
|||
6
АгентБезопасной Нацио
25.09.23
✎
13:27
|
(3) Действительно, извращение. лучше уж тогда методом ildarovich'а ("транзитивное замыкание" на инфостарте)
|
|||
7
lodger
25.09.23
✎
13:37
|
на СКД перепиши, она сама иерархию нарисует более оптимальным образом.
|
|||
8
lEvGl
25.09.23
✎
15:08
|
итоги по иерархии или что то такое
|
|||
9
Max57
26.09.23
✎
10:21
|
(3) (6) (7) (8) Спасибо за советы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |