| 
    
            
         
         | 
    
  | 
Печатная форма с иерархией номенклатуры | ☑ | ||
|---|---|---|---|---|
| 
    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) Спасибо за советы.     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |