![]() |
|
Запрос СКД с параметрами | ☑ | ||
---|---|---|---|---|
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) и будет вам счастье
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |