Добрый вечер, коллеги! Возможно ли написать запрос по двум табличным частям документа, так чтобы выводился общий реквизит этих табличных частей и таблица значений состоящая из значений в строке второй табличной части объединенной через общий реквизит?
Пример:
первая табличная часть
Элемент1
Элемент2
Элемент3
вторая табличная часть
Элемент1 Значение1
Элемент1 Значение2
Элемент1 Значение3
Элемент3 Значение2
Элемент3 Значение10
Элемент2 Значение1
На выходе у запроса:
Элемент1 ТЗ
Элемент2 ТЗ
Элемент3 ТЗ
где ТЗ содержит значения через объединение по общему реквизиту.
Запрос по двум табличным частям документа
Автор JVN, 21 фев 2012 18:33
Сообщений в теме: 5
#1
Отправлено 21 февраля 2012 - 18:33
#2
Отправлено 22 февраля 2012 - 01:18
Можно через итоги попробовать:
Запр = Новый запрос(" |ВЫБРАТЬ | ДокТабЧасть1.Ссылка, | ДокТабЧасть1.ОбщийРеквизит, | ДокТабЧасть1.Количество, | ДокТабЧасть1.Цена, | ДокТабЧасть1.Сумма |ИЗ | Документ.ВашДокумент.ДокТабЧасть1 КАК ДокТабЧасть1 | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВашДокумент.ДокТабЧасть2 КАК ДокТабЧасть2 | ПО ДокТабЧасть1.ОбщийРеквизит = ДокТабЧасть2.ОбщийРеквизит | И ДокТабЧасть1.Ссылка = ДокТабЧасть2.Ссылка |ИТОГИ ПО | ОбщийРеквизит");
Сообщение отредактировал Fart: 22 февраля 2012 - 01:20
#3
Отправлено 22 февраля 2012 - 08:43
не подходит, из запроса не взять ТЗ по соответствиям общему реквизиту
#4
Отправлено 22 февраля 2012 - 09:05
Выборка = Запр.Выполнить.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока выборка.Следующий() Цикл Выборка1 = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка1.Следующий() Цикл //Тут можно заполнить ТЗ КонецЦикла КонецЦикла
#5
Отправлено 22 февраля 2012 - 09:53
У вас в документе две ТЧ, и они ничем, кроме как самим документом не связаны?
Хм. А тогда смысл их дергать одним запросом?
Ну в любом случае можно и дернуть. Только на выходе можете либо получить количество строк равное суме кол-ва строк обоих ТЧ. Либо кол-во строк равное максимальному кол-ву сток в этих ТЧ, но кучей колонок.
Первое - берез запрос Fart и убираем первое условие связи.
Второе вот пример на основе ППИ
ДокТабЧасть1.Ссылка = ДокТабЧасть2.Ссылкат.е. возможно только вот такая связь?
Хм. А тогда смысл их дергать одним запросом?
Ну в любом случае можно и дернуть. Только на выходе можете либо получить количество строк равное суме кол-ва строк обоих ТЧ. Либо кол-во строк равное максимальному кол-ву сток в этих ТЧ, но кучей колонок.
Первое - берез запрос Fart и убираем первое условие связи.
Второе вот пример на основе ППИ
Запрос1С.Текст = "ВЫБРАТЬ | ПлатежноеПоручениеИсходящее.Ссылка |ПОМЕСТИТЬ ППИ_ |ИЗ | Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее |; |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ППИ_.Ссылка КАК СсылкаНаППИ, | ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.Договор КАК ДоговорИЗТЧ_Расшифровка, | NULL КАК ТипКонтрагентаИЗТЧ_Реквизиты |ПОМЕСТИТЬ Связка_ |ИЗ | ППИ_ КАК ППИ_ | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПлатежноеПоручениеИсходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеИсходящееРасшифровкаПлатежа | ПО ППИ_.Ссылка = ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.Ссылка |ОБЪЕДИНИТЬ |ВЫБРАТЬ | ППИ_.Ссылка, | NULL, | ПлатежноеПоручениеИсходящееРеквизитыКонтрагента.ТипКонтрагента |ИЗ | ППИ_ КАК ППИ_ | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПлатежноеПоручениеИсходящее.РеквизитыКонтрагента КАК ПлатежноеПоручениеИсходящееРеквизитыКонтрагента | ПО ППИ_.Ссылка = ПлатежноеПоручениеИсходящееРеквизитыКонтрагента.Ссылка |; |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Связка_.СсылкаНаППИ, | ЕСТЬNULL(Связка_.ДоговорИЗТЧ_Расшифровка, &ПустаяСсылкаНаДоговор) КАК Договор, | ЕСТЬNULL(Связка_.ТипКонтрагентаИЗТЧ_Реквизиты, &ПустаяСсылкаНаТипКонтрагента) КАК ТипКонтрагента |ИЗ | Связка_ КАК Связка_";
Сообщение отредактировал uza: 22 февраля 2012 - 09:54
Не все полезно - что в БД залезло
#6
Отправлено 22 февраля 2012 - 19:21
Эта задача решается в СКД без проблем
Ничто так сильно не укрепляет веру в человека, как ПРЕДОПЛАТА!
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных









