Имя: Пароль:
1C
1С v8
v8: Полное соединение табличных частей документов
0 HNKOVAN
 
18.03.14
17:08
Я начинающий погромист, не судите строго. :-)
А с SQL столкнулся вчера в первый раз.
Искать ответ в интернете уже нету сил, нигде ясного ответа не нашёл.
Возникла необходимость проверить фактическое выполнение заказов. Для этого слепил в конструкторе запрос с "полным соединением" табличных частей документов ЗаказПокупателя и РеализацияТоваровУслуг по полям Номенклатура и Контрагент.
Но почему-то в результате выполнения запроса отсутствуют данные о тех позициях номенклатуры заказов, которые совсем не были выполнены (их нет в табличной части документа РеализацияТоваровУслуг). Но это же ПОЛНОЕ соединение? Что я делаю не так? От безысходности пробовал ПРАВОЕ, ЛЕВОЕ - вожделенные "NULLи" всё равно не появляются. :-)

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

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

ГДЕ
        РеализацияТоваровУслугТовары.Ссылка.Дата >= &ДатаНач
        И РеализацияТоваровУслугТовары.Ссылка.Дата < &ДатаКон
        И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки >= &ДатаНач
        И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаКон
1 vicof
 
18.03.14
17:11
У тебя тут не полное, а внутреннее соединение
2 ale-sarin
 
18.03.14
17:12
в этом тексте вместо ПОЛНОЕ напишите ПРАВОЕ

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

напишите
И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки >= &ДатаНач
        И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаКон

ГДЕ
        РеализацияТоваровУслугТовары.Ссылка.Дата >= &ДатаНач
        И РеализацияТоваровУслугТовары.Ссылка.Дата < &ДатаКон
3 ale-sarin
 
18.03.14
17:13
+2 ой наоборот
И         РеализацияТоваровУслугТовары.Ссылка.Дата >= &ДатаНач
        И РеализацияТоваровУслугТовары.Ссылка.Дата < &ДатаКон

ГДЕ
        И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки >= &ДатаНач
        И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаКон
4 ale-sarin
 
18.03.14
17:14
ну и дату можно проверять на МЕЖДУ &ДатаНач и &ДатаКон
5 vicof
 
18.03.14
17:15
(2)(3)Эмм, а в условия соединения условия по датам не проще вынести?
6 ale-sarin
 
18.03.14
17:15
(5) Так я и вынес в соединение даты реализации.
А заказы не надо, я так понял.
7 patapum
 
18.03.14
17:15
(0) а мне одному кажется, что по соединять надо по заказу, а не по контрагенту?
ПО РеализацияТоваровУслугТовары.Ссылка.ЗаказКлиента = ЗаказПокупателяТовары.Ссылка
                        И РеализацияТоваровУслугТовары.Номенклатура = ЗаказПокупателяТовары.Номенклатура
8 vicof
 
18.03.14
17:17
(4) Не совсем явственно следует, что в условии это должно быть написано
(7) Подожди, автор еще не созрел.
9 HNKOVAN
 
18.03.14
17:25
(7) В документах "Реализация" Реквизит "Заказ" чаще не заполнен, чем заполнен.
10 HNKOVAN
 
18.03.14
17:26
(1) Вот результат запроса действительно так и выглядит. Но почему?! Что нужно исправить?
11 vicof
 
18.03.14
17:28
(10) Ты ветку читал?
12 HNKOVAN
 
18.03.14
17:30
(2) То есть, если написать так, то NULL наконец-то появятся?

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

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

ГДЕ
        РеализацияТоваровУслугТовары.Ссылка.Дата >= &ДатаНач
        И РеализацияТоваровУслугТовары.Ссылка.Дата < &ДатаКон
13 ale-sarin
 
18.03.14
17:31
(12) см (3)
14 ale-sarin
 
18.03.14
17:31
и не ПОЛНОЕ, а ПРАВОЕ
15 HNKOVAN
 
18.03.14
17:33
(11) Имеете ввиду другие темы? Или сообщения этой темы? В этой теме вроде уже всё прочитал, но так ничего и не понял.
16 vicof
 
18.03.14
17:34
(15) Эту тему, читай еще, до просветления
17 ale-sarin
 
18.03.14
17:35
(15) на, блин.

ВЫБРАТЬ
    ЗаказПокупателяТовары.Ссылка.Номер,
    ЗаказПокупателяТовары.Ссылка.Дата,
    ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки,
    ЗаказПокупателяТовары.Ссылка.Контрагент,
    ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Ссылка.Контрагент),
    ЗаказПокупателяТовары.Номенклатура,
    ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Номенклатура),
    ЗаказПокупателяТовары.Количество КАК Количество,
    РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер1,
    РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата1,
    РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент1,
    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Ссылка.Контрагент) КАК КонтрагентПредставление1,
    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура1,
    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура) КАК НоменклатураПредставление1,
    РеализацияТоваровУслугТовары.Количество КАК Количество1
ИЗ
    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ПО РеализацияТоваровУслугТовары.Ссылка.Контрагент = ЗаказПокупателяТовары.Ссылка.Контрагент
            И РеализацияТоваровУслугТовары.Номенклатура = ЗаказПокупателяТовары.Номенклатура
            И (РеализацияТоваровУслугТовары.Ссылка.Дата >= &ДатаНач)
            И (РеализацияТоваровУслугТовары.Ссылка.Дата < &ДатаКон)
ГДЕ
    ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки >= &ДатаНач
    И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаКон
18 France
 
18.03.14
17:36
(0) начинающий погромист?
19 HNKOVAN
 
18.03.14
17:42
(15) Спасибо большое, попытаюсь в четверг (раньше не получится) сделать так.
Хотя логика исправления от меня ускользает.
И если написать не ЛЕВОЕ а ПОЛНОЕ - работать не будет?
Но спасибо, буду много думать и читать мануалы :-)
20 HNKOVAN
 
18.03.14
17:42
(18) Шутка юмора :-)