ПроверитьУсловияФильтра (БСП)

Автор: 1С
ОбщийМодуль.АдминистрированиеКластераКлиентСервер
БСП

Проверить условия фильтра. Проверяет значения свойств объекта на соответствие условиям, указанным в фильтре.

// Проверяет значения свойств объекта на соответствие условиям, указанным в фильтре.
//
// Параметры:
//  ПроверяемыйОбъект - Структура:
//    * Ключ - Имя свойства,значение которого сравнивается с фильтром,
//    * Значение - Значение свойства, которое сравнивается с фильтром,
//  Фильтр - Массив - массив структур, описывающих условия фильтрации. Поля структур, входящих в массив:
//             * Свойство - Строка - имя свойства, по которому осуществляется фильтрация,
//             * ВидСравнения - ВидСравнения - значение системного перечисления ВидСравнения,
//             * Значение - Число, Строка, Дата, Булево, СписокЗначений, Массив, Структура - значение, с которым
//               сравнивается значение соответствующего свойства.
//         - Структура - структура: ключ - Имя свойства, значение - значение.
//           При использовании данного варианта описания фильтра сравнение всегда выполняется на равенство.
//
// Возвращаемое значение:
//   Булево - Истина если значения свойств объекта удовлетворяют условиям, указанным в фильтре,
//   Ложь - если не удовлетворяют.
//
Функция ПроверитьУсловияФильтра(Знач ПроверяемыйОбъект, Знач Фильтр = Неопределено) Экспорт
	
	Если Фильтр = Неопределено Или Фильтр.Количество() = 0 Тогда
		Возврат Истина;
	КонецЕсли;
	
	ВыполненоУсловий = 0;
	
	Для Каждого Условие Из Фильтр Цикл
		
		Если ТипЗнч(Условие) = Тип("Структура") Тогда
			
			Поле = Условие.Свойство;
			ТребуемоеЗначение = Условие.Значение;
			ВидСравненияЗначений = Условие.ВидСравнения;
			
		ИначеЕсли ТипЗнч(Условие) = Тип("КлючИЗначение") Тогда
			
			Поле = Условие.Ключ;
			ТребуемоеЗначение = Условие.Значение;
			ВидСравненияЗначений = ВидСравнения.Равно;
			
		Иначе
			
			ВызватьИсключение НСтр("ru = 'Некорректно задан фильтр.'");
			
		КонецЕсли;
		
		ПроверяемоеЗначение = ПроверяемыйОбъект[Поле];
		УсловиеВыполнено = ПроверитьУсловиеФильтра(ПроверяемоеЗначение, ВидСравненияЗначений, ТребуемоеЗначение);
		
		Если УсловиеВыполнено Тогда
			ВыполненоУсловий = ВыполненоУсловий + 1;
		Иначе
			Прервать;
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат ВыполненоУсловий = Фильтр.Количество();
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПроверитьУсловияФильтра (БСП)

ДобавитьУсловиеФильтра (БСП)

Проверить (БСП)

ПроверитьИзменениеФильтровОграниченияМиграцииДанныхПриЗаписи (БСП)

УсловиеЭлементаНастройки (БСП)

ФильтрДиалоговВыбораИСохранения (БСП)

ДобавитьУсловиеВидимостиКоманды (БСП)

Удаление строк таблицы по условию

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз