Подзапрос в запросе в качестве поля выборки. Как сделать?
1. Есть документ Реализация с табличной частью Товары:
2. Есть документ Возврат с похожей табличной частью Товары, но без вида цены:
поле ДокументОснование - это ссылка на Реализацию, по которой ранее был отгружен товар.
В одном документе Возврата могут быть номенклатуры из разных Реализаций.
Задача состоит в том, чтобы каждую строку Номенклатуры табличной части Возврат.Товары дополнить полем ВидЦены, которое необходимо взять из соответствующей строки Номенклатуры в табличной части Реализация.товары, где Реализация.Ссылка = ДокументОснование
Сейчас есть такой запрос:
А нужно получить что-то вроде этого:
Помогите, пожалуйста, реализовать такой запрос.
Реализация.Ссылка,
Реализация.Товары.(Номенклатура, Количество, ВидЦены, Цена, Сумма)
2. Есть документ Возврат с похожей табличной частью Товары, но без вида цены:
Возврат.Ссылка,
Возврат.Товары.(Номенклатура, Количество, Цена, Сумма, ДокументОснование)
поле ДокументОснование - это ссылка на Реализацию, по которой ранее был отгружен товар.
В одном документе Возврата могут быть номенклатуры из разных Реализаций.
Задача состоит в том, чтобы каждую строку Номенклатуры табличной части Возврат.Товары дополнить полем ВидЦены, которое необходимо взять из соответствующей строки Номенклатуры в табличной части Реализация.товары, где Реализация.Ссылка = ДокументОснование
Сейчас есть такой запрос:
Выбрать
Возврат.Ссылка,
Возврат.Товары (
Номенклатура КАК НоменклатураВозврата,
Количество,
Цена,
Сумма,
ДокументОснование )
ИЗ Документ.Возврат
ГДЕ Возврат.Дата > &Дата
ПоказатьА нужно получить что-то вроде этого:
Выбрать
Возврат.Ссылка,
Возврат.Товары (
Номенклатура КАК НоменклатураВозврата,
Количество,
( Выбрать Реализация.Товары.ВидЦены
ИЗ Документ.Реализация
ГДЕ Документ.Реализация.Ссылка = ДокументОснование И Документ.Реализация.Товары.Номенклатура = НоменклатураВозврата ) ,
Цена,
Сумма,
ДокументОснование )
ИЗ Документ.Возврат
ГДЕ Возврат.Дата > &Дата
ПоказатьПомогите, пожалуйста, реализовать такой запрос.
Найденные решения
ВЫБРАТЬ
ВозвратТовары.Ссылка,
ВозвратТовары.Номенклатура,
ВозвратТовары.Количество,
ВозвратТовары.Цена,
ВозвратТовары.Сумма,
ВозвратТовары.ДокументОснование,
РеализацияТовары.ВидЦены
ИЗ
Документ.Возврат.Товары КАК ВозвратТовары
ЛЕВОЕ СОЕДИНЕНИЕ
Документ.Реализация.Товары КАК РеализацияТовары
ПО
РеализацияТовары.Ссылка = ВозвратТовары.ДокументОснование
И РеализацияТовары.Номенклатура = ВозвратТовары.Номенклатура
ГДЕ
Возврат.Дата > &Дата
ПоказатьПоместите это в виртуальную таблицу, а потом играйтесь как хотите.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) возможно так
ВЫБРАТЬ
ВозвратТоваровОтПокупателяТовары.Номенклатура,
ВозвратТоваровОтПокупателяТовары.Количество,
ВозвратТоваровОтПокупателяТовары.Цена,
ВозвратТоваровОтПокупателяТовары.Сумма,
РеализацияТоваровУслугТовары.ВидЦены
ИЗ
Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ПО ВозвратТоваровОтПокупателяТовары.ДокументОснование = РеализацияТоваровУслугТовары.Ссылка
И ВозвратТоваровОтПокупателяТовары.Номенклатура = РеализацияТоваровУслугТовары.Номенклатура
ГДЕ
ВозвратТоваровОтПокупателяТовары.Ссылка = &Ссылка
ПоказатьВЫБРАТЬ
ВозвратТовары.Ссылка,
ВозвратТовары.Номенклатура,
ВозвратТовары.Количество,
ВозвратТовары.Цена,
ВозвратТовары.Сумма,
ВозвратТовары.ДокументОснование,
РеализацияТовары.ВидЦены
ИЗ
Документ.Возврат.Товары КАК ВозвратТовары
ЛЕВОЕ СОЕДИНЕНИЕ
Документ.Реализация.Товары КАК РеализацияТовары
ПО
РеализацияТовары.Ссылка = ВозвратТовары.ДокументОснование
И РеализацияТовары.Номенклатура = ВозвратТовары.Номенклатура
ГДЕ
Возврат.Дата > &Дата
ПоказатьПоместите это в виртуальную таблицу, а потом играйтесь как хотите.
(2)
ниже приведу рабочий код с реальными документами из Управления Торговлей:
вопрос решен. всем спасибо.
Возврат.Дата > &Дата
ругался на эту строку. нужно к дате из табличной части через ссылку обращаться (ВозвратТовары.Ссылка.Дата)
ниже приведу рабочий код с реальными документами из Управления Торговлей:
ВЫБРАТЬ
ВозвратТоваровОтКлиента.Ссылка,
ВозвратТоваровОтКлиента.НомерСтроки,
ВозвратТоваровОтКлиента.Номенклатура,
ВозвратТоваровОтКлиента.Количество,
ВозвратТоваровОтКлиента.Цена,
ВозвратТоваровОтКлиента.Сумма,
ВозвратТоваровОтКлиента.ДокументРеализации,
РеализацияТоваровУслуг.ВидЦены
ИЗ
Документ.ВозвратТоваровОтКлиента.Товары КАК ВозвратТоваровОтКлиента
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
ПО (РеализацияТоваровУслуг.Ссылка = ВозвратТоваровОтКлиента.ДокументРеализации.Ссылка)
И (РеализацияТоваровУслуг.Номенклатура = ВозвратТоваровОтКлиента.Номенклатура)
ГДЕ ВозвратТоваровОтКлиента.Ссылка.Дата МЕЖДУ &НачалоПериода И &ОкончаниеПериода
Показать
я заметил, что мой запрос все-таки не очень оптимален с точки зрения скорости выполнения.
ниже один из способов, позволяющий значительно ускорить выполнение запроса (фишка в том, чтобы соединить табличную часть документа с самим документом и отбор по периоду вести исходя из даты документа):
в общем, результат тот же, но запрос выполняется значительно быстрее
ниже один из способов, позволяющий значительно ускорить выполнение запроса (фишка в том, чтобы соединить табличную часть документа с самим документом и отбор по периоду вести исходя из даты документа):
ВЫБРАТЬ
ВозвратТоваровОтКлиентаТовары.Ссылка,
ВозвратТоваровОтКлиентаТовары.НомерСтроки,
ВозвратТоваровОтКлиентаТовары.Номенклатура,
ВозвратТоваровОтКлиентаТовары.Количество,
ВозвратТоваровОтКлиентаТовары.Цена,
ВозвратТоваровОтКлиентаТовары.Сумма,
ВозвратТоваровОтКлиентаТовары.ДокументРеализации,
РеализацияТоваровУслугТовары.ВидЦены
ИЗ
Документ.ВозвратТоваровОтКлиента КАК ВозвратТоваровОтКлиента
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтКлиента.Товары КАК ВозвратТоваровОтКлиентаТовары
ПО ВозвратТоваровОтКлиента.Ссылка = ВозвратТоваровОтКлиентаТовары.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ПО (РеализацияТоваровУслугТовары.Ссылка = ВозвратТоваровОтКлиентаТовары.ДокументРеализации.Ссылка)
И (РеализацияТоваровУслугТовары.Номенклатура = ВозвратТоваровОтКлиентаТовары.Номенклатура)
ГДЕ
ВозвратТоваровОтКлиента.Дата МЕЖДУ &НачалоПериода И &ОкончаниеПериода
Показатьв общем, результат тот же, но запрос выполняется значительно быстрее
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот