Запрос по нескольким табличным частям документа

Версия для печатиPDF-версия

Платформа:

Добрый день. Ребята помогите пожалуйста, что-то совсем не получается...

Суть следующая: Есть документы вида ДокРасчетаЗакупа, у них несколько табличных частей, сходных по структуре. Допустим ТЧ1, ТЧ2, ТЧ3... В них обязательные поля Номенклатура, Количество (номенклатура может повторяться)
Запросом надо выбрать документы за период, объединить данные в одну таблицу значений
Точнее так: Пройтись по всем ТЧ одного документа с игнорированием незаполненных (ТЧ1, ТЧ2.. - количество ТЧ фиксировано - 6, название отличается номером, например -ТЧПос1), потом по ТЧ второго и т.д. документов, объединить одинаковую номенклатуру с суммированием количества. 

Помогите с текстом запроса пожалуйста

ВЫБРАТЬ
ДокументINVOICES.Ссылка КАК Ссылка,
ДокументINVOICES.Организация КАК Организация,
ДокументINVOICES.Склад КАК Склад
ИЗ
Документ.ДокументINVOICES КАК ДокументINVOICES,
(ВЫБРАТЬ
ДокументINVOICESТЧПос1.Номенклатура КАК Номенклатура,
ДокументINVOICESТЧПос1.Количество КАК Количество,
ДокументINVOICESТЧПос2.Номенклатура КАК Номенклатура1,
ДокументINVOICESТЧПос2.Количество КАК Количество1,
ДокументINVOICESТЧПос3.Номенклатура КАК Номенклатура2,
ДокументINVOICESТЧПос3.Количество КАК Количество2,
ДокументINVOICESТЧПос4.Номенклатура КАК Номенклатура3,
ДокументINVOICESТЧПос4.Количество КАК Количество3,
ДокументINVOICESТЧПос5.Номенклатура КАК Номенклатура4,
ДокументINVOICESТЧПос5.Количество КАК Количество4,
ДокументINVOICESТЧПос6.Номенклатура КАК Номенклатура5,
ДокументINVOICESТЧПос6.Количество КАК Количество5
ИЗ
Документ.ДокументINVOICES.ТЧПос1 КАК ДокументINVOICESТЧПос1,
Документ.ДокументINVOICES.ТЧПос2 КАК ДокументINVOICESТЧПос2,
Документ.ДокументINVOICES.ТЧПос3 КАК ДокументINVOICESТЧПос3,
Документ.ДокументINVOICES.ТЧПос4 КАК ДокументINVOICESТЧПос4,
Документ.ДокументINVOICES.ТЧПос5 КАК ДокументINVOICESТЧПос5,
Документ.ДокументINVOICES.ТЧПос6 КАК ДокументINVOICESТЧПос6
 
СГРУППИРОВАТЬ ПО
ДокументINVOICESТЧПос1.Номенклатура,
ДокументINVOICESТЧПос2.Номенклатура,
ДокументINVOICESТЧПос3.Номенклатура,
ДокументINVOICESТЧПос4.Номенклатура,
ДокументINVOICESТЧПос5.Номенклатура,
ДокументINVOICESТЧПос6.Номенклатура,
ДокументINVOICESТЧПос1.Количество,
ДокументINVOICESТЧПос2.Количество,
ДокументINVOICESТЧПос3.Количество,
ДокументINVOICESТЧПос4.Количество,
ДокументINVOICESТЧПос5.Количество,
ДокументINVOICESТЧПос6.Количество) КАК ВложенныйЗапрос
ГДЕ
ДокументINVOICES.Дата Между &НачДата и &КонДата
СГРУППИРОВАТЬ ПО
ДокументINVOICES.Организация,
ДокументINVOICES.Склад,
ДокументINVOICES.Ссылка

Вот такой запрос, но почему-то ничего не находит

Что значит "ничего не находит"? В консоли запросов проверяли? Должна быть таблица с колонками Ссылка, Организация, Склад.

А вложенный запрос вообще в основном запросе не используется...

Давайте уточним, что нужно получить в итоге.

6 таблиц (по каждой отдельной ТЧ) с полями Номенклатура и Количество и группировкой по Номенклатуре?

Или сводную таблицу по всем ТЧ с полями Номенклатура и Количество и группировкой по Номенклатуре?

Или сводную таблицу по каждому документу с полями Ссылка, Номенклатура и Количество и группировкой по Ссылке и Номенклатуре?

Сводную таблицу по списку документов за период у которых надо перебрать 6 табличных частей (одинаковые, разница только в номере), по номенклатуре и количеству (количество номенкатуры суммируется. тоесть общее кол-во Номенклатура1, Номенклатура2 и т.д.)

Видимо, вот такой запрос должен быть:

ВЫБРАТЬ
	ВложенныйЗапрос.Ссылка,
	ВложенныйЗапрос.Номенклатура,
	СУММА(ВложенныйЗапрос.Количество) КАК Количество
ИЗ
	(ВЫБРАТЬ
		ТЧ.Ссылка КАК Ссылка,
		ТЧ.Номенклатура КАК Номенклатура,
		ТЧ.Количество КАК Количество
	ИЗ
		Документ.ДокументINVOICES.ТЧПос1 КАК ТЧ
	ГДЕ
		ТЧ.Ссылка.Дата Между &НачДата И &КонДата	
		
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ТЧ.Ссылка КАК Ссылка,
		ТЧ.Номенклатура КАК Номенклатура,
		ТЧ.Количество КАК Количество
	ИЗ
		Документ.ДокументINVOICES.ТЧПос2 КАК ТЧ
	ГДЕ
		ТЧ.Ссылка.Дата Между &НачДата И &КонДата	
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ТЧ.Ссылка КАК Ссылка,
		ТЧ.Номенклатура КАК Номенклатура,
		ТЧ.Количество КАК Количество
	ИЗ
		Документ.ДокументINVOICES.ТЧПос3 КАК ТЧ
	ГДЕ
		ТЧ.Ссылка.Дата Между &НачДата И &КонДата	
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ТЧ.Ссылка КАК Ссылка,
		ТЧ.Номенклатура КАК Номенклатура,
		ТЧ.Количество КАК Количество
	ИЗ
		Документ.ДокументINVOICES.ТЧПос4 КАК ТЧ
	ГДЕ
		ТЧ.Ссылка.Дата Между &НачДата И &КонДата	
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ТЧ.Ссылка КАК Ссылка,
		ТЧ.Номенклатура КАК Номенклатура,
		ТЧ.Количество КАК Количество
	ИЗ
		Документ.ДокументINVOICES.ТЧПос5 КАК ТЧ
	ГДЕ
		ТЧ.Ссылка.Дата Между &НачДата И &КонДата	
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ТЧ.Ссылка,
		ТЧ.Номенклатура,
		ТЧ.Количество
	ИЗ
		Документ.ДокументINVOICES.ТЧПос6 КАК ТЧ
	ГДЕ
		ТЧ.Ссылка.Дата Между &НачДата И &КонДата) КАК ВложенныйЗапрос	

СГРУППИРОВАТЬ ПО
	ВложенныйЗапрос.Ссылка,
	ВложенныйЗапрос.Номенклатура

Настоящий друг, спасибо тебе большое. Все получилось!

Пожалуйста. Рад помочь)

Прошу прощения за назойливость, не подскажите еще одну вешь? Конструктором создал печать документа, хочется сделать так, чтобы он не выводил пустые табличные части и шапку этих частей.

Конструктор нарисовал такой вот код:

ТабДок.Вывести(ОбластьТЧПос2Шапка);
ВыборкаТЧПос2 = Выборка.ТЧПос2.Выбрать();
Пока ВыборкаТЧПос2.Следующий() Цикл
ОбластьТЧПос2.Параметры.Заполнить(ВыборкаТЧПос2);
ТабДок.Вывести(ОбластьТЧПос2, ВыборкаТЧПос2.Уровень());
КонецЦикла;
 
Что-то никак условие не могу подобрать, чтобы он не выводил пустые ТЧ и шапки к ним.
 
Подозреваю, что как-то надо достучаться до документа (конструктор выбрал ТЧ через запрос) и проверить на количество строк в ТЧ
 
Соответственно код процедуры был конструктором записан в Модуль менеджера
 

Всё гораздо проще. Вся информация есть в выборке из запроса. Код надо изменить совсем чуть-чуть:

ВыборкаТЧПос2 = Выборка.ТЧПос2.Выбрать();
Если ВыборкаТЧПос2.Количество() > 0 Тогда
    ТабДок.Вывести(ОбластьТЧПос2Шапка);
    Пока ВыборкаТЧПос2.Следующий() Цикл
        ОбластьТЧПос2.Параметры.Заполнить(ВыборкаТЧПос2);
        ТабДок.Вывести(ОбластьТЧПос2, ВыборкаТЧПос2.Уровень());
    КонецЦикла;
КонецЕсли;

Блин, я же так пробовал))) Или что-то упустил. В отладчике было, что значение неопределено)

Спасибо огромное, может что-то упустил и был невнимателен. Премного благодарен