Примеры работы с коллекциями в 1С 8.x Структура

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

Структура


&НаКлиенте
Процедура РаботаСоСтруктурой(Команда)
	//как создать структуру
	СтруктураЦвета = Новый Структура();
	СтруктураЦвета.Вставить("Банан", "Желтый");   //ключ, значение
	СтруктураЦвета.Вставить("Киви", "Зеленый");
	
	//как создать структуру 2й способ
	СтруктураЦвета = Новый Структура("Банан,Киви", "Желтый", "Зеленый"); //"ключ1,..ключN", значения через запятую
	
	//как получить значение из структуры
	Сообщить("1.Цвет банана "+СтруктураЦвета.Банан);
	Сообщить("1.Цвет киви "+СтруктураЦвета.Киви);
	
	//как перебрать все элементы структуры
	Для каждого ЭлементСтруктуры Из СтруктураЦвета Цикл
		Сообщить("2."+ЭлементСтруктуры.Ключ + " " + ЭлементСтруктуры.Значение);	
	КонецЦикла;
	
	//как удалить элемент структуры
	СтруктураЦвета.Удалить("Банан");
	
	//как изменить значение элемента
	СтруктураЦвета.Киви = "Коричневый";
	
	//как изменить значение элемента 2й способ
	СтруктураЦвета["Киви"] = "Коричневый";
	
	Сообщить("3.Киви теперь цвета "+СтруктураЦвета.Киви);
	
	//как очистить структуру
	СтруктураЦвета.Очистить();
	
	//как заполнить значения элементов структуры из другой коллекции в одну строку
	//используем "ЗаполнитьЗначенияСвойств"
	СтруктураЦвета = Новый Структура("Яблоко,Слива,Вишня");
	ЗаполнитьПоВыборкеСервер(СтруктураЦвета);
	Для каждого ЭлементСтруктуры Из СтруктураЦвета Цикл
		Сообщить("4." + ЭлементСтруктуры.Ключ + " цвета " + ЭлементСтруктуры.Значение);	
	КонецЦикла;
	
	//как узнать есть ли свойство (ключ) в структуре
	Если СтруктураЦвета.Свойство("Слива") Тогда
		Сообщить("5.Ключ ""Слива"" есть в этой структуре!");
	КонецЕсли;
	
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьПоВыборкеСервер(СтруктураЦвета)
	//готовим "выборку запроса", это тоже своего рода коллекция	
	Запрос = Новый Запрос();	
	Запрос.Текст = "Выбрать ""Синий"" КАК Слива, ""Вишневый"" КАК Вишня";	
	ВыборкаЗапроса = Запрос.Выполнить().Выбрать(); 
	ВыборкаЗапроса.Следующий();
	
	//заполняем структуру
	ЗаполнитьЗначенияСвойств(СтруктураЦвета, ВыборкаЗапроса); //заполнится по совпадающим ключам	
	
КонецПроцедуры

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

1.Цвет киви Зеленый
1.Цвет банана Желтый
2.Банан Желтый
2.Киви Зеленый
3.Киви теперь цвета Коричневый
4.Яблоко цвета
4.Слива цвета Синий
4.Вишня цвета Вишневый
5.Ключ "Слива" есть в этой структуре!
Добавить комментарий