Объекты состоящие из нескольких однотипных элементов, такие как Массив, Структура, Список значений, Таблица значений, Соответствие, используются в программах 1С повсеместно. Рассмотрим основные приемы работы с такими объектами, по другому их можно назвать "коллекциями".

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

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

КонецПроцедуры

&НаКлиенте
Процедура ВыборИзСпискаЗавершение(Элемент, ДопПар) Экспорт
	Если Элемент = Неопределено Тогда
		Сообщить("5. Не выбрано");
	Иначе
		Сообщить("5. Выбран "+Элемент.Значение);
	КонецЕсли;		
КонецПроцедуры

&НаКлиенте
Процедура ОтметкаВСпискеЗавершение(Список, ДопПар) Экспорт
	Если Список = Неопределено Тогда
		Сообщить("6. Не выбрано");
	Иначе
		СтрокаОписание = "";
		Для каждого Эл Из Список Цикл
			Если Эл.Пометка Тогда
				СтрокаОписание = СтрокаОписание + Эл.Значение + ", ";		
			КонецЕсли;			
		КонецЦикла;
		СтрокаОписание = Лев(СтрокаОписание, СтрДлина(СтрокаОписание)-2);
		Сообщить("6. Выбраны: "+СтрокаОписание);
	КонецЕсли;		
КонецПроцедуры

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


 

Результат выполнения обработки будет примерно следующим

Отметка элементов флажками вынесена в другую кнопку, чтобы не было мешанины на экране

 скачать обработку с примерами кода

You have no rights to post comments