4.8. Список значений
Список значений - это аналог одномерного массива, который предназначен в основном для решения интерфейсных задач, например, при использовании элементов управления СписокВыбора и ПолеВыбора.
В списке значения могут храниться значения разных типов, хотя можно наложить ограничение с помощью свойства ТипЗначения. Список значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.
Список значений можно представить себе как таблицу, содержащую следующие колонки:
• Значение - собственно хранимое значение.
• Представление - пользовательское представление значения, которое будет показано при выводе значения на экран, например, в диалоге выбора значения из списка. Если представление не указано, то оно формируется системой автоматически.
• Пометка - пометка (флажок), связанная со значением. Может быть использована для отметки некоторых значений из списка.
• Картинка - графическое изображение, связанное с данным значением.
В 1С:Предприятии 8 объект СписокЗначений состоит из объектов типа ЭлементСпискаЗначений, которые имеют свойства Значение, Представление, Пометка и Картинка.
Создание новых списков значений производится с помощью ключевого слова Новый:
сзСотр = Новый СписокЗначений;
Ниже демонстрируются приемы добавления и удаления элементов списка значений:
сзСотр . Очистить (); //удалим все элементы
//у следующего элемента индекс 0, представление "Иванов Иван"
сзСотр Добавить ( "Иванов", "Иванов Иван") ;
//у следующего элемента будет индекс 1, представление "Петров Петр"
//и установлена пометка
сзСотр Добавить("Петров","Петров Петр", Истина);
сзСотр.Удалить(1); //удалить 2-й элемент, т.е. Петрова
сзСотр.Вставить(0,"Сидоров"); //Иванов сдвигается ниже
сзСотр.Сдвинуть(1,-1); //сдвинем Иванова обратно к началу
Обращение к элементу списка значений производится по индексу через оператор [...] или с помощью метода Получить, например:
сзСотр[0].Значение = "Кузнецов";
Перебор элементов списка значений производится следующим образом:
//1-й вариант
Для Каждого эл Из сз-Сотр Цикл
Сообщить(Эл.Значение);
КонецЦикла;
//2-й вариант
Для н = 0 По сзСотр.Количество()-1 Цикл
Сообщить(сзСотр[н].Значение) ;
КонецЦикла;
В списке значений можно искать заданное значение:
НайденныйЭлементСписка = сзСотр.НайтиПоЗначению("Иванов");
Если НайденныйЭлементСписка <> Неопределено Тогда
Сообщить ("Элемент найден!");
КонецЕсли;
Как уже говорилось выше, в списке значений могут быть пометки, которые представляют собой флажки (значения типа «булево»). С помощью пометок несколько значений списка могут быть выделены, и тем самым они будут отличаться от остальных. Назначение пометок определяется проектной логикой.
Разработчик может программно считывать и устанавливать пометки у элементов списка значений:
сзСотр = Новый СписокЗначений;
сзСотр.Добавить("Иванов",,Истина); //пометка установлена
сзСотр.Добавить("Петров"); //пометка не установлена
сзСотр.Добавить("Сидоров"); //пометка не установлена
ВыборПроизведен = сзСотр.ОтметитьЭлементы("Укажите сотрудников");
Если ВыборПроизведен Тогда
Для Каждого эл Из сзСотр Цикл
Если эл.Пометка Тогда
Сообщить("Отмечен сотрудник" + эл.Значение);
КонецЕсли;
КонецЦикла;
КонецЕсли
;
Методы ВыбратьЭлемент и ОтметитьЭлементы открывают диалоговое окно для пользователя, в котором он может выбрать один элемент или расставить пометки, тем самым выбрав несколько элементов.
Элементы списка значений могут быть легко отсортированы по значению или по представлению:
сзСотр.СортироватьПоЗначению(НаправлениеСортировки.Возр);
сзСотр.СортироватьПоПредставлению(НаправлениеСортировки.Убыв);
В список значений можно загрузить значения из массива и выгрузить значения в массив, например:
мас = Новый Массив;
мас.Добавить("Иванов");
мас.Добавить("Якушин");
мас.Добавить("Сидоров");
сзСотр.ЗагрузитьЗначения(мас);
сзСотр.СортироватьПоЗначению();
мас2 = сзСотр.ВыгрузитьЗначения();
При размещении в форме поля списка автоматически создается новый реквизит формы типа СписокЗначений. Через этот реквизит можно управлять содержимым списка, добавлять или удалять элементы, расставлять пометки, задавать картинки. Следует понимать, что ПолеСписка - это не список значений, а элемент управления, имеющий собственный набор свойств и методов.
Со списком значений также тесно связан элемент управления ПолеВыбора. Его свойство СписокВыбора представляет собой список значений, из которого пользователь может выбрать одно значение.
