Нужно запросом к ТЧ документа "вытащить" данные из ТЧ спр. Номенклатура

1. user659168_xec8787 3 24.06.17 10:18 Сейчас в теме
День добрый, подскажите пожалуйста с алгоритмом действий!
Имеется Документ с ТЧ, одно из полей ТЧ это реквизит спр. Номенклатура.
В спр. Номенклатура также имеется ТЧ.
Нужно запросом к ТЧ документа "вытащить" данные из ТЧ спр. Номенклатура.
В результате по каждой Номенклатуре из ТЧ документа нужна одна строка, а ТЧ спр. Номенклатура выводилась бы как ТаблицаЗначений.
Далее обработка результатов выборки двумя циклами (один для ТЧ документа, второй для ТаблицыЗначений).

Не могу обойти проблему:
В запросе, формирующем временную таблицу (ВТ), не могут выбираться вложенные таблицы
.
Т.е. ниже приведенный код нельзя запихнуть в ВТ, а очень хочеться присоединить его ЛевымСоединением к ТЧ документа по полю Номенклатура.
ВЫБРАТЬ
	Номенклатура.Ссылка КАК Ссылка,
	Номенклатура.Характеристика.(
		Ссылка КАК Ссылка,
		НомерСтроки КАК НомерСтроки,
		ПереченьХарактеристик КАК ПереченьХарактеристик,
		ПереченьЗначений КАК ПереченьЗначений
	)
ИЗ
	Справочник.Номенклатура КАК Номенклатура
Показать



Если делать традиционно, обращением к ТЧ обоих объектов (документа и справочника), то строки Номенклатуры дублируются, и как перебирать результат этой выборки - не понятно.

ВЫБРАТЬ
	НоменклатураХарактеристика.Ссылка КАК Ссылка,
	НоменклатураХарактеристика.ПереченьХарактеристик КАК ПереченьХарактеристик,
	НоменклатураХарактеристика.ПереченьЗначений КАК ПереченьЗначений
ПОМЕСТИТЬ ВТ1
ИЗ
	Справочник.Номенклатура.Характеристика КАК НоменклатураХарактеристика
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	РеализацияТовары.Номенклатура КАК Номенклатура,
	РеализацияТовары.Размер КАК Размер,
	РеализацияТовары.Количество КАК Количество,
	РеализацияТовары.Цена КАК Цена,
	РеализацияТовары.Сумма КАК Сумма,
	РеализацияТовары.СуммаВес КАК СуммаВес
ПОМЕСТИТЬ ВТ2
ИЗ
	Документ.Реализация.Товары КАК РеализацияТовары
ГДЕ
	РеализацияТовары.Ссылка.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ2.Номенклатура КАК Номенклатура,
	ВТ2.Размер КАК Размер,
	ВТ2.Количество КАК Количество,
	ВТ2.Цена КАК Цена,
	ВТ2.Сумма КАК Сумма,
	ВТ2.СуммаВес КАК СуммаВес,
	ВТ1.ПереченьХарактеристик КАК ПереченьХарактеристик,
	ВТ1.ПереченьЗначений КАК ПереченьЗначений
ИЗ
	ВТ2 КАК ВТ2
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ1 КАК ВТ1
		ПО (ВТ2.Номенклатура.Ссылка = ВТ1.Ссылка.Ссылка)
Показать
По теме из базы знаний
Найденные решения
2. cassper 24.06.17 11:11 Сейчас в теме
Получить во временной таблице уникальные ссылки на номенклатуру из тч документа.
Во втором пакете обращаться к тч номенклатуры. Наложить фильтр на ссылку по результату временной таблицы

ссылка в (выбрать вт.номенклатура из вт как вт)


И можно все это обернуть потом итогами по номенклатуре.

Первый цикл будет по номенклатуре, второй цикл (вложенный) будет по детальным записям (таб.части) номенклатуры.
user659168_xec8787; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. cassper 24.06.17 11:11 Сейчас в теме
Получить во временной таблице уникальные ссылки на номенклатуру из тч документа.
Во втором пакете обращаться к тч номенклатуры. Наложить фильтр на ссылку по результату временной таблицы

ссылка в (выбрать вт.номенклатура из вт как вт)


И можно все это обернуть потом итогами по номенклатуре.

Первый цикл будет по номенклатуре, второй цикл (вложенный) будет по детальным записям (таб.части) номенклатуры.
user659168_xec8787; +1 Ответить
3. user659168_xec8787 3 25.06.17 18:30 Сейчас в теме
(2) Алексей, большое спасибо за отклик, похоже это то, что мне и было нужно. После ваших ценных указаний получился во такой код:
ВЫБРАТЬ
	РеализацияТовары.Номенклатура КАК НоменклатураСсылка,
	РеализацияТовары.ПробаИзделия КАК ПробаИзделия,
	РеализацияТовары.Размер КАК Размер,
	РеализацияТовары.Количество КАК Количество,
	РеализацияТовары.Цена КАК Цена,
	РеализацияТовары.Сумма КАК Сумма,
	РеализацияТовары.СуммаВес КАК СуммаВес
ПОМЕСТИТЬ ВТ1
ИЗ
	Документ.Реализация.Товары КАК РеализацияТовары
ГДЕ
	РеализацияТовары.Ссылка.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Номенклатура.Характеристика.(
		Ссылка КАК Ссылка,
		НомерСтроки КАК НомерСтроки,
		ПереченьХарактеристик КАК ПереченьХарактеристик,
		ПереченьЗначений КАК ПереченьЗначений
	),
	Номенклатура.Ссылка КАК Ссылка,
	ВТ1.Размер КАК Размер,
	ВТ1.Количество КАК Количество,
	ВТ1.Цена КАК Цена,
	ВТ1.Сумма КАК Сумма,
	ВТ1.СуммаВес КАК СуммаВес
ИЗ
	ВТ1 КАК ВТ1
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
		ПО (ВТ1.НоменклатураСсылка = Номенклатура.Ссылка)
ГДЕ
	Номенклатура.Ссылка В
			(ВЫБРАТЬ
				ВТ1.НоменклатураСсылка
			ИЗ
				ВТ1 КАК ВТ1)
Показать

Т.о. по каждой номенклатуре из ТЧ документа у меня получается одна строка, внутри которой имеются как данные из ТЧ документа, так и набор данных из ТЧ спр. номенклатуры.
Как вы и писали, первый цикл будет по номенклатуре, а второй по ТЧ номенклатуры и благодаря этому мне будет значительно проще заполнить макет :-)
Еще раз большое спасибо!!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот