Имя: Пароль:
1C
1С v8
Полное соединение
,
0 BuHu
 
11.10.11
13:52
Не могу понять как работает Полное соединение . есть документ Перемещение товаров , на основании него водят документы - Расходный ордер на товары и Приходный ордер на товары , табличные части этих трех документов должны быть идентичны . нужен отчет который бы показывал расхождения .  пишу вот такой запрос
|ВЫБРАТЬ
|    ВЫБОР
|        КОГДА Перемещение.Номенклатура ЕСТЬ NULL
|            ТОГДА ВЫБОР
|                    КОГДА Расходный.Номенклатура ЕСТЬ NULL
|                        ТОГДА Приходный.Номенклатура
|                    ИНАЧЕ Расходный.Номенклатура
|                КОНЕЦ
|        ИНАЧЕ Перемещение.Номенклатура
|    КОНЕЦ КАК НоменклатураПеремещение,
|    ВЫБОР
|        КОГДА Перемещение.Ссылка ЕСТЬ NULL
|            ТОГДА ВЫБОР
|                    КОГДА Расходный.Ссылка.ДокументПередачи ЕСТЬ NULL
|                        ТОГДА Приходный.Ссылка.ДокументПеремещения
|                    ИНАЧЕ Расходный.Ссылка.ДокументПередачи
|                КОНЕЦ
|        ИНАЧЕ Перемещение.Ссылка
|    КОНЕЦ КАК Перемещение,
|    ВЫБОР
|        КОГДА Перемещение.ХарактеристикаНоменклатуры ЕСТЬ NULL
|            ТОГДА ВЫБОР
|                    КОГДА Расходный.ХарактеристикаНоменклатуры ЕСТЬ NULL
|                        ТОГДА Приходный.ХарактеристикаНоменклатуры
|                    ИНАЧЕ Расходный.ХарактеристикаНоменклатуры
|                КОНЕЦ
|        ИНАЧЕ Перемещение.ХарактеристикаНоменклатуры
|    КОНЕЦ КАК ХарПеремещение,
|    ВЫБОР
|        КОГДА Перемещение.Ссылка.СкладОтправитель ЕСТЬ NULL
|            ТОГДА ВЫБОР
|                    КОГДА Расходный.Ссылка.ДокументПередачи.СкладОтправитель ЕСТЬ NULL
|                        ТОГДА Приходный.Ссылка.ДокументПеремещения.СкладОтправитель
|                    ИНАЧЕ Расходный.Ссылка.ДокументПередачи.СкладОтправитель
|                КОНЕЦ
|        ИНАЧЕ Перемещение.Ссылка.СкладОтправитель
|    КОНЕЦ КАК СкладОтправитель,
|    ВЫБОР
|        КОГДА Перемещение.Ссылка.СкладПолучатель ЕСТЬ NULL
|            ТОГДА ВЫБОР
|                    КОГДА Расходный.Ссылка.ДокументПередачи.СкладПолучатель ЕСТЬ NULL
|                        ТОГДА Приходный.Ссылка.ДокументПеремещения.СкладПолучатель
|                    ИНАЧЕ Расходный.Ссылка.ДокументПередачи.СкладПолучатель
|                КОНЕЦ
|        ИНАЧЕ Перемещение.Ссылка.СкладПолучатель
|    КОНЕЦ КАК СкладПолучатель,
|    ЕСТЬNULL(Приходный.Количество, 0) КАК КоличествоПриход,
|    ЕСТЬNULL(Перемещение.Количество, 0) КАК КоличествоПеремещение,
|    ЕСТЬNULL(Расходный.Количество, 0) КАК КоличествоРасход
|ИЗ
|    Документ.ПеремещениеТоваров.Товары КАК Перемещение
|        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|            ПриходныйОрдерНаТоварыТовары.Номенклатура КАК Номенклатура,
|            ПриходныйОрдерНаТоварыТовары.Количество КАК Количество,
|            ПриходныйОрдерНаТоварыТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
|            ПриходныйОрдерНаТоварыТовары.Ссылка КАК Ссылка
|        ИЗ
|            Документ.ПриходныйОрдерНаТовары.Товары КАК ПриходныйОрдерНаТоварыТовары
|        ГДЕ
|            ПриходныйОрдерНаТоварыТовары.Ссылка.ДокументПеремещения ССЫЛКА Документ.ПеремещениеТоваров
|            И ПриходныйОрдерНаТоварыТовары.Ссылка.Дата >= &ДатаНач
|            И ПриходныйОрдерНаТоварыТовары.Ссылка.Дата <= &ДатаКон
|            И ПриходныйОрдерНаТоварыТовары.Ссылка.Проведен = ИСТИНА) КАК Приходный
|        ПО Перемещение.Номенклатура = Приходный.Номенклатура
|            И Перемещение.ХарактеристикаНоменклатуры = Приходный.ХарактеристикаНоменклатуры
|            И (Приходный.Ссылка.ДокументПеремещения В (Перемещение.Ссылка))
|        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|            РасходныйОрдерНаТоварыТовары.Номенклатура КАК Номенклатура,
|            РасходныйОрдерНаТоварыТовары.Количество КАК Количество,
|            РасходныйОрдерНаТоварыТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
|            РасходныйОрдерНаТоварыТовары.Ссылка КАК Ссылка
|        ИЗ
|            Документ.РасходныйОрдерНаТовары.Товары КАК РасходныйОрдерНаТоварыТовары
|        ГДЕ
|            РасходныйОрдерНаТоварыТовары.Ссылка.ДокументПередачи ССЫЛКА Документ.ПеремещениеТоваров
|            И РасходныйОрдерНаТоварыТовары.Ссылка.Дата >= &ДатаНач
|            И РасходныйОрдерНаТоварыТовары.Ссылка.Дата <= &ДатаКон
|            И РасходныйОрдерНаТоварыТовары.Ссылка.Проведен = ИСТИНА) КАК Расходный
|        ПО Перемещение.Номенклатура = Расходный.Номенклатура
|            И Перемещение.ХарактеристикаНоменклатуры = Расходный.ХарактеристикаНоменклатуры
|            И (Расходный.Ссылка.ДокументПередачи В (Перемещение.Ссылка))
|ГДЕ
|    Перемещение.Ссылка.Дата >= &ДатаНач
|    И Перемещение.Ссылка.Дата <= &ДатаКон
|    И Перемещение.Ссылка.Проведен = ИСТИНА
|    И Перемещение.Ссылка = &Ссылка


но в результат попадают только товары из табличной части перемещения , т.е. если в Расходном ордере на товары есть товара которого нет в Перемещении , то он в отчет не попадает . Помогите разобраться , подскажите что в запросе не так .
З.Ы. условие на расхождение пока не накладываю , т.к. изначально не все товары попадают в результат
1 Mort
 
11.10.11
13:54
Условие "ГДЕ" все режет.
2 BuHu
 
11.10.11
13:55
(1) условие для перемещения?
3 catena
 
11.10.11
13:56
Условие... Условие на всю выборку... Строки, где Перемещение is null идут лесом...
4 Mort
 
11.10.11
13:56
(3) угу
5 DrHiHi
 
11.10.11
13:58
возможно проще будет через объединить все ;))
6 DrHiHi
 
11.10.11
14:05
а если еще точнее то есть такой регистр как "Товары к передачи со склада" и смотришь действительно ли по нем закрылось остатки по перемещению
7 BuHu
 
11.10.11
14:09
(6) понимаю что запросы лучше строить на регистрах , но не хотелось бы целиком переписывать запрос , может есть еще какие   варианты как подправить этот запрос , что б он заработал?
8 Mort
 
11.10.11
14:11
(7) Ответ сидит в двух остальных таблицах
9 BuHu
 
11.10.11
14:16
(8) а подробней можно?
10 BuHu
 
11.10.11
14:17
+(9) сделать Перемещение тоже виртуальной таблицей и там накладывать условие?
11 catena
 
11.10.11
14:18
(9)Сформируй без итогового ГДЕ и посмотри на таблицу.
12 hhhh
 
11.10.11
14:18
(9) ну так

ГДЕ
|    Перемещение.Ссылка.Дата >= &ДатаНач
|    И Перемещение.Ссылка.Дата <= &ДатаКон
|    И Перемещение.Ссылка.Проведен = ИСТИНА
|    И Перемещение.Ссылка = &Ссылка
|    ИЛИ Перемещение.Ссылка ЕСТЬ NULL
13 BuHu
 
11.10.11
14:26
сделал иначе , выбрал все подходящие условиям перемещения во временную таблицу , затем (10) и все заработало
Программист всегда исправляет последнюю ошибку.