Имя: Пароль:
1C
1С v8
Запрос с временными таблицами
0 Restart
 
03.12.16
15:46
БП 2  Нетиповой документ интЗаявкаКлиента и в счете есть табличная часть Заявки с ссылками на документы.интЗаявкаКлиента...

Событие ДокументСписокПриПолученииДанных в модуле формы СписокЗаявок

    Для Каждого Строчка из ОформленияСтрок Цикл Массив.Добавить(Строчка.ДанныеСтроки.Ссылка); КонецЦикла;

    //    Массив.Добавить(Строчка.ДанныеСтроки.Ссылка);
    //    
    //КонецЦикла;
    
    ТЗ = Новый МенеджерВременныхТаблиц;
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = ТЗ;
    Запрос.УстановитьПараметр("Массив",Массив);
    Запрос.Текст =     "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                       |    интЗаявкаКлиента.Ссылка КАК Ссылка,
                       |    интЗаявкаКлиента.ДоговорКонтрагента.Возвращен КАК Возвращен
                      |ПОМЕСТИТЬ ТЗ
                       |ИЗ
                       |    Документ.интЗаявкаКлиента КАК интЗаявкаКлиента
                       |ГДЕ
                       |    интЗаявкаКлиента.Проведен = ИСТИНА
                       |    И интЗаявкаКлиента.Ссылка В(&Массив)
                       |;
                      |
                      |////////////////////////////////////////////////////////////////////////////////
                      |ВЫБРАТЬ РАЗРЕШЕННЫЕ
                      |    СчетНаОплатуПокупателюЗаявки.Ссылка КАК Ссылка,
                      |    СчетНаОплатуПокупателюЗаявки.Заявка.Ссылка КАК Заявка,
                      |    СчетНаОплатуПокупателюЗаявки.Заявка.Ссылка.Номер КАК Номер,
                      |    СчетНаОплатуПокупателюЗаявки.Ссылка.СостояниеСчета, ТЗ.Возвращен КАК Возвращен
                      |ПОМЕСТИТЬ Счета
                      |ИЗ
                      |    ТЗ КАК ТЗ
                      |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю.Заявки КАК СчетНаОплатуПокупателюЗаявки
                      |        ПО (ТЗ.Ссылка = СчетНаОплатуПокупателюЗаявки.Заявка.Ссылка)
                      |ГДЕ
                      |    СчетНаОплатуПокупателюЗаявки.Ссылка.Проведен
                      |;
                      |
                      |////////////////////////////////////////////////////////////////////////////////
                      |ВЫБРАТЬ РАЗРЕШЕННЫЕ
                      |    Счета.Ссылка КАК Ссылка1,
                      |    Счета.Заявка.Ссылка КАК Ссылка,
                      |    Счета.Номер КАК Номер,
                      |    ЕСТЬNULL(ПоступлениеНаРасчетныйСчетРасшифровкаПлатежа.СуммаВзаиморасчетов, 0) КАК СуммаВзаиморасчетов,
                      |    Счета.СостояниеСчета
                      |ИЗ
                      |    Счета КАК Счета
                      |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеНаРасчетныйСчет.РасшифровкаПлатежа КАК ПоступлениеНаРасчетныйСчетРасшифровкаПлатежа
                      |        ПО (Счета.Ссылка = ПоступлениеНаРасчетныйСчетРасшифровкаПлатежа.СчетНаОплату)
                      |ГДЕ
                      |    ПоступлениеНаРасчетныйСчетРасшифровкаПлатежа.Ссылка.Проведен";


Ожидаю что будут получены все заявки + счета выставленые по заявкам + суммы оплат по счетам. В итоге в результатеЗапроса 0 записей.
Знаю, что где то ошибся, но туплю.
1 simol
 
03.12.16
17:32
Условия на  Проведен перенеси в связи
2 Restart
 
04.12.16
12:05
(1) СПС... я попробую... Очень логичное замечание, с первого взгляда
3 Лефмихалыч
 
04.12.16
12:08
у тебя все соединения внутренние. То есть вернет что-то только там, где есть И заявки, И счета на оплату, И поступления.
4 Restart
 
04.12.16
12:18
(3) СПС... Вроде написано Левые... объясните, пож...
я вечером только смогу проверить теперь.
5 Cool_Profi
 
04.12.16
12:20
(4) Условие ГДЕ автомагически переводит левые соединения во внтренние.
6 h-sp
 
04.12.16
12:23
(4) ну вы пишете

                      |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю.Заявки КАК СчетНаОплатуПокупателюЗаявки
                      |        ПО (ТЗ.Ссылка = СчетНаОплатуПокупателюЗаявки.Заявка.Ссылка)
                      |ГДЕ
                      |    СчетНаОплатуПокупателюЗаявки.Ссылка.Проведен

то есть обязательно должен быть счет и обязательно проведен

то есть зачем вам обманывать себя? написали бы уж

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю.Заявки КАК СчетНаОплатуПокупателюЗаявки
7 Лефмихалыч
 
04.12.16
14:04
(4) условие в ГДЕ на правую таблицу делает соединение внутренним. Потому, что любые сравнения с null в запросе возвращают ложь
8 Restart
 
04.12.16
17:25
Огромнное всем спасибо!!! С вашей помощью разобрался )))
9 Restart
 
04.12.16
17:25
(7) Спасибо!!!
10 Restart
 
04.12.16
17:29
(6) "ГДЕ... то есть ОБЯЗАТЕЛЬНО должен быть счет"...
   понял
Независимо от того, куда вы едете — это в гору и против ветра!