Руководство по встроенному языку » 

Работаем со списком значений программно

Список значений — это программная коллекция (объект встроенного языка), содержащая пронумерованную последовательность элементов.Каждому элементу присваивается последовательный целочисленный номер — индекс, начинающийся с нуля. По индексу можно получить или установить элемент списка значений.

Элемент списка значений

Каждый элемент списка является программным объектом ЭлементСпискаЗначений встроенного языка и содержит следующие свойства:

  • Значение (Произвольный тип) — хранимое значение произвольного типа
  • Представление (Строка) — представление элемента списка для пользователя
  • Пометка (Булево) — значение пометки элемента в списке
  • Картинка (Картинка) — картинка элемента списка для пользователя

Создание списка значений

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

сз = Новый СписокЗначений;

Для добавления элементов в список значений используется одноименный метод СписокЗначений.Добавить():

сз.Добавить(10);
сз.Добавить(НачалоДня(ТекущаяДата()), "Сегодня");

Каждый новый элемент помещается в конец списка. Для доступа к отдельным элементам списка значений применяется операция разыменования: указывается имя переменной, объявленной как список значений, а затем, в квадратных скобках, указывается индекс элемента. Свойства полученного элемента можно использовать как слева от оператора присваивания:

сз[0].Значение = 10;
сз[1].Значение = НачалоДня(ТекущаяДата());
сз[1].Представление = "Сегодня";

Так и справа: в выражениях и в качестве параметров процедур и функций:

Сообщить("сз[0] = " + сз[0].Значение);

Границы списка значений

Как было сказано выше, левая граница списка значений постоянна и всегда равно нулю (0). Верхняя граница напрямую связана с количеством элементов в списке значений. Получить ее можно с использованием метода СписокЗначений.Количество() с последующим вычитанием 1.

Давайте рассмотрим распространенные операции со списком значений.

Перебор элементов списка значений

Для перебора (обхода) всех элементов списка значений обычно используется оператор цикла Для:

Для Инд = 1 По сз.Количество() Цикл
    Сообщить("сз[" + Инд + "] = " + сз[Инд-1].Представление);
КонецЦикла;

Либо оператор цикла Для Каждого:

Для Каждого Элт Из сз Цикл
    Сообщить("сз[" + сз.Индекс(Элт) + "] = " + Элт.Представление);
КонецЦикла;

Второй способ больше подходит для ситуации, когда нужно только последовательно перебрать все значения списка. Его использование повышает «читабельность кода».

Поиск в списке значений

Для поиска значений в списке предназначен метод СписокЗначений.НайтиПоЗначению(). Он возвращает найденный элемент списка значений, либо Неопределено, если указанного значения в списке нет.

НайдЭлт = сз.НайтиПоЗначению(10);
Если НЕ НайдЭлт = Неопределено Тогда
­    Сообщить("сз[" + сз.Индекс(НайдЭлт) + "] = " + НайдЭлт.Представление);
КонецЕсли;

Сортировка списка значений

Сортировка элементов в списке значений может производиться двумя способами:

сз.Добавить(1, "Первый");
сз.Добавить(3, "Третий");
сз.Добавить(2, "Второй");
сз.СортироватьПоЗначению();

Методы объекта СписокЗначений

Вставить() Добавляет элемент в произвольное место списка
ВыбратьЭлемент() Открывает диалог выбора элемента списка значений
ВыгрузитьЗначения() Выгружает значения списка в массив
Добавить() Добавляет элемент в конец списка
ЗагрузитьЗначения() Загружает значения из массива
ЗаполнитьПометки() Устанавливает значение пометок элементов списка
Индекс() Возвращает индекс элемента списка значений
Количество() Возвращает количество элементов в списке
НайтиПоЗначению() Выполняет поиск элемента в списке по значению
НайтиПоИдентификатору() Выполняет поиск элемента в списке по его идентификатору
ОтметитьЭлементы() Открывает диалог отметки элементов списка значений
Очистить() Очищает список значений
Получить() Возвращает элемент списка по индексу
Сдвинуть() Сдвигает элемент в списке вверх или вниз
Скопировать() Возвращает копию текущего списка значений
СортироватьПоЗначению() Сортирует элементы списка значений по значению
СортироватьПоПредставлению() Сортирует элементы списка значений по представлению
Удалить() Удаляет указанный элемент из списка