1с: Еще раз о сортировке массива структур
Уже не однократно поднимал в своём блоге вопрос о методе сортировки массива структур по какому то ключу. В конце концов остановился на самом медленном, но зато самом менее трудоёмком методе. Для нескольких тысяч записей пойдет. Для нескольких десятков тысяч записей уже нет, ибо памяти не хватит. Общая методика такова:
- Преобразуем массив структур в таблицу значений
- Отсортируем штатными средствами таблицу значений по ключевому полю
- Далее используем еже не массив структур, а именно таблицу значений, чтобы уменьшить накладные расходы на обратные преобразования
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Функция ПреобразованиеМассивВТаблицуЗначений(Массив) экспорт ТЗ = Новый ТаблицаЗначений; Для Каждого СтрокаМассива Из Массив Цикл Если ТЗ.Колонки.Количество() = 0 Тогда Для Каждого ЭлементМассива Из СтрокаМассива Цикл ТЗ.Колонки.Добавить(ЭлементМассива.Ключ); КонецЦикла; КонецЕсли; НоваяСтрока = ТЗ.Добавить(); Для Каждого ЭлементМассива Из СтрокаМассива Цикл НоваяСтрока[ЭлементМассива.Ключ] = ЭлементМассива.Значение; КонецЦикла; КонецЦикла; Возврат ТЗ; КонецФункции |
Использование:
1 2 3 4 5 6 |
ТЗ_ЛС=ПреобразованиеМассивВТаблицуЗначений(список_лс.result.responseObject); ТЗ_ЛС.Сортировать("room Возр"); ... для каждого стр из ТЗ_ЛС цикл .... конеццикла |