Отборы в запросе

1. user1316148 01.09.21 17:52 Сейчас в теме
Пишу внешнюю обработку и застрял на отборах (
Нужно чтобы при выборе склада выбирались заказы именно этого склада и если склад не выбран, то выводились все заказы.

Вот запрос
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ДокЗаказКлиента.Ссылка КАК Заказ,
	|	ДокЗаказКлиента.НомерЗаказаНаСайте КАК Номер,
	|	ДокЗаказКлиента.КонтактнаяИнформация,
	|	ДокЗаказКлиента.Контрагент,
	|	ДокЗаказКлиента.СуммаДокумента,
	|	ДокЗаказКлиента.ТипОплатыЗаказа,
	|	ДокЗаказКлиента.СтатусЗаказаHybris КАК СтатусЗаказа,
	|	ДокЗаказКлиента.Организация
	|ИЗ
	|	Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ДокЗаказКлиента
	|		ПО ПоступлениеТоваровУслуг.ЗаказКлиента.Ссылка = ДокЗаказКлиента.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровПоставщику КАК ВозвратТоваровПоставщику
	|		ПО ПоступлениеТоваровУслуг.Ссылка = ВозвратТоваровПоставщику.ДокументПоступления.Ссылка
	|ГДЕ
	|	ДокЗаказКлиента.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата, ДЕНЬ)
	|	И ДокЗаказКлиента.Проведен = ИСТИНА
	|	И ДокЗаказКлиента.ПометкаУдаления = ЛОЖЬ
	|	И ДокЗаказКлиента.НомерЗаказаНаСайте <> """"
	|	И ДокЗаказКлиента.СтатусЗаказа <> ЗНАЧЕНИЕ(Перечисление._СтатусыЗаказов.Принят)
	|	И ДокЗаказКлиента.СтатусЗаказа <> ЗНАЧЕНИЕ(Перечисление._СтатусыЗаказов.ОтправленНаСборку)
	|	И ДокЗаказКлиента.СтатусЗаказа <> ЗНАЧЕНИЕ(Перечисление._СтатусыЗаказов.Выполнен)
	|	И ВозвратТоваровПоставщику.Ссылка ЕСТЬ NULL
	|	И ДокЗаказКлиента.Склад = &Склад";
	
	Запрос.УстановитьПараметр("Дата", ДатаРейса);
	Запрос.УстановитьПараметр("Склад",  ?(ЗначениеЗаполнено(СкладОтгрузки),СкладОтгрузки,Справочники.Склады.ПустаяСсылка()));
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
6. ZergKRSK 130 02.09.21 05:01 Сейчас в теме
(1)
|    И ВЫБОР 
|    	КОГДА &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) ТОГДА ИСТИНА
|    	ИНАЧЕ ДокЗаказКлиента.Склад = &Склад
|    КОНЕЦ
user1316148; user1278383; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. ZergKRSK 130 02.09.21 05:01 Сейчас в теме
(1)
|    И ВЫБОР 
|    	КОГДА &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) ТОГДА ИСТИНА
|    	ИНАЧЕ ДокЗаказКлиента.Склад = &Склад
|    КОНЕЦ
user1316148; user1278383; +2 Ответить
2. user636433_prog 01.09.21 17:59 Сейчас в теме
   |    И (&Склад = Значение(Справочник.Склады.ПустаяСсылка) ИЛИ ДокЗаказКлиента.Склад = &Склад)"; 
3. SlavaKron 01.09.21 18:08 Сейчас в теме
	|    И &УсловиеСклад";
	
	Запрос.УстановитьПараметр("Дата", ДатаРейса);
	
	Если ЗначениеЗаполнено(СкладОтгрузки) Тогда
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСклад", "ДокЗаказКлиента.Склад = &Склад");
		Запрос.УстановитьПараметр("Склад", СкладОтгрузки);
	Иначе
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "И &УсловиеСклад", "");
	КонецЕсли;
Показать
Еще проверка на ПометкаУдаления избыточна, так как есть проверка на Проведен.
user1316148; SeTIrk; spacecraft; kznsky; +4 Ответить
4. kznsky 01.09.21 21:50 Сейчас в теме
(3) Немного поправлю (как в типовых):

|    УСЛОВИЕСКЛАД";
    
    Запрос.УстановитьПараметр("Дата", ДатаРейса);
    
    Если ЗначениеЗаполнено(СкладОтгрузки) Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст, "УСЛОВИЕСКЛАД", "И ДокЗаказКлиента.Склад = &Склад");
        Запрос.УстановитьПараметр("Склад", СкладОтгрузки);
    Иначе
        Запрос.Текст = СтрЗаменить(Запрос.Текст, "УСЛОВИЕСКЛАД", "");
    КонецЕсли;
Показать
user1316148; +1 Ответить
5. spacecraft 01.09.21 22:23 Сейчас в теме
(4)
Немного поправлю (как в типовых):

| УСЛОВИЕСКЛАД";

Как раз в типовых наиболее частое применение это как указано в (3)
Ваш же пример самый не используемый, так как не читаемый (трудно в большом тексте запроса сразу найти) и не позволяет такой текст запроса открыть в конфигураторе.
Еще может использоваться служебное подстановочное слово обрамленное "%" или "#", но не так часто это применяется, но хотя бы быстро находимо в тексте.

Попробуйте в глобальном поиске конфигуратора найти:
СтрЗаменить(Запрос.Текст, "
7. puzo50 02.09.21 07:31 Сейчас в теме
там же вроде когда первый раз открываешь - не склад.пустаяссылка, а просто ничего нет, это не тип склад, это никакой не тип.
надо делать проверку на пустое значение
да?
8. user1316148 02.09.21 09:09 Сейчас в теме
Спасибо огромное все кто ответил, очень помогло!
Оставьте свое сообщение

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