HelpF.pro

Поиск максимума и минимума в таблице значений

Код 1C v 8.х
 // Возвращает структуру с минимальное и максимальное значение в таблице значений
// Структура содержит поля Макс,Мин
// тзДанные - таблица значений
// ПолеМакс, ПолеМин - строка с именем максимального и минимального поля
// Если поле ПолеМакс неуказанно то минимум ищеться по ПолеМин
Функция МаксМинВТаблицеЗначений(тзДанные, ПолеМин, ПолеМакс = Неопределено)
Результат = Новый Структура("Макс,Мин");

ЗапросМакМин = Новый Запрос;
ЗапросМакМин.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ЗапросМакМин.Текст = "ВЫБРАТЬ
| РабТаблица._ПолеМакс КАК Макс,
| РабТаблица._ПолеМин КАК Мин
|ПОМЕСТИТЬ РабочаяТаблица
|ИЗ
| &РабТаблица КАК РабТаблица
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| МАКСИМУМ(РабочаяТаблица.Макс) КАК Макс,
| МИНИМУМ(РабочаяТаблица.Мин) КАК Мин
|ИЗ
| РабочаяТаблица КАК РабочаяТаблица
|;
|
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ РабочаяТаблица";

ЗапросМакМин.Текст = СтрЗаменить(ЗапросМакМин.Текст, "_ПолеМакс" , ПолеМакс);
ЗапросМакМин.Текст = СтрЗаменить(ЗапросМакМин.Текст, "_ПолеМин" , ПолеМин);
ЗапросМакМин.УстановитьПараметр("РабТаблица", тзДанные);
РезМаксМин = ЗапросМакМин.Выполнить().Выгрузить();

Результат["Макс"]= РезМаксМин[0].Макс;
Результат["Мин"] = РезМаксМин[0].Мин;

Возврат Результат;
КонецФункции

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/1370.html