Список значений — это программная коллекция (объект встроенного языка), содержащая пронумерованную последовательность элементов. Каждому элементу присваивается последовательный целочисленный номер — индекс, начинающийся с нуля. По индексу можно получить или установить элемент списка значений.
Содержание
- Элемент списка значений
- Создание списка значений
- Границы списка значений
- Перебор элементов списка значений
- Поиск в списке значений
- Сортировка списка значений
Элемент списка значений
Каждый элемент списка является программным объектом ЭлементСпискаЗначений встроенного языка и содержит следующие свойства:
- Значение (Произвольный тип) — хранимое значение произвольного типа
- Представление (Строка) — представление элемента списка для пользователя
- Пометка (Булево) — значение пометки элемента в списке
- Картинка (Картинка) — картинка элемента списка для пользователя
Создание списка значений
Создание пустого списка значений выполняется с помощью оператора Новый:
Для добавления элементов в список значений используется одноименный метод СписокЗначений.Добавить():
Каждый новый элемент помещается в конец списка. Для доступа к отдельным элементам списка значений применяется операция разыменования: указывается имя переменной, объявленной как список значений, а затем, в квадратных скобках, указывается индекс элемента. Свойства полученного элемента можно использовать как слева от оператора присваивания:
Так и справа: в выражениях и в качестве параметров процедур и функций:
Границы списка значений
Как было сказано выше, левая граница списка значений постоянна и всегда равно нулю (0). Верхняя граница напрямую связана с количеством элементов в списке значений. Получить ее можно с использованием метода СписокЗначений.Количество() с последующим вычитанием 1.
Давайте рассмотрим распространенные операции со списком значений.
Перебор элементов списка значений
Для перебора (обхода) всех элементов списка значений обычно используется оператор цикла Для :
Либо оператор цикла Для Каждого :
Второй способ больше подходит для ситуации, когда нужно только последовательно перебрать все значения списка. Его использование повышает «читабельность кода».
Поиск в списке значений
Для поиска значений в списке предназначен метод СписокЗначений.НайтиПоЗначению(). Он возвращает найденный элемент списка значений, либо Неопределено , если указанного значения в списке нет.
Сортировка списка значений
Сортировка элементов в списке значений может производиться двумя способами:
Рассылка
Курс лекций
Статьи
Программы
Ссылки
Форум
Добавление значений
Перебор
Сортировка
Поиск значения
Удаление значений
Список значений в диалоге
Выгрузка и загрузка «Программирование» — как и «любовь» — одно слово, за которым скрывается бесконечное множество занятий.
Создание объекта СписокЗначений
Список значений — это аналог одномерного массива в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Объект «Список значений» имеет множество полезных возможностей и работает очень быстро. Следует учитывать, что в языке 1С есть и одномерные массивы в том смысле, как это принято в других языках программирования (Перем мас[10]). Список значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.
Добавление значений в список
//у каждого значения в СпискеЗначений есть экранное представление
//если оно не указано, то используется стандартное строковое представление объекта
СписокЗнач.ДобавитьЗначение(«Иванов Иван Иванович»);
СписокЗнач.ДобавитьЗначение(Сотрудник);
СписокЗнач.ДобавитьЗначение(1,»Значение №1″);
СписокЗнач.УстановитьЗначение(3,3,»Значение №3″); //установить новое значение и представление 3-й позиции
Перебор списка значений
стр = «»;
Для Номер = 1 По СписокЗнач.РазмерСписка() Цикл
. значение = СписокЗнач.ПолучитьЗначение(Номер, стр); //получить значение и представление
. Сообщить(значение + «, » + стр);
КонецЦикла;
Сортировка списка значений
//сортировать по значению
СписокЗнач.Сортировать(); //по возрастанию
СписокЗнач.Сортировать(1); //по убыванию
//сортировать по представлению
СписокЗнач.СортироватьПоПредставлению(); //по возрастанию
СписокЗнач.СортироватьПоПредставлению(1); //по убыванию
Поиск значения в списке
//поиск по значению
Синтаксис: НайтиЗначение( )
Возвращает номер позиции списка, в которой найдено значение или 0, если не найдено
номстр = СписокЗнач.НайтиЗначение (Сотрудник);
//проверка вхождения значения в список
//работает очень быстро, если между проверками список не изменяется.
//если передается элемент справочника, а в списке хранятся группы справочника
//тогда проверяется вхождение элемента справочника в группу
Если СписокЗнач.Принадлежит(Сотрудник)=1 Тогда
.
КонецЕсли;
Удаление значений из списка
СписокЗнач.УдалитьВсе(); //очистить список значений
//удаляет значения из указанной позиции
СписокЗнач.УдалитьЗначение(откуда, [сколько]);
Список значений как элемент диалога
Список значений может использоваться в экранных формах как элемент диалога с пользователем.
//установить курсор на указанную строку или можно узнать, где находится курсор.
ТекСтрока = СписокЗнач.ТекущаяСтрока(НовСтрока);
//список значений в диалоге может иметь пометки (флажки)
пометка = СписокЗнач.Пометка(Позиция); //прочитать пометку у значения списка
СписокЗнач.Пометка(Позиция,1); //установить пометку у значения списка
СписокЗнач.Пометка(Позиция,0); //снять пометку у значения списка
Выгрузка и загрузка списка значений
//выгрузка в другой список значений или таблицу значений
Синтаксис: Выгрузить( , , )
СписокЗнач.Выгрузить(НовыйСписок,1,10); //выгрузить первые 10 значений
//выгрузка списка значений в строку с разделителями
стр = СписокЗнач.ВСтрокуСРазделителями(); //возвращает строку: 10,12,»Иванов»,»Петров»
//загрузка списка значений из строки с разделителями
//обратите внимание на двойные кавычки для строковых значений
СписокЗнач.ИзСтрокиСРазделителями(«10,12,»»Иванов»»,»»Петров»»»);
Описание:
Список значений — это не сохраняемый в базе данных объект, который позволяет строить для решения интерфейсных задач динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может быть наполнен значениями любого типа, т.е. в одном списке типы хранимых значений могут быть разными. Одним из примеров использования данного объекта может служить организация выбора конкретного документа из списка возможных документов, сформированного по сложному алгоритму.
Элементы коллекции: ЭлементСпискаЗначений
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Возможно обращение к элементу коллекции посредством оператора [. ]. В качестве аргумента передается индекс элемента (нумерация с 0).
Источник: