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