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