Имя: Пароль:
1C
1С v8
Полное соединение
,
0 NewBieOneS
 
15.11.14
14:37
Здравствуйте!

Необходимо соединить проведенные документы "Поступление товаров и услуг" и "Реализация товаров и услуг" по полю "Номенклатура" в табличных частях "Товары" с отбором по периоду.

Получился запрос:

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

Проблема в том, что в результате выполнения запроса в таблицу попадают только те номенклатурные позиции, по которым было и поступление и реализация (т.е. получилось внутреннее соединение). А мне нужно полное соединение. Помогите, пожалуйста.
1 Banned
 
15.11.14
14:49
не верю. Скорее всего нет нужных документов в периоде
2 XLife
 
15.11.14
14:51
(0) надо полное, пишешь левое...
3 ilya_i
 
15.11.14
15:23
(0) это потому в секции ГДЕ не учтено условие что данных может не быть. Вдумайся, ведь условие в ГДЕ работает для каждой строчки.
4 ilya_i
 
15.11.14
15:26
Проще соединить два вложенных запроса. и открой для себя условие МЕЖДУ
5 NewBieOneS
 
15.11.14
15:49
(1) документы есть

(2) пардон, ошибся, когда копировал код сюда. у меня написано "ПОЛНОЕ".

(3) не понял. прокомментируйте подробнее, пожалуйста.

(4) про "МЕЖДУ" понял. :)
6 NewBieOneS
 
15.11.14
16:01
(3) переделал запрос. вроде бы работает. посмотрите, пожалуйста, корректен ли он.

ВЫБРАТЬ
    Поступление.НоменклатураП,
    Поступление.КонтрагентП,
    Поступление.ДатаП,
    Поступление.КоличествоП,
    Поступление.ЦенаП,
    Поступление.СуммаП,
    Поступление.ДатаОплатыП,
    Реализация.НоменклатураР,
    Реализация.КонтрагентР,
    Реализация.ДатаР,
    Реализация.КоличествоР,
    Реализация.ЦенаР,
    Реализация.СуммаР,
    Реализация.ДатаОплатыР
ИЗ
    (ВЫБРАТЬ
        ПоступлениеТоваровУслугТовары.Номенклатура КАК НоменклатураП,
        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК КонтрагентП,
        ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК ДатаП,
        ПоступлениеТоваровУслугТовары.Количество КАК КоличествоП,
        ПоступлениеТоваровУслугТовары.Цена КАК ЦенаП,
        ПоступлениеТоваровУслугТовары.Сумма КАК СуммаП,
        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент.ОсновнойДоговорКонтрагента.СрокОплаты КАК ДатаОплатыП
    ИЗ
        Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    ГДЕ
        ПоступлениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
        И ПоступлениеТоваровУслугТовары.Ссылка.Проведен) КАК Поступление
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            РеализацияТоваровУслугТовары.Номенклатура КАК НоменклатураР,
            РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК КонтрагентР,
            РеализацияТоваровУслугТовары.Ссылка.Дата КАК ДатаР,
            РеализацияТоваровУслугТовары.Количество КАК КоличествоР,
            РеализацияТоваровУслугТовары.Цена КАК ЦенаР,
            РеализацияТоваровУслугТовары.Сумма КАК СуммаР,
            РеализацияТоваровУслугТовары.Ссылка.Контрагент.ОсновнойДоговорКонтрагента.СрокОплаты КАК ДатаОплатыР
        ИЗ
            Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ГДЕ
            РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
            И РеализацияТоваровУслугТовары.Ссылка.Проведен) КАК Реализация
        ПО Поступление.НоменклатураП = Реализация.НоменклатураР
7 guevara74
 
15.11.14
16:28
(6) - Учиться учиться и еще раз учиться. так делать НЕЛЬЗЯ.
1.Поместите запрос к пту во временную.
2.Поместите запрос РТУ во временную.
3.Полное соединение пту и РТУ
8 zulu_mix
 
15.11.14
16:36
надо не к документам запрос делать а к регистру
9 zulu_mix
 
15.11.14
16:39
тогда (7) примет вид
1.Поместите запрос к РН с видом движения Приход в вт1.
2.Поместите запрос к РН с видом движения Расход в вт2.
3.Полное соединение вт1 и вт2
10 NewBieOneS
 
15.11.14
17:03
Спасибо всем!
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.