Структура в 1С 8.3 — работа на примерах
Структура в 1С 8.3 это динамический набор данных (коллекция значений), каждый элемент которой состоит из пары «Ключ» и «Значение». Ключи структуры уникальны, поэтому ими можно идентифицировать значения. Ключ структуры должен иметь строковый тип данных и отвечать требованиям к именам переменных. К значениям структуры можно обращаться как к свойствам объекта, при этом ключ используется как имя свойства.
Содержание
- Создание структуры
- Добавление элементов, установка значений
- Как узнать количество элементов структуры
- Обход элементов структуры
- Проверить ключ структуры на существование
- Получить значение элемента структуры по ключу
- Удалить элемент структуры
- Удалить все элементы структуры
- Пример преобразования структуры в таблицу значений
- Как скопировать структуру
Создание структуры
Автомобиль = Новый Структура("Марка,ДатаВыпуска,ПробегКМ","BMW",Дата('20190101'),25000);
Результат:
Добавление элементов, установка значений
Метод Вставить() устанавливает значение элемента структуры по ключу. Если элемент с переданным значением ключа существует, то его значение заменяется, в противном случае добавляется новый элемент.
Автомобиль.Вставить("Цвет","Белый");//Добавили ключ и значение. Автомобиль.Вставить("Цвет","Чёрный");// Т.к. ключ "Цвет" уже существует, произошла замена значения. //Другие способы для установки значений Автомобиль.Цвет = "Белый";//Для ключа "Цвет" установили значение "Белый" Автомобиль["Цвет"] = "Чёрный";//Для ключа "Цвет" установили значение "Чёрный"
Как узнать количество элементов структуры
КоличествоЭлементов = Автомобиль.Количество();
Обход элементов структуры
Для Каждого Элемент Из Автомобиль Цикл Ключ = Элемент.Ключ; Значение = Элемент.Значение; Сообщить(Ключ + " - " + Значение); КонецЦикла;
Проверить ключ структуры на существование
// Если ключ существует, выражение вернёт "ИСТИНА" иначе вернёт "ЛОЖЬ" Автомобиль.Свойство("Марка");
Получить значение элемента структуры по ключу
ЗначениеЭлемента = Неопределено; Автомобиль.Свойство("Марка ",ЗначениеЭлемента);
Удалить элемент структуры
Автомобиль.Удалить("Цвет ");
Удалить все элементы структуры
Автомобиль.Очистить();
Пример преобразования структуры в таблицу значений
&НаКлиенте Процедура СтруктураВТЗ(Команда) РасписаниеДня = Новый Структура(); РасписаниеДня.Вставить("Начало","08:00"); РасписаниеДня.Вставить("Обед","12:00"); РасписаниеДня.Вставить("Конец","17:00"); ТаблицаЗнач = СтруктураВТЗНаСервере(РасписаниеДня); КонецПроцедуры &НаСервере Функция СтруктураВТЗНаСервере(РасписаниеДня) ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Период"); ТЗ.Колонки.Добавить("Время"); Для Каждого КлючИЗначение из РасписаниеДня Цикл НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Период = КлючИЗначение.Ключ; НоваяСтрока.Время = КлючИЗначение.Значение; КонецЦикла;
Возврат ТЗ;
КонецФункции
Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.
Связаться с нами можно по телефону +7 499 350 29 00.
Услуги и цены можно увидеть по ссылке.
Будем рады помочь Вам!
Результат:
Как скопировать структуру
Пример №1
&НаКлиенте Процедура СкопироватьСтруктуру(Команда) Структура = Новый Структура(); Структура.Вставить("Фамилия","Петров"); Структура.Вставить("Имя","Пётр"); Структура.Вставить("Отчество","Петрович"); КопияСтруктуры= Новый Структура(); Для Каждого КлючИЗначение Из Структура Цикл КопияСтруктуры.Вставить(КлючИЗначение.Ключ,КлючИЗначение.Значение); КонецЦикла; КонецПроцедуры
Пример №2
Способ работает в рамках одной информационной базы.
&НаКлиенте Процедура СкопироватьСтруктуру2(Команда) Структура = Новый Структура(); Структура.Вставить("Фамилия","Петров"); Структура.Вставить("Имя","Пётр"); Структура.Вставить("Отчество","Петрович"); КопияСтруктуры = СкопироватьСтруктуруНаСервере(Структура); КонецПроцедуры &НаСервере Функция СкопироватьСтруктуруНаСервере(Структура) КопияСтруктуры = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Структура)); Возврат КопияСтруктуры; КонецФункции
Пример №3
&НаКлиенте Процедура СкопироватьСтруктуру3(Команда) Структура = Новый Структура(); Структура.Вставить("Фамилия","Петров"); Структура.Вставить("Имя","Пётр"); Структура.Вставить("Отчество","Петрович"); КопияСтруктуры = Новый ФиксированнаяСтруктура(Структура); КонецПроцедуры
В примере №3 структура будет скопирована в неизменную (фиксированную) структуру. Для такого вида структур не доступны методы Вставить(), Удалить(), Очистить(). Если требуется изменить фиксированную структуру, её необходимо скопировать в обычную.
ОбычнаяСтруктура = Новый Структура(ФиксированнаяСтруктура);