21 ноября, 2024

Условия в запросах

12885391788FrYU9Пришлось немного поломать голову над составлением условий в запросах, на платформе 7.7. Проблема была в том, что текст запроса строился динамически и необходимо было иметь возможность гибко настраивать сложные условия, т.е. когда на одну переменную запроса нужно наложить несколько условий.

К примеру, в запросе есть переменная “Субконто”, в ней элементы справочника, есть несколько групп справочника: Группа1, Группа2, и т.п., нужно было дать возможность наложить условие на выбор:

  • Субконто входит в одну из указанных групп: (Субконто В Группа1) ИЛИ (Субконто В Группа2) и т.д.
  • Субконто не входит ни в одну из указанных групп: НЕ(Субконто В Группа1) И НЕ(Субконто В Группа2) …

В ходе экспериментов оказалось, что конструкции запроса:

УСЛОВИЕ ((Субконто В Группа1) ИЛИ (Субконто В Группа2)); – работает

УСЛОВИЕ (НЕ(Субконто В Группа1) И НЕ(Субконто В Группа2)); – не работает, т.е. результат запроса пуст

Вторую конструкцию пришлось реализовывать последовательным наложением условий и в таком варианте все замечательно заработало:

УСЛОВИЕ (НЕ(Субконто В Группа1));

УСЛОВИЕ (НЕ(Субконто В Группа2));

Замечание: для единичного запроса вполне подошла бы конструкция такого вида: УСЛОВИЕ (НЕ(Субконто В СписокГрупп)); где в список групп можно внести нужные группы, но только в моем случае заранее не было известно ни количество запросов, ни количество условий, поэтому пришлось возиться с И/ИЛИ.