|   |   | 
| 
 | Запрос СКД с параметрами | ☑ | ||
|---|---|---|---|---|
| 0
    
        lite777 24.05.22✎ 14:27 | 
        Здравствуйте, как реализовать отчет в СКД где сначало надо выполнить запрос1 , и затем при переборе результатов запроса1  подставить результат в запрос2 
 Задача вывести все заказы покупателя , где нет связанных чеков. Реализовал через обычный отчет-можно ли через СКД ? Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказПокупателя1.Ссылка КАК Ссылка |ИЗ | Документ.ЗаказПокупателя КАК ЗаказПокупателя1 | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеДоставкиЗаказаПокупателя.СрезПоследних КАК СостояниеДоставкиЗаказаПокупателяСрезПоследних | ПО ЗаказПокупателя1.Ссылка = СостояниеДоставкиЗаказаПокупателяСрезПоследних.ЗаказПокупателя |ГДЕ | ЗаказПокупателя1.Дата МЕЖДУ &Дата1 И &Дата2 | И ЗаказПокупателя1.Проведен | И ЗаказПокупателя1.Магазин = &Магазин | И СостояниеДоставкиЗаказаПокупателяСрезПоследних.Состояние = &Состояние"; Запрос.УстановитьПараметр("Дата1",Отчет.Период.ДатаНачала); Запрос.УстановитьПараметр("Дата2",отчет.Период.ДатаОкончания ); Запрос.УстановитьПараметр("Магазин",отчет.Магазин) ; Запрос.УстановитьПараметр("Состояние",Перечисления.СостоянияДоставкиЗаказаПокупателя.ГотовКОтгрузке) ; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ОбластьДетальныхЗаписей.Параметры.РасшифровкаСсылка= ВыборкаДетальныеЗаписи.Ссылка ; Запрос2 = Новый Запрос; Запрос2.Текст = "ВЫБРАТЬ | СвязанныеДокументы.Ссылка КАК Ссылка |ИЗ | КритерийОтбора.СвязанныеДокументы(&Док) КАК СвязанныеДокументы |ГДЕ | СвязанныеДокументы.Ссылка.Проведен"; Запрос2.УстановитьПараметр("Док", ВыборкаДетальныеЗаписи.Ссылка); Выб = Запрос2.Выполнить().Выбрать(); Признак=0 ; Пока Выб.Следующий() Цикл Если ТИПЗНЧ(Выб.Ссылка)=ТИП("ДокументСсылка.ЧекККМ") Тогда Признак=1 ; КонецЕсли КонецЦикла; Если Признак=0 Тогда ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень()); КонецЕсли ; КонецЦикла; | |||
| 1
    
        lite777 24.05.22✎ 14:30 | 
        Запрос2.УстановитьПараметр("Док", ВыборкаДетальныеЗаписи.Ссылка) -Результат первого запроса     | |||
| 2
    
        Kassern 24.05.22✎ 14:31 | 
        (0) "Реализовал через обычный отчет-можно ли через СКД" - если коротко, то можно. Просто соединяете две таблички, информацию по чекам прикручиваете к основной таблице, а дальше можно сравнением ЕстьNull(ДанныеПравойТаблички,"")=""     | |||
| 3
    
        Kassern 24.05.22✎ 14:32 | 
        Если вам нужны именно документ чекККМ, то нет смыслка к критериям отбора обращаться. Скорее всего в документе будет ссылка на заказ покупателя. Можно попробовать напрямую с этой таблицей соединиться     | |||
| 4
    
        lite777 24.05.22✎ 14:36 | 
        (2) Два набора данных и связи НАБОРОВ ДАННЫХ  ?     | |||
| 5
    
        Kassern 24.05.22✎ 14:42 | 
        (4) зачем такие сложности, можно в одном пакете сделать типа:
 ВЫБРАТЬ Заказы.Ссылка КАК Ссылка ИЗ Документ.ЗаказКлиента КАК Заказы ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ПО РеализацияТоваровУслуг.ЗаказКлиента = Заказы.Ссылка ГДЕ ЕСТЬNULL(РеализацияТоваровУслуг.Ссылка, "") = "" Выведет все заказы, у которых нет реализаций | |||
| 6
    
        lite777 24.05.22✎ 14:51 | 
        (5)  Это вычитание таб1 из таб2 ,но если в документа чек допустим нет поля заказПокупателя. и нужно использовать -
 , |ИЗ | КритерийОтбора.СвязанныеДокументы(&Док) КАК СвязанныеДокументы | |||
| 7
    
        Kassern 24.05.22✎ 14:52 | 
        (6) ну тогда можно предварительно отобрать критерии по типу документа и во временную таблицу запихать. Далее уже ваш заказ соединить с этой временной таблицей и в ГДЕ подобное условие     | |||
| 8
    
        Kassern 24.05.22✎ 14:57 | 
        (6) я если честно давно не ковырял эту виртуальную таблицу. Нужно проверить, можно ли параметром указать данные другой таблицы     | |||
| 9
    
        Kassern 24.05.22✎ 15:02 | 
        (6) а если у документа чека нет заказа покупателя, то скорее всего и нет связи с ним. Документы же не чудом попадают в критерии отбора, а все же по какому-то реквизиту связываются. Вот по нему и сделать напрямую запрос. Смысл вам от все виртуальной таблицы, если вам нужен всего 1 документ?     | |||
| 10
    
        lite777 24.05.22✎ 15:10 | 
        (9) У чека возможно есть поле заказпокупателя , но надо понять как работать в подобных ситуациях когда есть запрос1 и при переборе запроса 1 подставлять его в параметр запроса 2     | |||
| 11
    
        Kassern 24.05.22✎ 15:21 | 
        (10) а в большинстве случаев это и не нужно. Обычно все соединения таблиц происходят на вкладке Связи. В параметрах конечно можно попробовать указать вложенное "Выбрать..." но это не общий случай     | |||
| 12
    
        Kassern 24.05.22✎ 15:22 | 
        (10) в вашем случае нужно найти реквизит для связи таблиц и по нему сделать простенький запрос как в (5) и будет вам счастье     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |