Сортирует массив через методы объекта "СписокЗначений". Внимание: в результате сортировки меняется исходный (передаваемый в функцию) массив. В подавляющем большинстве случаев достаточно использовать метод как процедуру. Метод реализован в виде функции для: - удобства вычисления выражения (результата сортировки) в отладчике - возможности инициализации (получения) копии результата на вызывающей стороне в той же строке, что и сам вызов . Поддерживаемые контексты: клиент, сервер. Метод подходит для размещения в клиент-серверном общем модуле.
// Сортирует массив через методы объекта "СписокЗначений".
// Внимание: в результате сортировки меняется исходный (передаваемый в функцию) массив.
//
// Метод не требует смены контекста исполнения кода (подходит для размещения в клиент-серверном общем модуле).
//
// В подавляющем большинстве случаев достаточно использовать метод как процедуру.
// Метод реализован в виде функции для:
// - удобства вычисления выражения (результата сортировки) в отладчике
// - возможности инициализации (получения) копии результата на вызывающей стороне в той же строке, что и сам вызов
// .
//
// Параметры:
// МассивДляУпорядочивания - Массив - Массив элементов, которые необходимо упорядочить (по значению или по представлению).
// Внимание: в результате сортировки меняется исходный (передаваемый в функцию) массив.
// ПорядокСортировки - Строка - "Возр" или "Убыв" (в любом регистре, т.е. регистр не важен).
// СортироватьПоЗначению - Булево - Если Ложь, то сортировать по представлению.
//
// Возвращаемое значение:
// Массив - упорядоченный массив.
//
Функция УпорядочитьМассив(МассивДляУпорядочивания, Знач ПорядокСортировки = "Возр", Знач СортироватьПоЗначению = Истина) Экспорт
лПорядокСортировки = НаправлениеСортировки.Возр;
Если НРег(ПорядокСортировки) = НРег("Убыв") Тогда
лПорядокСортировки = НаправлениеСортировки.Убыв;
КонецЕсли;
СЗ = Новый СписокЗначений;
СЗ.ЗагрузитьЗначения(МассивДляУпорядочивания);
Если СортироватьПоЗначению Тогда
СЗ.СортироватьПоЗначению(лПорядокСортировки);
Иначе
СЗ.СортироватьПоПредставлению(лПорядокСортировки);
КонецЕсли;
МассивДляУпорядочивания = СЗ.ВыгрузитьЗначения();
Возврат МассивДляУпорядочивания;
КонецФункции
ЗаполнитьЗначениеРеквизитаУпорядочивания (БСП)
СброситьЗначениеРеквизитаУпорядочивания (БСП)
ПолучитьНовоеЗначениеРеквизитаДопУпорядочивания (БСП)
Сортировка ДанныеФормыДеревоЗначений с изменением направления
#1, 25 февраля 2021 05:54
А кто-нибудь делал замеры, скорость сортировки через СЗ и собственной реализации сортировки массива (на инфостарте полно вариантов)? По тому-что представляется, что сортировка через СЗ дороговата (за счет создания и утилизации объекта), но возможно её окупает скорость сортировки средствами платформы.
Спасибо!