СКД выборка по определенному условию

1. yurazyuraz 16.06.21 04:19 Сейчас в теме
Подскажите как можно в СКД решить следующую проблему

в эту таблицу должны выбраться заказы вт_ЗаказКлиентаОтмененные0 только с выбранным статусом К выполнению / В резерве

но только если пользователь задает явно как параметр - не пустой
и тогда в конечную таблицу должны попасть только эти заказы с выбранным статусом и никакие другие

если пользователь параметр статус оставляет пустой
то в таблицу вт_ЗаказКлиентаОтмененные0 ничего не попадет
и тогда должны выбираться заказы у которых были возвраты


как сделать это условие ?


ВЫБРАТЬ  
  	 ЗаказКлиента.Ссылка КАК Ссылка
    ,СУММА(ЗаказКлиентаТовары.Сумма) как СуммаОтмененные
ПОМЕСТИТЬ вт_ЗаказКлиентаОтмененные0
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
	ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентатовары
		ПО (ЗаказКлиента.Ссылка = ЗаказКлиентатовары.Ссылка)
ГДЕ
	(ЗаказКлиента.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания)
 И ЗаказКлиента.Статус = &СтатусЗаказа 
СГРУППИРОВАТЬ ПО
	ЗаказКлиента.Ссылка
;

//ВЫБРАТЬ  
//ЗаказКлиентаОтмененные0.*
//ИЗ вт_ЗаказКлиентаОтмененные0 как ЗаказКлиентаОтмененные0
//;



ВЫБРАТЬ  
	 ЗаказКлиента.Ссылка
     ,0 как СуммаОтмененные

поместить вт_ЗаказКлиентаОтмененные1
ИЗ
	документ.ВозвратТоваровПоставщику как ВозвратТоваровПоставщику 
    левое соединение документ.ПриобретениеТоваровУслуг как ПриобретениеТоваровУслуг
	   по ВозвратТоваровПоставщику.ДокументПоступления =  ПриобретениеТоваровУслуг.Ссылка
	левое соединение документ.ЗаказПоставщику как втЗаказПоставщику
      по ПриобретениеТоваровУслуг.ЗаказПоставщику = втЗаказПоставщику.Ссылка
	левое соединение документ.ЗаказКлиента как ЗаказКлиента
      по втЗаказПоставщику.ДокументОснование = ЗаказКлиента.Ссылка
	левое соединение документ.ЗаказКлиента.Товары как ЗаказКлиентаТовары
      по ЗаказКлиентаТовары.Ссылка = ЗаказКлиента.Ссылка
ГДЕ
    ( ЗаказКлиента.Дата  МЕЖДУ &ДатаНачала И &ДатаОкончания)
{ И ЗаказКлиента.Статус = &СтатусЗаказа } 

СГРУППИРОВАТЬ ПО
	ЗаказКлиента.Ссылка
;

ВЫБРАТЬ  
  	 ЗаказКлиента.Ссылка КАК Ссылка
    ,СУММА(ЗаказКлиентаТовары.Сумма) как СуммаОтмененные
ПОМЕСТИТЬ вт_ЗаказКлиентаОтмененные2
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
	ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентатовары
		ПО (ЗаказКлиента.Ссылка = ЗаказКлиентатовары.Ссылка)
ГДЕ
	(ЗаказКлиента.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания)
	И ЗаказКлиентатовары.Отменено = ИСТИНА
{ И ЗаказКлиента.Статус = &СтатусЗаказа } 

СГРУППИРОВАТЬ ПО
	ЗаказКлиента.Ссылка
;

	


////////////////////////////////////////////////////////////­/////////////////////
выбрать 
  ЗаказКлиентаОтмененные2.Ссылка
 ,ЗаказКлиентаОтмененные2.СуммаОтмененные
ПОМЕСТИТЬ вт_ЗаказКлиентаОтмененные3
из 
  вт_ЗаказКлиентаОтмененные2 как ЗаказКлиентаОтмененные2
ОБЪЕДИНИТЬ  
выбрать
  ЗаказКлиентаОтмененные1.Ссылка
 ,ЗаказКлиентаОтмененные1.СуммаОтмененные
из 
  вт_ЗаказКлиентаОтмененные1 как ЗаказКлиентаОтмененные1
ОБЪЕДИНИТЬ  
выбрать
  ЗаказКлиентаОтмененные0.Ссылка
 ,ЗаказКлиентаОтмененные0.СуммаОтмененные
из 
  вт_ЗаказКлиентаОтмененные0 как ЗаказКлиентаОтмененные0
;
////////////////////////////////////////////////////////////­////////////////////





выбрать
   ЗаказКлиентаОтмененные.Ссылка
   ,СУММА(ЗаказКлиентаОтмененные.СуммаОтмененные) как СуммаОтменыВЗаказе
ПОМЕСТИТЬ вт_ЗаказКлиентаОтмененные
из 
  вт_ЗаказКлиентаОтмененные3 как ЗаказКлиентаОтмененные
СГРУППИРОВАТЬ ПО ЗаказКлиентаОтмененные.Ссылка
;

выбрать
   ЗаказКлиентаОтмененные.ссылка
  ,ЗаказКлиента.Номер
  ,ЗаказКлиента.Дата
  ,ЗаказКлиента.Склад 
  ,ЗаказКлиента.Подразделение
  ,ЗаказКлиента.Статус
  ,ЗаказКлиента.НомерПоДаннымКлиента
  ,ЗаказКлиента.ДатаПоДаннымКлиента
  ,ЗаказКлиента.СуммаДокумента
  ,ЗаказПоставщику.Номер как НомерЗаказПоставщику
  ,ЗаказПоставщику.Ссылка как СсылкаЗаказПоставщику
  ,ЗаказКлиентаОтмененные.СуммаОтменыВЗаказе

поместить вт_Сборка
из 
   вт_ЗаказКлиентаОтмененные как ЗаказКлиентаОтмененные
    левое соединение документ.ЗаказКлиента как ЗаказКлиента
      по ЗаказКлиента.Ссылка = ЗаказКлиентаОтмененные.ссылка
    Левое соединение документ.ЗаказПоставщику как ЗаказПоставщику
       по ЗаказПоставщику.ДокументОснование = ЗаказКлиента.Ссылка  и ТИПЗНАЧЕНИЯ(ЗаказПоставщику.ДокументОснование) = ТИП(Документ.ЗаказКлиента) 
{ ГДЕ ЗаказКлиента.Статус = &СтатусЗаказа и вт_Сборка.Статус = &СтатусЗаказа}       
;
выбрать 
   Сборка.Склад как Магазин
 , Сборка.НомерПоДаннымКлиента
 , Сборка.Номер как НомерЗаказа
 , Сборка.Дата как ДатаЗаказа
 , Сборка.Статус
 , ВозвратТоваровПоставщику.Номер как НоверВозвратаПосташику
 , крВозвратЗаказовЧерезТрансопортуюКомпаниюЗаказыКлиентов.ссылка.Номер как НомерВозвратаТК
 , крВозвратЗаказовЧерезТрансопортуюКомпаниюЗаказыКлиентов.ссылка.Дата  как ДатаВозвратаТК
 , Сборка.СуммаДокумента+Сборка.СуммаОтменыВЗаказе как СуммаЗаказа
 , Сборка.СуммаДокумента как СуммаОплатыЗаказа
 , ВозвратТоваровПоставщику.СуммаДокумента как СуммаВозврата
 , Сборка.Ссылка как ЗаказКлиента
 , Сборка.СсылкаЗаказПоставщику   как ЗаказПоставщику
 , ПриобретениеТоваровУслуг.Ссылка как ПриобретениеТоваровИУслуг
 , ВозвратТоваровПоставщику.Ссылка как ВозвратТоваровПоставщику
 , крВозвратЗаказовЧерезТрансопортуюКомпаниюЗаказыКлиентов.Ссылка как ВозвратТоваровЧерезТК

из 
    вт_Сборка как Сборка
    левое соединение документ.ПриобретениеТоваровУслуг как ПриобретениеТоваровУслуг
       по ПриобретениеТоваровУслуг.ЗаказПоставщику   = Сборка.СсылкаЗаказПоставщику  
    левое соединение документ.ВозвратТоваровПоставщику как ВозвратТоваровПоставщику
       по ВозвратТоваровПоставщику.ДокументПоступления =  ПриобретениеТоваровУслуг.Ссылка
    левое соединение  документ.крВозвратЗаказовЧерезТрансопортуюКомпанию.ЗаказыКлиентов  как крВозвратЗаказовЧерезТрансопортуюКомпаниюЗаказыКлиентов 
       по крВозвратЗаказовЧерезТрансопортуюКомпаниюЗаказыКлиентов.ВозвратКлиента  =   ВозвратТоваровПоставщику.Ссылка
{ ГДЕ Сборка.Статус = &СтатусЗаказа }            
упорядочить по  Сборка.Дата
;       


Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ZergKRSK 130 16.06.21 04:31 Сейчас в теме
(1)
с выбранным статусом К выполнению / В резерве

тип данных у статуса какой? предположу что это перечисление, тогда условие будет такое
ГДЕ
	ВЫБОР КОГДА &СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусКлиента.КВыполнению) ТОГДА
		ИСТИНА
	ИНАЧЕ
		ЛОЖЬ
	КОНЕЦ
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот