Книга знаний |
Рекламное место пустует
|
1С:Предприятие / Приемы программирования / Запросы |
|
Предположим в форме есть список товаров, если он заполнен, то нужно сформировать отчет только по
указанным товарам, иначе по всем. Как написать текст запроса в таком случае? | Автор статьи: Гений 1С | Редакторы: acsent, Neco, TormozIT, vhl, Flashback1979SE, SuperSpade, Asmody Последняя редакция №17 от 15.06.17 | История URL: http://kb.mista.ru/article.php?id=269 |
Если ВыбТовары.Количество()=0 Тогда Условие=""; Иначе Условие=" ГДЕ Товар в (&Товары)"; КонецЕсли; Запрос.Текст="ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура "+Условие;
Запрос.Текст="ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ &Условие"; Если ВыбТовары.Количество()=0 Тогда Запрос.Текст=СтрЗаменить(Запрос.Текст, "&Условие", "ИСТИНА"); Иначе Запрос.Текст=СтрЗаменить(Запрос.Текст, "&Условие", "(Товар в (&Товары))"); КонецЕсли;
ПЗ = Новый ПостроительЗапроса; ПЗ.Текст = " |ВЫБРАТЬ | Спр.Ссылка ИЗ Справочник.Номенклатура КАК Спр |{ |ГДЕ | Спр.Ссылка.* КАК Ссылка |}"; ПЗ.Отбор.Добавить("Ссылка"); ПЗ.Отбор.Ссылка.Значение = СписокНоменклатуры; ПЗ.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке; ПЗ.Отбор.Ссылка.Использование = Истина; // или (СписокНоменклатуры.Количество() > 0) ПЗ.Выполнить();
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры, ЦеныНоменклатурыСрезПоследних.ТипЦен, ЦеныНоменклатурыСрезПоследних.Цена ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ГДЕ (ЦеныНоменклатурыСрезПоследних.Номенклатура В (&СписокНоменклатуры) ИЛИ (НЕ 1 В (ВЫБРАТЬ РАЗЛИЧНЫЕ 1 ИЗ Справочник.Номенклатура КАК Спр ГДЕ Спр.Ссылка В (&СписокНоменклатуры))))
ВЫБРАТЬ ... ИЗ ... ГДЕ (НЕ &УсловиеЗадано ИЛИ (НашеСложноеУсловие))
ВЫБРАТЬ ... ИЗ ... ГДЕ ВЫБОР КОГДА &УсловиеЗадано ТОГДА НашеСложноеУсловие ИНАЧЕ ИСТИНА КОНЕЦ
ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ ВЫБОР КОГДА &Товары=НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА ИНАЧЕ Товар в (&Товары) КОНЕЦ
Если СписокМагазов.Количество()>0 Тогда Запрос.УстановитьПараметр("СписокМагазов", СписокМагазов); Иначе Запрос.УстановитьПараметр("СписокМагазов", NULL); КонецЕсли; Запрос.Текст = "ВЫБРАТЬ | Склады.Ссылка |ИЗ | Справочник.Склады КАК Склады |ГДЕ | ВЫБОР | КОГДА &СписокМагазов ЕСТЬ NULL ТОГДА ИСТИНА | ИНАЧЕ Склады.Магазин В (&СписокМагазов) | КОНЕЦ";
Описание
| Рубрикатор
| Поиск
| ТелепатБот
| Захваченные статьи
| Установки
| Форум
|