1с как отсортировать массив
Перейти к содержимому

1с как отсортировать массив

  • автор:

1С 8.3 Сортировать массив — Программист 1С Минск. Автоматизация бизнеса.

ПРИМЕРЫ КОДА 1С

Перейти в раздел примеры кода 1С 8.3:

Сортировка массива с помощью Списка значений в 1С 8.3 (самый простой метод, часто встречается в практике):

Процедура Сортировка_Массива_через_СписокЗначений () Экспорт

МассивДляСортировки = Новый Массив ;
МассивДляСортировки . Добавить ( 7 );
МассивДляСортировки . Добавить ( 2 );
МассивДляСортировки . Добавить ( 4 );
МассивДляСортировки . Добавить ( 9 );
МассивДляСортировки . Добавить ( 14 );
МассивДляСортировки . Добавить ( 1 );
МассивДляСортировки . Добавить ( 0 );
МассивДляСортировки . Добавить ( 6 ); // Массив: (7, 2, 4, 9, 14, 1, 0, 6)

// Загружаем и сортируем элементы Массива в Списке значений
СписокЗначенийДляСортировки = Новый СписокЗначений ;
СписокЗначенийДляСортировки . ЗагрузитьЗначения ( МассивДляСортировки );
СписокЗначенийДляСортировки . СортироватьПоЗначению ();
// Параметр метода СортироватьПоЗначению() может принимать значения:
// * НаправлениеСортировки.Возр
// * НаправлениеСортировки.Убыв

// Выгружаем СписокЗначений обратно в Массив
МассивДляСортировки = СписокЗначенийДляСортировки . ВыгрузитьЗначения ();

Сообщить ( СтрСоединить ( МассивДляСортировки , «,» ));
// 0,1,2,4,6,7,9,14

Сортировка массива через дробление в 1С 8.3 (самый быстрый, рекомендуется, редко встречается в практике):

Процедура Сортировка_Массива_дроблением ( Массив , НижнийПредел , ВерхнийПредел ) Экспорт

НижнийПределМассива = НижнийПредел ;
ВерхнийПределМассива = ВерхнийПредел ;
МассивСПределами = Массив [ Цел (( НижнийПределМассива + ВерхнийПределМассива )/ 2 )];

Пока Истина Цикл
Пока Массив [ НижнийПределМассива ] < МассивСПределами Цикл
НижнийПределМассива = НижнийПределМассива + 1 ;
КонецЦикла;

Пока Массив [ ВерхнийПределМассива ] > МассивСПределами Цикл
ВерхнийПределМассива = ВерхнийПределМассива — 1 ;
КонецЦикла;

Если НижнийПределМассива > ВерхнийПределМассива Тогда
Прервать;
КонецЕсли;

Если НижнийПредел < ВерхнийПределМассива Тогда
Сортировка_Массива_дроблением ( Массив , НижнийПредел , ВерхнийПределМассива );
КонецЕсли;

Если НижнийПределМассива < ВерхнийПредел Тогда
Сортировка_Массива_дроблением ( Массив , НижнийПределМассива , ВерхнийПредел );
КонецЕсли;

Функция БыстраяСортировка ( МассивДляСортировки )

НижняяГраница = 0 ;
ВерхняяГраница = МассивДляСортировки . ВГраница ();
Сортировка_Массива_дроблением ( МассивДляСортировки , НижняяГраница , ВерхняяГраница );

1с как отсортировать массив

СписокЗначений (ValueList)
СортироватьПоЗначению (SortByValue)
Синтаксис:

Тип: НаправлениеСортировки.
Способ сортировки — по возрастанию или по убыванию.
Значение по умолчанию: Возр
Описание:

Сортирует список значений в порядке возрастания или убывания хранимых элементами значений.

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:

и загрузка массива в СЗ

СписокЗначений (ValueList)
ЗагрузитьЗначения (LoadValues)
Синтаксис:

Тип: Массив.
Массив, содержащий значения для заполнения списка значений.
Описание:

Загружает список значений значениями из переданного массива. При этом все прежние элементы списка удаляются.

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:

Сортировка массива в 1С

Существует много алгоритмов сортировки массивов. Все они могут быть адаптированы для любого языка программирования, в том числе и 1С. Но в 1С реализованы и платформенные способы сортировки. Именно о них пойдет речь в статье.

Самым простым и достаточно быстрым способом сортировки массива в 1С является следующий алгоритм:

  1. Выгрузка исходного массива в список значений;
  2. Сортировка списка значений с использованием платформенного метода СортироватьПоЗначению () ;
  3. Выгрузка списка значений обратно в массив.

Рассмотрим пример программного кода, реализующего описанную последовательность действий:
Список = Новый СписокЗначений ; // Подготовительные действия: создание списка значений
Список . ЗагрузитьЗначения ( Массив ); // Этап 1
Список . СортироватьПоЗначению ( НаправлениеСортировки . Возр ); // Этап 2
Массив = Список . ВыгрузитьЗначения (); // Этап 3

Параметр метода СортироватьПоЗначению () может принимать значения:

  • НаправлениеСортировки . Возр ;
  • НаправлениеСортировки . Убыв .

Таблицу значений также можно использовать для сортировки массива по аналогии с описанным алгоритмом, но это не так удобно, т.к. требуются дополнительные действия:
ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «ЗначенияМассива» ); // Создание колонки, в которую будет загружен массив
// Создание строк по количеству элементов массива
Для Ном = 1 По Массив . Количество () Цикл
ТЗ . Добавить ();
КонецЦикла;
ТЗ . ЗагрузитьКолонку ( Массив , «ЗначенияМассива » );
ТЗ . Сортировать ( «ЗначенияМассива Возр» );
Массив = ТЗ . ВыгрузитьКолонку ( «ЗначенияМассива» );

Кроме того, необходимо помнить, что таблица значений доступна только на стороне сервера.

Как отсортировать массив в 1с?

Задача сортировки массива на платформе 1С:Предприятие 8 — нетривиальная задача, т.к. отдельного метода, решающего эту задачу во встроенном языке нет.

Решить задачу можно следующим способом: если заранее известно, что потребуется сортировка некоторых элементов данных, можно сразу использовать более подходящую коллекцию — список значений. Он позволяет сортировать элементы не только по значению, но и по представлению. Если такой возможности нет, можно воспользоваться следующим кодом:

//создаем и наполняем массив м = Новый Массив; м.Добавить(1); м.Добавить(5); м.Добавить(4); //приступаем к сортировке сз = Новый СписокЗначений; сз.ЗагрузитьЗначения(м); сз.СортироватьПоЗначению(); //выгружаем результат в массив м = сз.ВыгрузитьЗначения(); //проверяем результат Сообщить(СтрСоединить(м, ",")); //1,4,5 

Читайте также:

  1. Как загрузить массив в список значений
  2. СписокЗначений.ЗагрузитьЗначения()
  3. СписокЗначений.ВыгрузитьЗначения()

Поделиться страницей в соц.сетях

Похожие записи

  • Как получить массив случайных чисел?
  • Как выбрать значение из списка значений?
  • Метод ВыбратьИзСписка() в обычной или управляемой форме
  • Метод ВыбратьИзМеню() в управляемой или обычной форме

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *