Имя: Пароль:
1C
1C 7.7
v7: Прямые запросы на 1С Предприятии 7.7
0 Alex2411
 
26.06.19
16:06
Добрый день, подскажите пожалуйста по запросу, делаю соединение таблиц но если в документе не заполнено поле   КлиентСпр - то эта строка совсем не выводиться, а мне бы хотелось что бы она выводилась но с пустой ячейкой

вот запрос

        ТекстЗапроса="
        |SELECT                    
        |  Док.IDDoc as [Док $Документ.Накладная],
        |  Жур.DOCNO as НомерДок,
        |  $Док.Клиент as Клиент,
        |  $СпрКл.ТорговыйПредставитель as [ТорговыйПредставитель $Справочник.Клиенты],
        |  $Док.Регион as Регион,
        |  $Док.Доставка as Доставка ,
        |  $Док.ВидОтгрузки as ВидОтгрузки ,
        |  $Док.ДатаОтгрузки as ДатаОтгрузки,
        |  ROUND (SUM ($ДокС.Вес),0) as Вес ,
        |  ROUND(SUM ($ДокС.Объем),2) as Объем,
        |  SUM ($ДокС.Количество) as Единиц,
        |  SUM ($ДокС.КоличествоОпераций) as Операций,
        |  Count($ДокС.Количество) as Строк
        |FROM
        |  $Документ.Накладная as Док
        |INNER JOIN
        |    _1SJourn as Жур ON Жур.IDDoc = Док.IDDoc
        |                       AND (Жур.Date_Time_IDDoc  BETWEEN :Дата1 AND :Дата2~)
        |                       AND  (Жур.ISMARK = 0)
        |                       AND  ($Док.ОжидаетОбработки=1)  
        |INNER JOIN
        |  $ДокументСтроки.Накладная as ДокС ON Док.IdDoc=ДокС.IdDoc  
        |INNER JOIN
        |  $Справочник.Клиенты as СпрКл ON СпрКл.Id=$Док.КлиентСпр
        |GROUP BY
        |    Док.IDDoc, Жур.DOCNO, $Док.Клиент, $Док.Регион, $Док.Доставка , $Док.ВидОтгрузки, $Док.ДатаОтгрузки, $СпрКл.ТорговыйПредставитель  
        |";
1 Вафель
 
26.06.19
16:06
LEFT JOIN
2 Salimbek
 
26.06.19
16:29
(0) Вот, товарищ в (1) правильно пишет.
Поясню, INNER - это значит - обязательное соответствие - т.е. и в первой таблице должен быть ключ и во второй. А так как у тебя чего-то нет, то это и отбрасывается
LEFT - Это значит из первой таблицы берешь вообще все строки, и к чему найдешь соответствие во второй - то достраиваешь, а чего не найдешь, в тех строчках будет NULL
Поэтому последний join лучше переписать на LEFT
3 Mikeware
 
26.06.19
16:33
4 Alex2411
 
26.06.19
17:32
Спасибо большое, я думаю эта статья будет полезна не только мне)))
5 Mikeware
 
26.06.19
17:35
(4) какая?
6 Злопчинский
 
27.06.19
14:56
(3) и че на этой картинке? лефтджойн - выбрасываем правую таблицу вообще как будто ее и нет. и получаем одну левую таблицу всю. как на рисунке - она же вся в результате. без всяких добавок от правойц таблицы.
7 ДенисЧ
 
27.06.19
14:58
(5) 282? )))
8 ДенисЧ
 
27.06.19
14:58
(6) А теперь предствавь, что круги эти - всего лишь набор полей, по которым объединяется.. За ними есть ещё могуча кучка данных...
9 Alex2411
 
03.09.19
11:06
Подскажите пожалуйста, а возможно ли работать в прямых запросов с группировками?? что то типа

ЗапросПоТоварам.Группировка("Товар")=1
10 Alex2411
 
03.09.19
11:07
Текущий мой запрос:
    ТекстЗапроса="
    |SELECT                    
    |  Рег.Товар as [Товар $Справочник.Товары],
    |  RIGHT(Рег.ПозицияДокумента,9) as [Документ1 $Документ],
    |  Рег.ВидДокумента as [Документ1_вид],
    |  $РегП.КодОперации as КодОперации,
    |  Рег.ОстатокТовараНачальныйОстаток as КоличествоНачальныйОстаток,
    |  Рег.БазоваяСтоимостьНачальныйОстаток as СтоимостьНачальныйОстаток,
    |    
    |  Рег.ОстатокТовараПриход as ДокКоличествоПриход,
    |  Рег.БазоваяСтоимостьПриход as ДокСтоимостьПриход,
    |  Рег.ОстатокТовараРасход as ДокКоличествоРасход,
    |  Рег.БазоваяСтоимостьРасход as ДокСтоимостьРасход,  
    |
    |  Рег.ОстатокТовараКонечныйОстаток as КоличествоКонечныйОстаток,
    |  Рег.БазоваяСтоимостьКонечныйОстаток as СтоимостьКонечныйОстаток
    |
    |FROM
    |  $Регистр.ОстаткиТоваров as РегП (nolock)  
    |Inner Join
    |  $РегистрОстаткиОбороты.ОстаткиТоваров(:НачДата, :КонДата~, Документ,,,Товар = :ВыбТовар) as Рег On
    |        РегП.IdDoc=RIGHT(Рег.ПозицияДокумента,9)
    |        and $РегП.Товар=Рег.Товар
    |";
11 ДенисЧ
 
03.09.19
11:18
(9) Нет, руками считай.
12 Alex2411
 
03.09.19
11:21
(9) Так это какая потеря в скорости(((
13 ДенисЧ
 
03.09.19
11:48
(12) Поиграйся с WITH ROLLUP, если у тебя sql, не sqlite
14 АгентБезопасной Нацио
 
03.09.19
12:22
выгружай результаты в ИТЗ, и группируй как хочешь
15 Alex2411
 
03.09.19
15:01
(13) тоже уже об этом думаю
16 Alex2411
 
03.09.19
15:01
всем спасибо.