Отбор в таблице значений с использованием построителя запроса
Иногда возникают ситуации, когда нужно сделать отбор в таблице значений используя нечеткое условие, к примеру: больше, меньше, содержит и т.д. Можно, конечно же, использовать перебор в цикле и там уже делать проверку на нечеткие условия, можно использовать метод НайтиСтроки(), вот только отбор, передаваемые туда как параметр, всегда будут иметь вид сравнения - равно.Что же делать, если нам нужно найти строки в ТЧ и при этом использовать нечеткое условие и не использовать цикл?Все просто: можно воспользоваться построителем запроса.Построитель запроса - это объект встроенного языка, с помощью которого мы можем получать необходимые данные, используя отборы.
Рекомендуется при этом при больших объемах таблиц значений индексировать колонки поиска.
Пример:
//
//где ТаблицаИсточник - это результат некого запроса
ТаблицаИсточник.Индексы.Добавить("Счет, Контрагент, ДоговорКонтрагента, СуммаОстаток");
//->поиск положительных остатков и договора
БольшеНоля = ОтборВРазрезеДоговоровБольшеНуля(ТаблицаИсточник, ТекущийДоговор.ДоговорКонтрагента);
//
Функция ОтборВРазрезеДоговоровБольшеНуля(Таблица, ДоговорКонтрагента) Экспорт
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Таблица);
СтрокаОтбора = Построитель.Отбор.Добавить("ДоговорКонтрагента");
СтрокаОтбора.ВидСравнения = ВидСравнения.Равно;
СтрокаОтбора.Значение = ДоговорКонтрагента;
СтрокаОтбора.Использование = Истина;
СтрокаОтбора = Построитель.Отбор.Добавить("СуммаОстаток");
СтрокаОтбора.ВидСравнения = ВидСравнения.Больше;
СтрокаОтбора.Значение = 0;
СтрокаОтбора.Использование = Истина;
Построитель.Выполнить();
Возврат Построитель.Результат.Выгрузить();
КонецФункции
Комментариев нет:
Отправить комментарий