Книга знаний

1С:Предприятие / v8 / Приемы программирования / Запросы

v8: Хитрое написание текстов запросов с необязательными условиями

Предположим в форме есть список товаров, если он заполнен, то нужно сформировать отчет только по указанным товарам, иначе по всем. Как написать текст запроса в таком случае?Автор статьи:
Последняя редакция №1 от 04.07.06
URL: http://kb.mista.ru/article.php?id=269

Ключевые слова: запрос,условие


В типовых конфигурациях обычно пишут так:

Если ВыбТовары.Количество()=0 Тогда
   Условие="";
Иначе
   Условие=" ГДЕ Товар в (&Товары)";
КонецЕсли;
Запрос.Текст="ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура "+Условие;

Я предлагаю писать более изящно:
Запрос.Текст="ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ &Условие";
Если ВыбТовары.Количество()=0 Тогда
   Запрос.Текст=СтрЗаменить(Запрос.Текст, "&Условие", "ИСТИНА");
Иначе
   Запрос.Текст=СтрЗаменить(Запрос.Текст, "&Условие", "(Товар в (&Товары))");
КонецЕсли;

Преимущество в том, что текст запроса разбирается конструктором, в отличие от типового подхода.

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика