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