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

Список значений — универсальная коллекция значений типа ЭлементСпискаЗначений. Список значений может хранить значения разных типов. ЭлементСпискаЗначений имеет 4 свойства: Значение, Представление, Пометка, Картинка. Список значений можно использовать для интерфейсных задач, например выбор документа из списка. Можно использовать и на клиенте и на сервере, а также передавать с клиента на сервер. В обычном приложении нельзя передавать на сервер.

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

Конструктор для создания пустого списка значений:

//создает пустой список
СписокДокументов = Новый СписокЗначений;

Как добавить новое значение в список значений

//1 параметр - само значение
//2 параметр - представление. Будет отображаться при интерактивном выборе
//3 параметр - пометка. Если Истина, то при интерактивном выборе рядом будет 
//установлена галочка
//4 параметр - картинка
СписокДокументов.Добавить("Док1", "Документ №1", Ложь, БиблиотекаКартинок.Документ);
//можно сразу вставить в нужный индекс
СписокДокументов.Вставить(1, "Док2", "Документ №2", Ложь, БиблиотекаКартинок.Документ);

Как удалить значение из списка значений

//удаление первого элемента из списка
СписокДокументов.Удалить(0);

Как получить значение списка значений по индексу

//получит значение первого элемента
ЗначениеСписка = СписокДокументов.Получить(0).Значение;
 
//можно так:
ЗначениеСписка = СписокДокументов[0].Значение;

Как очистить список значений

//удаление всех элементов списка
СписокДокументов.Очистить();

Как преобразовать массив в список значений

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

Как преобразовать список значений в массив

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

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

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

Как узнать сколько в списке значений элементов

КолвоЭлементов = СписокДокументов.Количество();

Как узнать есть ли в списке значений определенное значение

НайдЗнач = СписокДокументов.НайтиПоЗначению(3);
//если в списке нет такого значения, то НайдЗнач = Неопределено
Если Не НайдЗнач = Неопределено Тогда
	//в НайдЗнач будет элемент списка, а не значение
	Сообщить(НайдЗнач.Значение);	
КонецЕсли;

Как создать копию списка значений

КопияСписка = СписокДокументов.Скопировать();

Как интерактивно выбрать значение из списка значений

&НаКлиенте
Процедура Команда1(Команда)
 
	СписокДокументов = Новый СписокЗначений;
	СписокДокументов.Добавить(1, "один");
	СписокДокументов.Добавить(2, "два");
	СписокДокументов.Добавить(3, "три");
	СписокДокументов.Добавить(4, "четыре");
 
	//в списке для выбора будут представления, а не значения
	ОбратныйВызов = Новый ОписаниеОповещения("ПослеВыбораЭлемента", ЭтотОбъект);
	СписокДокументов.ПоказатьВыборЭлемента(ОбратныйВызов, "Выберите элемент");
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеВыбораЭлемента(ВыбранныйЭлемент, ДопПараметры) Экспорт 
	Если Не ВыбранныйЭлемент = Неопределено Тогда
		Сообщить("Вы выбрали " + ВыбранныйЭлемент.Значение);
	КонецЕсли;	
КонецПроцедуры

В результате на экран будет выведена форма для выбора значения:

После выбора программа сообщит какой элемент был выбран:

Как интерактивно открыть окно для отметки нескольких значений в списке значений

&НаКлиенте
Процедура Команда1(Команда)
 
	//БиблиотекаКартинок.Справочник - картинка в списке для выбора
	СписокДокументов = Новый СписокЗначений;
	СписокДокументов.Добавить(1, "один",, БиблиотекаКартинок.Справочник);
	СписокДокументов.Добавить(2, "два",, БиблиотекаКартинок.Справочник);
	СписокДокументов.Добавить(3, "три",, БиблиотекаКартинок.Справочник);
	СписокДокументов.Добавить(4, "четыре",, БиблиотекаКартинок.Справочник);
 
	//в списке для выбора будут представления и поле для установки галочки
	ОбратныйВызов = Новый ОписаниеОповещения("ПослеВыбораЭлемента", ЭтотОбъект);
	СписокДокументов.ПоказатьОтметкуЭлементов(ОбратныйВызов, "Отметьте нужные элементы");
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеВыбораЭлемента(Список, ДопПараметры) Экспорт 
	Для Каждого ЭлементСписка Из Список Цикл
		Если ЭлементСписка.Пометка Тогда
			Сообщить(ЭлементСписка.Значение);
		КонецЕсли;	
	КонецЦикла;	
КонецПроцедуры

В результате будет открыта форма с возможностью установки галочки возле каждого значения списка:

После выбора программа сообщит какие элементы были выбраны:

Как перебрать список значений

//1 способ
Для Каждого ЭлементСписка Из СписокДокументов Цикл
	ЭлементСписка.Значение = ЭлементСписка.Значение * 2;
КонецЦикла;	
 
//2 способ
Для Счетчик = 0 По СписокДокументов.Количество()-1 Цикл
	СписокДокументов[0].Значение = СписокДокументов[0].Значение/2;		
КонецЦикла;	
 
//в обоих случаях можно менять значения списка

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

СписокДокументов = Новый СписокЗначений;
СписокДокументов.ТипЗначения = Новый ОписаниеТипов("Число");
//теперь будет выполняться преобразование в тип Число
СписокДокументов.Добавить(1);
СписокДокументов.Добавить("один");
СписокДокументов.Добавить(Истина);
СписокДокументов.Добавить(Дата(2020,1,1));
 
//в списке:
//1
//0
//1 - так как истина преобразуется в 1
//0

Как ограничить возможные значения в списке значений

Ограничения = Новый СписокЗначений;
Ограничения.Добавить(2);
Ограничения.Добавить(4);
 
СписокДокументов = Новый СписокЗначений;
СписокДокументов.ДоступныеЗначения = Ограничения;
//в список можно добавить только значения 2 и 4
//все остальные будут добавляться как Неопределено
СписокДокументов.Добавить(1);
СписокДокументов.Добавить(2);
СписокДокументов.Добавить(3);
СписокДокументов.Добавить(4);
 
//в списке:
//Неопределено
//2
//Неопределено
//4

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

Здесь можно скачать шпаргалку по работе со списком значений.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями: