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

По теме из базы знаний
- Работа со схемой запроса
- СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ
- Замена типовых операций и реквизитов операций с отбором документов по запросу (БГУ 2.0, УФ)
- pg_trace — трассировщик запросов
- Универсальный обмен данными в формате XML 8.2 с заполнением отбора результатом запроса
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
| И &УсловиеСклад";
Запрос.УстановитьПараметр("Дата", ДатаРейса);
Если ЗначениеЗаполнено(СкладОтгрузки) Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСклад", "ДокЗаказКлиента.Склад = &Склад");
Запрос.УстановитьПараметр("Склад", СкладОтгрузки);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "И &УсловиеСклад", "");
КонецЕсли;
Показать
(3) Немного поправлю (как в типовых):
| УСЛОВИЕСКЛАД";
Запрос.УстановитьПараметр("Дата", ДатаРейса);
Если ЗначениеЗаполнено(СкладОтгрузки) Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "УСЛОВИЕСКЛАД", "И ДокЗаказКлиента.Склад = &Склад");
Запрос.УстановитьПараметр("Склад", СкладОтгрузки);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "УСЛОВИЕСКЛАД", "");
КонецЕсли;
Показать
(4)
Как раз в типовых наиболее частое применение это как указано в (3)
Ваш же пример самый не используемый, так как не читаемый (трудно в большом тексте запроса сразу найти) и не позволяет такой текст запроса открыть в конфигураторе.
Еще может использоваться служебное подстановочное слово обрамленное "%" или "#", но не так часто это применяется, но хотя бы быстро находимо в тексте.
Попробуйте в глобальном поиске конфигуратора найти:
СтрЗаменить(Запрос.Текст, "
Немного поправлю (как в типовых):
| УСЛОВИЕСКЛАД";
| УСЛОВИЕСКЛАД";
Как раз в типовых наиболее частое применение это как указано в (3)
Ваш же пример самый не используемый, так как не читаемый (трудно в большом тексте запроса сразу найти) и не позволяет такой текст запроса открыть в конфигураторе.
Еще может использоваться служебное подстановочное слово обрамленное "%" или "#", но не так часто это применяется, но хотя бы быстро находимо в тексте.
Попробуйте в глобальном поиске конфигуратора найти:
СтрЗаменить(Запрос.Текст, "
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот