Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Прямые запросы на 1С Предприятии 7.7

v7: Прямые запросы на 1С Предприятии 7.7
Я
   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
   Salimbek
 
2 - 26.06.19 - 16:29
(0) Вот, товарищ в (1) правильно пишет.
Поясню, INNER - это значит - обязательное соответствие - т.е. и в первой таблице должен быть ключ и во второй. А так как у тебя чего-то нет, то это и отбрасывается
LEFT - Это значит из первой таблицы берешь вообще все строки, и к чему найдешь соответствие во второй - то достраиваешь, а чего не найдешь, в тех строчках будет NULL
Поэтому последний join лучше переписать на LEFT
   Mikeware
 
3 - 26.06.19 - 16:33
   Alex2411
 
4 - 26.06.19 - 17:32
Спасибо большое, я думаю эта статья будет полезна не только мне)))
   Mikeware
 
5 - 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) А теперь предствавь, что круги эти - всего лишь набор полей, по которым объединяется.. За ними есть ещё могуча кучка данных...
   Alex2411
 
9 - 03.09.19 - 11:06
Подскажите пожалуйста, а возможно ли работать в прямых запросов с группировками?? что то типа

ЗапросПоТоварам.Группировка("Товар")=1
   Alex2411
 
10 - 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) Нет, руками считай.
   Alex2411
 
12 - 03.09.19 - 11:21
(9) Так это какая потеря в скорости(((
   ДенисЧ
 
13 - 03.09.19 - 11:48
(12) Поиграйся с WITH ROLLUP, если у тебя sql, не sqlite
   АгентБезопаснойНацио
 
14 - 03.09.19 - 12:22
выгружай результаты в ИТЗ, и группируй как хочешь
   Alex2411
 
15 - 03.09.19 - 15:01
(13) тоже уже об этом думаю
   Alex2411
 
16 - 03.09.19 - 15:01
всем спасибо.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.