Имя: Пароль:
1C
1С v8
Подзапрос в запросе в качестве поля выборки. Как сделать?
,
0 alexey980
 
06.12.16
20:25
1. Есть документ Реализация с табличной частью Товары:  
<CODE>
Реализация.Ссылка,
Реализация.Товары.(Номенклатура, Количество, ВидЦены, Цена, Сумма)
<CODE>
2. Есть документ Возврат с похожей табличной частью Товары, но без цены:
<CODE>
Возврат.Ссылка,
Возврат.Товары.(Номенклатура, Количество, Цена, Сумма, ДокументОснование).
<CODE>
поле ДокументОснование - это ссылка на Реализацию, по которой ранее был отгружен товар.
В одном документе Возврата могут быть номенклатуры из разных Реализаций.

Задача состоит в том, чтобы каждую строку Номенклатуры табличной части Возврат.Товары дополнить полем ВидЦены, которое необходимо взять из соответствующей строки Номенклатуры в табличной части Реализация.товары, где Реализация.Ссылка = ДокументОснование

Сейчас есть такой запрос:
<CODE>
Выбрать
    Возврат.Ссылка
    Возврат.Товары (
        Номенклатура КАК НоменклатураВозврата,
        Количество,
        Цена,
        Сумма,
        ДокументОснование )
ИЗ Документ.Возврат
ГДЕ Возврат.Дата > &Дата
<CODE>
А нужно получить что-то вроде этого:
<CODE>
Выбрать
    Возврат.Ссылка
    Возврат.Товары (
        Номенклатура КАК НоменклатураВозврата,
        Количество,
        
        ( Выбрать Реализация.Товары.ВидЦены
          ИЗ Документ.Реализация
          ГДЕ Документ.Реализация.Ссылка = ДокументОснование И Документ.Реализация.Товары.Номенклатура = НоменклатураВозврата ) ,
        
        Цена,
        Сумма,
        ДокументОснование )
ИЗ Документ.Возврат
ГДЕ Возврат.Дата > &Дата
<CODE>

Помогите, пожалуйста, реализовать такой запрос.
1 SSSSS_AAAAA
 
06.12.16
20:38
Связывание таблиц в запросах делают с помощью слова СОЕДИНЕНИЕ/join
2 catena
 
06.12.16
20:39
Выбрать
    Возврат.Ссылка
    Возврат.Номенклатура КАК НоменклатураВозврата,
    Возврат.Количество,
    Возврат.Цена,
    Возврат.Сумма,
    Возврат.ДокументОснование,
реализация.видцены
ИЗ Документ.Возврат.Товары как Возврат
левое соединение документ.Реализация.Товары как реализация
по Реализация.Ссылка = Возврат.ДокументОснование И Реализация.Номенклатура = Возврат.Номенклатура
ГДЕ Возврат.Дата > &Дата
3 alexey980
 
06.12.16
21:58
(2) спасибо! в последней строке к Дате нужно через Ссылку обращаться (Возврат.Ссылка.Дата), иначе ругается.

ниже приведу рабочий код с реальными документами из УТ:
<CODE>
ВЫБРАТЬ
    ВозвратТоваровОтКлиента.Ссылка,
    ВозвратТоваровОтКлиента.НомерСтроки,
    ВозвратТоваровОтКлиента.Номенклатура,
    ВозвратТоваровОтКлиента.Количество,
    ВозвратТоваровОтКлиента.Цена,
    ВозвратТоваровОтКлиента.Сумма,
    ВозвратТоваровОтКлиента.ДокументРеализации,
    РеализацияТоваровУслуг.ВидЦены
ИЗ
    Документ.ВозвратТоваровОтКлиента.Товары КАК ВозвратТоваровОтКлиента
    
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
ПО (РеализацияТоваровУслуг.Ссылка = ВозвратТоваровОтКлиента.ДокументРеализации.Ссылка) И
   (РеализацияТоваровУслуг.Номенклатура = ВозвратТоваровОтКлиента.Номенклатура)

ГДЕ
    ВозвратТоваровОтКлиента.Ссылка.Дата МЕЖДУ &НачалоПериода И &ОкончаниеПериода
</CODE>
4 vicof
 
07.12.16
00:28
Ох и обматерит тебя тот, у кого вклчюен учет по характеристикам
5 vicof
 
07.12.16
00:28
включен*
6 DrShad
 
07.12.16
02:48
(4) и не только за характеристки
7 alexey980
 
07.12.16
14:55
(3) этот запрос медленный. так будет значительно быстрее:

ВЫБРАТЬ
    ВозвратТоваровОтКлиентаТовары.Ссылка,
    ВозвратТоваровОтКлиентаТовары.НомерСтроки,
    ВозвратТоваровОтКлиентаТовары.Номенклатура,
    ВозвратТоваровОтКлиентаТовары.Количество,
    ВозвратТоваровОтКлиентаТовары.Цена,
    ВозвратТоваровОтКлиентаТовары.Сумма,
    ВозвратТоваровОтКлиентаТовары.ДокументРеализации,
    РеализацияТоваровУслугТовары.ВидЦены
ИЗ
    Документ.ВозвратТоваровОтКлиента КАК ВозвратТоваровОтКлиента

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтКлиента.Товары КАК ВозвратТоваровОтКлиентаТовары
ПО ВозвратТоваровОтКлиента.Ссылка =  ВозвратТоваровОтКлиентаТовары.Ссылка

ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ПО (РеализацияТоваровУслугТовары.Ссылка = ВозвратТоваровОтКлиентаТовары.ДокументРеализации.Ссылка)
    И (РеализацияТоваровУслугТовары.Номенклатура = ВозвратТоваровОтКлиентаТовары.Номенклатура)

ГДЕ
    ВозвратТоваровОтКлиента.Дата МЕЖДУ &НачалоПериода И &ОкончаниеПериода
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn