Перейти к основному содержимому

Отбор (поиск) данных

Предикат

Все отборы в библиотеке строятся на предикатах. Предикат это утверждение которое возвращает Истина или Ложь. Предикаты создаются при помощи специальной функции Предикат:

Предикат = СхЗапрос.Предикат()
.Реквизит("ЭтоГруппа").Равно(Ложь);

Предикаты соединяются между собой при помощи логической функции И. Например:

Предикат = СхЗапрос.Предикат()
.Реквизит("ЭтоГруппа").Равно(Ложь)
.Реквизит("Родитель").НеРавно(Родитель);

будет эквивалентно коду:

...
ГДЕ
Номенклатура.ЭтоГруппа = &Параметр_0
И НЕ Номенклатура.Родитель = &Параметр_1
...

Запрос.УстановитьПараметр("Параметр_0", Ложь);
Запрос.УстановитьПараметр("Параметр_1", Родитель);
к сведению

Этот функционал планируется к переработке с целью реализации более сложной логики

Функции доступные в предикатах

  • Равно
  • НеРавно
  • Больше
  • БольшеИлиРавно
  • Меньше
  • МеньшеИлиРавно
  • ВСписке
  • НеВСписке
  • Подобно
  • НеПодобно
  • Между

Использование предиката в поиске данных

Созданный предикат передаётся в функцию Где:

ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура")
.Где(СхЗапрос.Предикат()
.Реквизит("ЭтоГруппа").Равно(Ложь))
.ВТаблицуЗначений();