|
УТ 11.1 Обход выборки по группировкам с иерархией. | ☑ | ||
---|---|---|---|---|
0
drey1912
16.02.15
✎
16:20
|
Здравствуйте, есть такой запрос
ВЫБРАТЬ ОтборРазмещениеТоваров.Ссылка КАК Ссылка, ОтборРазмещениеТоваров.Дата КАК Дата, ОтборРазмещениеТоваров.Номер КАК Номер, ОтборРазмещениеТоваров.ВидОперации КАК ВидОперации, ПРЕДСТАВЛЕНИЕ(ОтборРазмещениеТоваров.ЗонаОтгрузки) КАК ЗонаОтгрузкиПредставление, ПРЕДСТАВЛЕНИЕ(ОтборРазмещениеТоваров.ЗонаПриемки) КАК ЗонаПриемкиПредставление, ПРЕДСТАВЛЕНИЕ(ОтборРазмещениеТоваров.РабочийУчасток) КАК РабочийУчастокПредставление, ПРЕДСТАВЛЕНИЕ(ОтборРазмещениеТоваров.Склад) КАК СкладПредставление, ПРЕДСТАВЛЕНИЕ(ОтборРазмещениеТоваров.Помещение) КАК ПомещениеПредставление, ОтборРазмещениеТоваров.Исполнитель.ФизическоеЛицо КАК Исполнитель, ОтборРазмещениеТоваров.Распоряжение КАК Распоряжение, ПРЕДСТАВЛЕНИЕ(ОтборРазмещениеТоваров.Распоряжение) КАК РаспоряжениеПредставление, ОтборРазмещениеТоваров.Распоряжение.Дата КАК РаспоряжениеДата, ОтборРазмещениеТоваров.Распоряжение.Номер КАК РаспоряжениеНомер, ЕСТЬNULL(ОтборРазмещениеТоваров.Распоряжение.ОтгрузкаПоЗаданиюНаПеревозку, ЛОЖЬ) КАК ОтгрузкаПоЗаданиюНаПеревозку, ОтборРазмещениеТоваров.Распоряжение.ПорядокДоставки КАК ПорядокДоставки, ПРЕДСТАВЛЕНИЕ(ОтборРазмещениеТоваров.Распоряжение.ЗаданиеНаПеревозку) КАК ЗаданиеНаПеревозкуПредставление, ОтборРазмещениеТоваров.Распоряжение.ЗаданиеНаПеревозку.Номер КАК ЗаданиеНаПеревозкуНомер, ОтборРазмещениеТоваров.Распоряжение.ЗаданиеНаПеревозку.Дата КАК ЗаданиеНаПеревозкуДата, ПРЕДСТАВЛЕНИЕ(ОтборРазмещениеТоваров.Распоряжение.Распоряжение) КАК ОснованиеПредставление, ОтборРазмещениеТоваров.Распоряжение.Распоряжение.Номер КАК ОснованиеНомер, ОтборРазмещениеТоваров.Распоряжение.Распоряжение.Дата КАК ОснованиеДата ИЗ Документ.ОтборРазмещениеТоваров КАК ОтборРазмещениеТоваров ГДЕ ОтборРазмещениеТоваров.Ссылка В(&МассивОбъектов) УПОРЯДОЧИТЬ ПО Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОтборРазмещениеТоваровТоварыОтбор.Ссылка КАК Ссылка, ОтборРазмещениеТоваровТоварыОтбор.Номенклатура КАК Номенклатура, ОтборРазмещениеТоваровТоварыОтбор.Характеристика КАК Характеристика, ОтборРазмещениеТоваровТоварыОтбор.Серия КАК Серия, ОтборРазмещениеТоваровТоварыОтбор.Упаковка КАК Упаковка, ОтборРазмещениеТоваровТоварыОтбор.КоличествоУпаковок КАК КоличествоПлан, ОтборРазмещениеТоваровТоварыОтбор.КоличествоУпаковокОтобрано КАК КоличествоУпаковокОтобрано, ОтборРазмещениеТоваровТоварыОтбор.Ячейка КАК ЯчейкаПлан, ОтборРазмещениеТоваровТоварыОтбор.НомерСтроки КАК НомерСтроки ПОМЕСТИТЬ ВТОТБОР ИЗ Документ.ОтборРазмещениеТоваров.ТоварыОтбор КАК ОтборРазмещениеТоваровТоварыОтбор ГДЕ ОтборРазмещениеТоваровТоварыОтбор.Ссылка В(&МассивОбъектов) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОтборРазмещениеТоваровТоварыРазмещение.Ссылка, ОтборРазмещениеТоваровТоварыРазмещение.Номенклатура, ОтборРазмещениеТоваровТоварыРазмещение.Характеристика, ОтборРазмещениеТоваровТоварыРазмещение.Серия, ОтборРазмещениеТоваровТоварыРазмещение.Упаковка, ОтборРазмещениеТоваровТоварыРазмещение.КоличествоУпаковок КАК КоличествоПлан, ОтборРазмещениеТоваровТоварыРазмещение.КоличествоУпаковокРазмещено, ОтборРазмещениеТоваровТоварыРазмещение.Ячейка КАК ЯчейкаФакт, ОтборРазмещениеТоваровТоварыРазмещение.НомерСтроки КАК НомерСтроки ПОМЕСТИТЬ ВТРАЗМЕЩЕНИЕ ИЗ Документ.ОтборРазмещениеТоваров.ТоварыРазмещение КАК ОтборРазмещениеТоваровТоварыРазмещение ГДЕ ОтборРазмещениеТоваровТоварыРазмещение.Ссылка В(&МассивОбъектов) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЕСТЬNULL(ВТОТБОР.Ссылка, ВТРАЗМЕЩЕНИЕ.Ссылка) КАК Ссылка, ЕСТЬNULL(ВТОТБОР.Номенклатура, ВТРАЗМЕЩЕНИЕ.Номенклатура) КАК НоменклатураПредставление, ЕСТЬNULL(ВТОТБОР.Характеристика, ВТРАЗМЕЩЕНИЕ.Характеристика) КАК ХарактеристикаПредставление, ЕСТЬNULL(ВТОТБОР.Серия, ВТРАЗМЕЩЕНИЕ.Серия) КАК СерияПредставление, ЕСТЬNULL(ВТОТБОР.Упаковка, ВТРАЗМЕЩЕНИЕ.Упаковка) КАК УпаковкаПредставление, ЕСТЬNULL(ВТОТБОР.КоличествоПлан, ВТРАЗМЕЩЕНИЕ.КоличествоПлан) КАК КоличествоПлан, ЕСТЬNULL(ВТОТБОР.КоличествоУпаковокОтобрано, 0) КАК КоличествоУпаковокОтобрано, ЕСТЬNULL(ВТРАЗМЕЩЕНИЕ.КоличествоУпаковокРазмещено, 0) КАК КоличествоУпаковокРазмещено, ЕСТЬNULL(ВТОТБОР.НомерСтроки, ВТРАЗМЕЩЕНИЕ.НомерСтроки) КАК НомерСтроки ПОМЕСТИТЬ ВТНоменклатура ИЗ ВТОТБОР КАК ВТОТБОР ПОЛНОЕ СОЕДИНЕНИЕ ВТРАЗМЕЩЕНИЕ КАК ВТРАЗМЕЩЕНИЕ ПО ВТОТБОР.Ссылка = ВТРАЗМЕЩЕНИЕ.Ссылка И ВТОТБОР.Номенклатура = ВТРАЗМЕЩЕНИЕ.Номенклатура И ВТОТБОР.Характеристика = ВТРАЗМЕЩЕНИЕ.Характеристика И ВТОТБОР.Серия = ВТРАЗМЕЩЕНИЕ.Серия И ВТОТБОР.Упаковка = ВТРАЗМЕЩЕНИЕ.Упаковка И ВТОТБОР.КоличествоПлан = ВТРАЗМЕЩЕНИЕ.КоличествоПлан И ВТОТБОР.НомерСтроки = ВТРАЗМЕЩЕНИЕ.НомерСтроки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТНоменклатура.Ссылка КАК Ссылка, ВТНоменклатура.НоменклатураПредставление КАК НоменклатураПредставление, ВТНоменклатура.ХарактеристикаПредставление КАК ХарактеристикаПредставление, ВТНоменклатура.СерияПредставление КАК СерияПредставление, ВТНоменклатура.НомерСтроки, ТоварыВЯчейкахОстатки.Ячейка, ТоварыВЯчейкахОстатки.ВНаличииОстаток, ТоварыВЯчейкахОстатки.Упаковка ПОМЕСТИТЬ ВТАдреса ИЗ ВТНоменклатура КАК ВТНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВЯчейках.Остатки КАК ТоварыВЯчейкахОстатки ПО ВТНоменклатура.НоменклатураПредставление = ТоварыВЯчейкахОстатки.Номенклатура И ВТНоменклатура.ХарактеристикаПредставление = ТоварыВЯчейкахОстатки.Характеристика И ВТНоменклатура.СерияПредставление = ТоварыВЯчейкахОстатки.Серия ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТНоменклатура.Ссылка КАК Ссылка, ВТНоменклатура.НоменклатураПредставление КАК НоменклатураПредставление, ВТНоменклатура.ХарактеристикаПредставление КАК ХарактеристикаПредставление, ВТНоменклатура.СерияПредставление КАК СерияПредставление, ВТНоменклатура.УпаковкаПредставление КАК УпаковкаПредставление, ВТНоменклатура.КоличествоПлан, ВТНоменклатура.КоличествоУпаковокОтобрано, ВТНоменклатура.КоличествоУпаковокРазмещено, ВТНоменклатура.НомерСтроки, ВТАдреса.Ячейка КАК Ячейка, ВТАдреса.ВНаличииОстаток, ВТАдреса.Упаковка КАК Упаковка, ВТОТБОР.ЯчейкаПлан КАК ЯчейкаПлан, ВТРАЗМЕЩЕНИЕ.ЯчейкаФакт КАК ЯчейкаФакт ИЗ ВТНоменклатура КАК ВТНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ ВТАдреса КАК ВТАдреса ПО ВТНоменклатура.Ссылка = ВТАдреса.Ссылка И ВТНоменклатура.НоменклатураПредставление = ВТАдреса.НоменклатураПредставление И ВТНоменклатура.ХарактеристикаПредставление = ВТАдреса.ХарактеристикаПредставление И ВТНоменклатура.СерияПредставление = ВТАдреса.СерияПредставление И ВТНоменклатура.НомерСтроки = ВТАдреса.НомерСтроки, ВТОТБОР КАК ВТОТБОР, ВТРАЗМЕЩЕНИЕ КАК ВТРАЗМЕЩЕНИЕ ИТОГИ ПО Ссылка, НоменклатураПредставление, ХарактеристикаПредставление, СерияПредставление Требуется из него заполнить печатную форму, но не получается обойти все группировки... Подскажите как лучше? |
|||
1
drey1912
16.02.15
✎
16:22
|
Пробовал так
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов); //Нужно напечатать номер и дату накладной, но к накладным может не быть доступа УстановитьПривилегированныйРежим(Истина); Результаты = Запрос.ВыполнитьПакет(); УстановитьПривилегированныйРежим(Ложь); ВыборкаПоДокументам = Результаты[0].Выбрать(); ВыборкаПоТабличнымЧастям = Результаты[5].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоТабличнымЧастям.Следующий() Цикл Сообщить(ВыборкаПоТабличнымЧастям.Ссылка,); ВыборкаПоНоменклатуре = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НоменклатураПредставление"); Пока ВыборкаПоНоменклатуре.Следующий() Цикл Сообщить("-" + ВыборкаПоНоменклатуре.НоменклатураПредставление); ВыборкаПоХарактеристике = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ХарактеристикаПредставление"); ВыборкаПоУпаковке = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "УпаковкаПредставление"); Пока ВыборкаПоУпаковке.Следующий() Цикл Сообщить("-" + ВыборкаПоНоменклатуре.УпаковкаПредставление); КонецЦикла; КонецЦикла; КонецЦикла; Возврат НЕОПРЕДЕЛЕНО; Но нормального ничего из этого не вышло) |
|||
2
Fish
16.02.15
✎
17:04
|
Всё не читал, но для обхода по группировкам нужна рекурсия.
|
|||
3
drey1912
16.02.15
✎
18:19
|
Получилось обойти так:
Пока ВыборкаПоТабличнымЧастям.Следующий() Цикл Сообщить(ВыборкаПоТабличнымЧастям.Ссылка,); ВыборкаПоНоменклатуре = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоНоменклатуре.Следующий() Цикл Сообщить("-"+ВыборкаПоНоменклатуре.НоменклатураПредставление); ВыборкаПоХарактеристике = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоХарактеристике.Следующий() Цикл ВыборкаПоСериям = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоСериям.Следующий() Цикл ВыборкаДетальныеЗаписи = ВыборкаПоНоменклатуре.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; Возврат НЕОПРЕДЕЛЕНО; Теперь вопрос как эти данные передать в параметры макета печ. формы? |
|||
4
Krabobor
16.02.15
✎
18:33
|
ОбластьМакета = Макет.ПолучитьОбласть("МояОбласть");
ОбластьМакета.Параметры.Заполнить(МояВыборка); ТабличныйДокумент.Вывести(ОбластьМакета); |
|||
5
drey1912
16.02.15
✎
23:23
|
(4) Спасибо, несколько по-иному сделал)
|
|||
6
drey1912
16.02.15
✎
23:28
|
в такой выборке у меня номенклатура в печ. форму 3 раза одна и та же выводится... у меня в выборке номенклатура присутствует на каждом уровне. Как избавиться от этого?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |