1С 8.3 Отбор построителя с параметрами
Данные > Примеры кода 1С > 1С 8.3 Запросы
Перейти в раздел примеры кода 1С 8.3:

Добавление отбора с параметрам в построитель в 1С 8.3:
Функция ОтборПостроителяСПараметрами(ПостроительЗапросаИлиОтчета, ИмяПоляОтбораП, ЗначениеОтбораП,
ВидСравненияП = Неопределено, ИспользованиеП = Истина)
// Можно сделать общей процедурой
// Параметры: ИмяПоляОтбораП (строка), ЗначениеОтбораП (произвольный)
// ВидСравненияП (строка "Равно", неопределено "ВСписке"),
// ИспользованиеП (булево "включено использование отбора")
ЭлементОтбораП = ПостроительЗапросаИлиОтчета.Отбор.Добавить(ИмяПоляОтбораП);
ЭлементОтбораП.Использование = ИспользованиеП;
ТипЗначенияОтбораП = ТипЗнч(ЗначениеОтбораП);
ФиксированныйМассив = ТипЗначенияОтбораП = Тип("ФиксированныйМассив");
ЗначениеМассивомП = ФиксированныйМассив ИЛИ ТипЗначенияОтбораП = Тип("Массив");
Если ЗначениеМассивомП И ЗначениеОтбораП.Количество() = 1 Тогда
УстанавливаемоеЗначениеОтбораП = ЗначениеОтбораП.Получить(0);
ЗначениеМассивомП = Ложь;
ИначеЕсли ФиксированныйМассив Тогда
УстанавливаемоеЗначениеОтбораП = Новый Массив(ЗначениеОтбораП);
Иначе
УстанавливаемоеЗначениеОтбораП = ЗначениеОтбораП;
КонецЕсли;
ВидСравненияОтбораП = ?(ВидСравненияП = Неопределено,
?(ЗначениеМассивомП, "ВСписке", "Равно"), ВидСравненияП);
ЭлементОтбораП.ВидСравнения = ВидСравнения[ВидСравненияОтбораП];
Если ЗначениеМассивомП Тогда
ЗначениеСпискомП = Новый СписокЗначений;
ЗначениеСпискомП.ЗагрузитьЗначения(УстанавливаемоеЗначениеОтбораП);
ЭлементОтбораП.Значение = ЗначениеСпискомП;
Иначе
ЭлементОтбораП.Значение = ЭлементОтбораП.ТипЗначения.ПривестиЗначение(УстанавливаемоеЗначениеОтбораП);
КонецЕсли;
Возврат ЭлементОтбораП; // Добавленный элемент отбора
КонецФункции
ВидСравненияП = Неопределено, ИспользованиеП = Истина)
// Можно сделать общей процедурой
// Параметры: ИмяПоляОтбораП (строка), ЗначениеОтбораП (произвольный)
// ВидСравненияП (строка "Равно", неопределено "ВСписке"),
// ИспользованиеП (булево "включено использование отбора")
ЭлементОтбораП = ПостроительЗапросаИлиОтчета.Отбор.Добавить(ИмяПоляОтбораП);
ЭлементОтбораП.Использование = ИспользованиеП;
ТипЗначенияОтбораП = ТипЗнч(ЗначениеОтбораП);
ФиксированныйМассив = ТипЗначенияОтбораП = Тип("ФиксированныйМассив");
ЗначениеМассивомП = ФиксированныйМассив ИЛИ ТипЗначенияОтбораП = Тип("Массив");
Если ЗначениеМассивомП И ЗначениеОтбораП.Количество() = 1 Тогда
УстанавливаемоеЗначениеОтбораП = ЗначениеОтбораП.Получить(0);
ЗначениеМассивомП = Ложь;
ИначеЕсли ФиксированныйМассив Тогда
УстанавливаемоеЗначениеОтбораП = Новый Массив(ЗначениеОтбораП);
Иначе
УстанавливаемоеЗначениеОтбораП = ЗначениеОтбораП;
КонецЕсли;
ВидСравненияОтбораП = ?(ВидСравненияП = Неопределено,
?(ЗначениеМассивомП, "ВСписке", "Равно"), ВидСравненияП);
ЭлементОтбораП.ВидСравнения = ВидСравнения[ВидСравненияОтбораП];
Если ЗначениеМассивомП Тогда
ЗначениеСпискомП = Новый СписокЗначений;
ЗначениеСпискомП.ЗагрузитьЗначения(УстанавливаемоеЗначениеОтбораП);
ЭлементОтбораП.Значение = ЗначениеСпискомП;
Иначе
ЭлементОтбораП.Значение = ЭлементОтбораП.ТипЗначения.ПривестиЗначение(УстанавливаемоеЗначениеОтбораП);
КонецЕсли;
Возврат ЭлементОтбораП; // Добавленный элемент отбора
КонецФункции
0
отзывы
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник