1c:коллекции:фиксированная_структура
Содержание
Фиксированная структура
Фиксированная структура — это неупорядоченная неизменяемая коллекция, состоящая из пар Ключ-Значение. В отличие от обычной структуры, в фиксированную структуру невозможно добавить новую пару значений, изменить или удалить существующую.
Назначение фиксированной структуры по первоначальной задумке разработчиков 1с — использование в качестве значений параметров сеанса. Но в ходе развития платформы фиксированная структура всё чаще встречается в качестве параметра различных встроенных функций и методов. Использование параметров такого типа гарантирует, что этот параметр не будет изменён внутри тела процедуры или функции.
Англоязычный аналог — FixedStructure
.
Создание и использование
Фиксированная структура поддерживает оба варианта конструирования простой структуры. Но так как в фиксированную структуру невозможно добавить новые реквизиты, есть смысл использовать лишь вариант с передачей начальных значений:
Структура = Новый ФиксированнаяСтруктура(«КакойТоКлюч1, КакойТоКлюч2», ЗначениеКотороеНадоСохранить1, ЗначениеКотороеНадоСохранить2);
Существует также способ создания переменных данного типа на основе уже созданной обычной структуры:
Структура = Новый Структура; Структура.Вставить(«КакойТоКлюч1», ЗначениеКотороеНадоСохранить1); Структура.Вставить(«КакойТоКлюч2», ЗначениеКотороеНадоСохранить2); Структура2 = Новый ФиксированнаяСтруктура(Структура);
К значениям структуры можно обращаться как к значениям обычной структуры:
Сообщить(Структура2.КакойТоКлюч2);
Возможен также перебор значений в цикле посредством оператора Для Каждого…Из…Цикл. Порядок следования пар при таком переборе не определён.
XDTO
Фиксированная структура может быть выгружена/загружена с помощью механизма XDTO. Для этого существует тип FixedStructure
пространства имён http://v8.1c.ru/8.1/data/core
(является частью платформы). Разумеется, для успешной операции подобными свойствами должны обладать все сохранённые в структуре значения.
Ограничения
Ограничения у фиксированной структуры такие же, что и у обычной — к ключу предъявляются требования как к именам переменных. Плюс невозможность изменения содержимого — будет вызвано исключение. Методы изменения содержимого отсутствуют.
Доступность
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер).
Свойства и методы
Наименование | Назначение |
---|---|
Свойства | |
<Имя ключа> | Возвращает значение, связанное с ключом <Имя ключа>. |
Методы | |
ФиксированнаяСтруктура | Создаёт переменную данного типа. |
Количество | Возвращает число элементов структуры. |
Свойство | Позволяет определить наличие свойства. |
См. также
Только авторизованные участники могут оставлять комментарии.
· Последнее изменение: 2020/10/25 12:00 —
admin
Структура в 1С 8.3 это динамический набор данных (коллекция значений), каждый элемент которой состоит из пары «Ключ» и «Значение». Ключи структуры уникальны, поэтому ими можно идентифицировать значения. Ключ структуры должен иметь строковый тип данных и отвечать требованиям к именам переменных. К значениям структуры можно обращаться как к свойствам объекта, при этом ключ используется как имя свойства.
Содержание
- Создание структуры
- Добавление элементов, установка значений
- Как узнать количество элементов структуры
- Обход элементов структуры
- Проверить ключ структуры на существование
- Получить значение элемента структуры по ключу
- Удалить элемент структуры
- Удалить все элементы структуры
- Пример преобразования структуры в таблицу значений
- Как скопировать структуру
- Пример №1
- Пример №2
- Пример №3
Создание структуры
Автомобиль = Новый Структура("Марка,ДатаВыпуска,ПробегКМ","BMW",Дата('20190101'),25000);
Результат:
Добавление элементов, установка значений
Метод Вставить() устанавливает значение элемента структуры по ключу. Если элемент с переданным значением ключа существует, то его значение заменяется, в противном случае добавляется новый элемент.
Автомобиль.Вставить("Цвет","Белый");//Добавили ключ и значение. Автомобиль.Вставить("Цвет","Чёрный");// Т.к. ключ "Цвет" уже существует, произошла замена значения. //Другие способы для установки значений Автомобиль.Цвет = "Белый";//Для ключа "Цвет" установили значение "Белый" Автомобиль["Цвет"] = "Чёрный";//Для ключа "Цвет" установили значение "Чёрный"
Как узнать количество элементов структуры
КоличествоЭлементов = Автомобиль.Количество();
Обход элементов структуры
Для Каждого Элемент Из Автомобиль Цикл Ключ = Элемент.Ключ; Значение = Элемент.Значение; Сообщить(Ключ + " - " + Значение); КонецЦикла;
Проверить ключ структуры на существование
// Если ключ существует, выражение вернёт "ИСТИНА" иначе вернёт "ЛОЖЬ" Автомобиль.Свойство("Марка");
Получить значение элемента структуры по ключу
ЗначениеЭлемента = Неопределено; Автомобиль.Свойство("Марка ",ЗначениеЭлемента);
Удалить элемент структуры
Автомобиль.Удалить("Цвет ");
Удалить все элементы структуры
Автомобиль.Очистить();
Пример преобразования структуры в таблицу значений
&НаКлиенте Процедура СтруктураВТЗ(Команда) РасписаниеДня = Новый Структура(); РасписаниеДня.Вставить("Начало","08:00"); РасписаниеДня.Вставить("Обед","12:00"); РасписаниеДня.Вставить("Конец","17:00"); ТаблицаЗнач = СтруктураВТЗНаСервере(РасписаниеДня); КонецПроцедуры &НаСервере Функция СтруктураВТЗНаСервере(РасписаниеДня) ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Период"); ТЗ.Колонки.Добавить("Время"); Для Каждого КлючИЗначение из РасписаниеДня Цикл НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Период = КлючИЗначение.Ключ; НоваяСтрока.Время = КлючИЗначение.Значение; КонецЦикла;
Возврат ТЗ;
КонецФункции
Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.
Связаться с нами можно по телефону +7 499 350 29 00.
Услуги и цены можно увидеть по ссылке.
Будем рады помочь Вам!
Результат:
Как скопировать структуру
Пример №1
&НаКлиенте Процедура СкопироватьСтруктуру(Команда) Структура = Новый Структура(); Структура.Вставить("Фамилия","Петров"); Структура.Вставить("Имя","Пётр"); Структура.Вставить("Отчество","Петрович"); КопияСтруктуры= Новый Структура(); Для Каждого КлючИЗначение Из Структура Цикл КопияСтруктуры.Вставить(КлючИЗначение.Ключ,КлючИЗначение.Значение); КонецЦикла; КонецПроцедуры
Пример №2
Способ работает в рамках одной информационной базы.
&НаКлиенте Процедура СкопироватьСтруктуру2(Команда) Структура = Новый Структура(); Структура.Вставить("Фамилия","Петров"); Структура.Вставить("Имя","Пётр"); Структура.Вставить("Отчество","Петрович"); КопияСтруктуры = СкопироватьСтруктуруНаСервере(Структура); КонецПроцедуры &НаСервере Функция СкопироватьСтруктуруНаСервере(Структура) КопияСтруктуры = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Структура)); Возврат КопияСтруктуры; КонецФункции
Пример №3
&НаКлиенте Процедура СкопироватьСтруктуру3(Команда) Структура = Новый Структура(); Структура.Вставить("Фамилия","Петров"); Структура.Вставить("Имя","Пётр"); Структура.Вставить("Отчество","Петрович"); КопияСтруктуры = Новый ФиксированнаяСтруктура(Структура); КонецПроцедуры
В примере №3 структура будет скопирована в неизменную (фиксированную) структуру. Для такого вида структур не доступны методы Вставить(), Удалить(), Очистить(). Если требуется изменить фиксированную структуру, её необходимо скопировать в обычную.
ОбычнаяСтруктура = Новый Структура(ФиксированнаяСтруктура);
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
2017-12-18T22:28:48+00:00Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат
ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции
См. урок для начинающих по типу Структура в 1С
Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)
Полный синтаксис (нажмите, чтобы раскрыть)
Оглавление (нажмите, чтобы раскрыть)
&НаКлиенте Процедура ВыполнитьКод(Команда) /// Как создать структуру (способ 1) в 1с 8.3, 8.2 ЛичныеДанные = Новый Структура; // пара ключ (имя переменной) - значение (произв. типа) ЛичныеДанные.Вставить("Фамилия", "Иванов"); ЛичныеДанные.Вставить("Имя", "Иван"); ЛичныеДанные.Вставить("ДатаРождения", '19800802'); Сообщить( ЛичныеДанные.Имя + " " + ЛичныеДанные.Фамилия + " родился " + ЛичныеДанные.ДатаРождения ); /// Как создать структуру (способ 2) в 1с 8.3, 8.2 Время = Новый Структура("Часы,Минуты,Секунды", 12, 45, 33); Сообщить( "Время " + Время.Часы + ":" + Время.Минуты + ":" + Время.Секунды ); /// Как изменить значение поля созданной структуры (способ 1) /// в 1с 8.3, 8.2 ЛичныеДанные.Вставить("Фамилия", "Сидоров"); /// Как изменить значение поля созданной структуры (способ 2) /// в 1с 8.3, 8.2 Время.Часы = 13; /// Как узнать количество элементов структуры в 1с 8.3, 8.2 Сообщить(Время.Количество()); /// Как обойти все элементы структуры в 1с 8.3, 8.2 Для Каждого Элемент Из ЛичныеДанные Цикл Сообщить(Элемент.Ключ + " " + Элемент.Значение); КонецЦикла; /// Как удалить элемент структуры в 1с 8.3, 8.2 ЛичныеДанные.Удалить("ДатаРождения"); /// Как очистить все элементы структуры в 1с 8.3, 8.2 ЛичныеДанные.Очистить(); КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере
Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)
Тип Структура в языке 1С 8.3, 8.2 (в примерах)
Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат
ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Структура представляет собой некий контейнер, который хранит пары ключ и значение. Ключ в структуре может быть только строкового типа и должен удовлетворять требованиям названия переменных в 1С. Для значения структуры нет ограничений. Структуру можно создать как на клиенте, так и на сервере. А также структуру можно передавать с клиента на сервер и обратно.
Создание структуры
Для создания структуры используется конструктор:
СтруктураПараметров = Новый Структура;
Можно сразу в конструкторе указать ключи и значения:
СтруктураПараметров = Новый Структура(«КлючСтруктуры1, КлючСтруктуры2», 25, «значение»);
В этом случае будет создана структура с двумя ключами КлючСтруктуры1 и КлючСтруктуры2. При этом значение ключа КлючСтруктуры1 будет равно 25, а значение ключа КлючСтруктуры2 будет равно строке «значение». В дальнейшем можно изменять значения каждого ключа, можно добавлять новые ключи или удалять существующие. Если для какого-то ключа не указать значение, то оно будет равно Неопределено.
//оба значения будут равны Неопределено
СтруктураПараметров = Новый Структура(«КлючСтруктуры1, КлючСтруктуры2»);
Добавление нового ключа в структуру
Чтобы добавить новый ключ в структуру после ее создания можно использовать метод Вставить. Если в структуре уже был такой ключ, то значение будет заменено.
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить(«НовыйКлюч», 2);
Если попытаться добавить в структуру ключ, который начинается с цифры, то будет вызвано исключение «Задано неправильное имя атрибута структуры»:
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить(«1», 2);
//при компиляции модуля будет ошибка:
//Задано неправильное имя атрибута структуры
Обращение к свойствам структуры
К свойствам (ключам) структуры можно обращаться через точку «.» после имени структуры:
СтруктураПараметров = Новый Структура(«КлючСтруктуры1, КлючСтруктуры2», 25, «значение»);
СтруктураПараметров.КлючСтруктуры1 = «новое значение»;
Можно через оператор индексации []:
СтруктураПараметров = Новый Структура(«КлючСтруктуры1, КлючСтруктуры2», 25, «значение»);
СтруктураПараметров[«КлючСтруктуры1»] = «новое значение»;
Перебор структуры
Перебрать элементы структуры можно с помощью цикла Для Каждого. На каждой итерации цикла будет переменная типа КлючИЗначение. Через свойства Ключ и Значение данной переменной можно только читать значения, изменить нельзя:
Для Каждого КлючИЗначение Из СтруктураПараметров Цикл //метод Сообщить выводит значение на экран Сообщить(КлючИЗначение.Ключ); Сообщить(КлючИЗначение.Значение); КонецЦикла;
Как удалить ключ из структуры
Удалить ключ из структуры можно методом Удалить. Данный метод удалит только один ключ. Если нужно удалить все ключи из структуры, то нужно использовать метод Очистить:
СтруктураПараметров.Удалить(«НовыйКлюч»); //удалит только один ключ
СтруктураПараметров.Очистить(); //удалит все ключи из структуры
Как проверить есть ли в структуре ключ
Метод Свойство позволяет проверить наличие в структуре указанного ключа. Если ключ присутствует в структуре, то метод вернет Истина. Если такого ключа нет, то метод вернет Ложь.
ЕстьКлюч = СтруктураПараметров.Свойство("НовыйКлюч"); Если ЕстьКлюч Тогда Сообщить("Ключ найден!"); КонецЕсли;
Также с помощью данного метода можно получить значение по ключу:
Перем Значение; //вторым параметром передаем переменную, в которую будет помещено значение ЕстьКлюч = СтруктураПараметров.Свойство("НовыйКлюч", Значение); Если ЕстьКлюч Тогда Сообщить(Значение); КонецЕсли;
Если в структуре нет такого ключа, то в переменной Значение будет Неопределено.
Поиск в структуре
Чтобы найти какой-то ключ в структуре можно использовать все тот же самый метод Свойство:
Перем НайденноеЗначение; Если СтруктураПараметров.Свойство("НовыйКлюч", НайденноеЗначение) Тогда Сообщить("Значение найдено: " + НайденноеЗначение); Иначе Сообщить("Значение не найдено"); КонецЕсли;
Но если поиск в структуре нужно выполнить по значению, то придется перебрать всю структуру:
//поищем в структуре значение "Поиск" НашлиЗначение = Ложь; Для Каждого КлИЗнач Из СтруктураПараметров Цикл Если КлИЗнач.Значение = "Поиск" Тогда //нашли НашлиЗначение = Истина; Прервать; КонецЕсли; КонецЦикла; Если Не НашлиЗначение Тогда //не нашли КонецЕсли;
Количество элементов структуры
Узнать количество элементов (ключей, свойств) структуры можно с помощью метода Количество:
Колво = СтруктураПараметров.Количество();
Как скопировать структуру
Стр = Новый Структура("Ключ1", 1); ВложеннаяСтр = Новый Структура("Ключ2", 2); Стр.Вставить("ВложеннаяСтр", ВложеннаяСтр); Копия = Новый Структура; Для Каждого КлючИЗначение Из Стр Цикл Копия.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); КонецЦикла; //в этом случае в структуре Копия в ключе ВложеннаяСтр //будет та же самая структура, что и в переменной //ВложеннаяСтр и в структуре Стр //для создания полной копии можно сделать так: ПолнаяКопия = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Стр));
Фиксированная Структура
Фиксированная структура — это та же самая структура, но после создания нельзя изменить состав ключей и значения. Можно создать на основании обычной структуры (будет создана полная копия), по ключам и значениям или пустую структуру:
//пустая структура
ФиксСтр = Новый ФиксированнаяСтруктура;//по ключам и значениям
ФиксСтр = Новый ФиксированнаяСтруктура(«Ключ1, Ключ2», 1, 2);//на основании обычной структуры
ОбычнаяСтруктура = Новый Структура(«Ключ1, Ключ2», 1, 2);
ФиксСтр = Новый ФиксированнаяСтруктура(ОбычнаяСтруктура);
У фиксированной структуры есть только 2 метода:
— Количество()
— Свойство(<Ключ>, <НайденноеЗначение>)
К ключам структуры можно обращаться как к свойству: ФиксСтр.Ключ1, но нельзя менять значение свойства.
На основании фиксированной структуры можно создать обычную структуру:
ФиксСтр = Новый ФиксированнаяСтруктура(«Ключ1, Ключ2», 1, 2);
ОбычнаяСтруктура = Новый Структура(ФиксСтр);
ОбычнаяСтруктура.Ключ1 = 11; //теперь можно менять значения
Смотрите также:
Электронный учебник по по программированию в 1С
Рекомендации по изучению программирования 1С с нуля
Программное решение для сдачи и подготовки к экзаменам
Программирование в 1С 8.3 с нуля — краткий самоучитель
Комплексная подготовка программистов 1С:Предприятие 8.2
Сайты с уроками программирования и со справочниками
Youtube-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки
Структура в 1С
В языке программирования 1С, есть несколько коллекций (множеств) значений. Каждые из них имеют свои возможности и предназначение, хотя иногда имеют одинаковые методы (например Количество()).
Структура — один из основных видов коллекций, по сути, это массив именованных значений.
Какие особенности имеет структура
- Имя (Ключ) значения всегда строка, которое не может начинаться на цифру и содержать некоторые символы (пробел,%,?,>,< и другие);
- ключ не может быть пустым;
- значение может быть произвольного типа, в том числе «Неопределенно» или же Структура(вложенная);
- ключ уникален во всей структуре;
- регистр ключа имеет значение («Ключ» не равно «ключ»);
- структура может быть пустой(не содержать значений);
- значения могут быть инициализированы при создании, либо заполнены поочередно;
- является универсальным транспортным значением для всех платформ 1с и видов исполнения (не мутабельное);
- возможно использование в системной процедуре ЗаполнитьЗначения();
- тип «Структура» не хранится в базе данных (это рабочее, промежуточное значение или свойство объекта);
- ключ нельзя изменить (переименовать);
- скоростью обращения к значению обычно пренебрегают при небольших коллекциях, но структура не является индексированной таблицей (скорость опредяеляется скоростью памяти, перебора значений до искомого).
Приемы работы со структурой
//Создание структуры:
Структура = Новый Структура;
Структура = Новый Структура("Ключ1,Ключ2","Значение1",2);
//Обращение к значению структуры
Значение1 = Структура.Ключ1;
Значение2 = Структура["Ключ2"];
//Добавление значения
Структура.Вставить("Ключ3", Дата(1,1,1));
//Замена значения - если "Ключ3" существует, значение заменяется, иначе добавляется
Структура.Вставить("Ключ3", Дата(2020,11,1));
//Удаление одного значения
Структура.Удалить("Ключ2");
//Удаление всех значений
Структура.Очистить();
//Перебор значений
Для каждого ЭлементСтруктуры из Структура Цикл
Сообщить(ЭлементСтруктуры.Ключ);
Сообщить(ЭлементСтруктуры.Значение);
КонецЦикла;
//Копирование значений структуры
Структура = Новый Структура("Ключ1,Ключ2","Значение1",2);
СтруктураПриемник = Новый Структура("Ключ1,Ключ2");
ЗаполнитьЗначенияСвойств(СтруктураПриемник,Структура);
//Проверка наличия значения с определенным ключом в структуре
Если Структура.Свойство(«Ключ») = Ложь Тогда //Используется как функция
Структура.Вставить(«Ключ»,»Теперь ключ есть»);
Значение = Неопределено;
Структура.Свойство(«Ключ»,Значение); //Используется как процедура
Сообщить(Значение); //Значение стало «Теперь ключ есть»
КонецЕсли;
//У объекта есть служебное свойство: ДополнительныеСвойства
Документ = Документы.РеализацияТоваровИУслуг.СоздатьОбъект();
Документ.ДополнительныеСвойства.Вставить("Ключ1",2);
У структуры есть объект-потомок — «ФиксированнаяСтруктура», ее значения нельзя поменять: вставить, удалить, остальные методы у них одинаковы, поэтому она и называется фиксированной.
Фиксированную структуру можно инициализировать при создании на основании структуры.
Структура = Новый Структура("ИмяЗначения",0);
Фикс = Новый ФиксированнаяСтруктура(Структура);
Сообщить(Фикс.ИмяЗначения);
Один миллион, вложенный в эффективную рекламу, продает больше, чем десять миллионов, вложенных в неэффективную рекламу… Плохая реклама может и совсем отпугнуть покупателя.
Структура
Описание:
Представляет собой коллекцию пар КлючИЗначение. При этом ключ может быть только строковым и должен удовлетворять требованиям, предъявляемым к именованию переменных встроенного языка.
К значениям структуры можно обращаться как к свойствам объекта. При этом ключ используется как имя свойства.
Структура используется обычно для хранения небольшого количества значений, каждое из которых имеет некоторое имя.
Элементы коллекции: КлючИЗначение
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Свойства:
Имя ключа | В качестве свойств структура предоставляет элементы. Имя свойства определяется ключом, а значение свойства определяется значением элемента. |
Методы:
Вставить(<Ключ>, <Значение>) | Устанавливает значение элемента структуры по ключу. Если элемент с переданным значением ключа существует, то его значение заменяется, в противном случае добавляется новый элемент. |
Количество() | Получает количество элементов структуры. |
Очистить() | Удаляет все элементы структуры. |
Свойство(<Ключ>, <НайденноеЗначение>) | Получает значение элемента по указанному имени, а также проверяет, имеется ли указанное свойство. Возвращает Истина — ключ найден, Ложь — в противном случае. |
Удалить(<Ключ>) | Удаляет элемент структуры с заданным ключом. |
Конструкторы:
Новый Структура(<ФиксированнаяСтруктура>) | Создаваемая структура заполняется свойствами из исходной фиксированной структуры. |
Новый Структура(<Ключ>, <Значения>) | Создает структуру с ключами, значения которых передаются в параметре конструктора. Если в первом параметре заданы ключи элементов структуры, то в следующих параметрах могут быть указаны значения этих элементов в том порядке, в котором они расположены в строке в первом параметре. |
Как создать структуру в 1с 8.2, 8.3?
Способ 1 — без данных
НоваяСтруктура = Новый Структура;
Способ 2 — с заполнением данными
НоваяСтруктура = Новый Структура ("Марка, ГодВыпуска, Цвет","TOYOTA", "2016","Черный"); // Созданная структура имеет пары КлючИЗначение // 1) "Марка" -> "TOYOTA" // 2) "ГодВыпуска" -> "2016" // 3) "Цвет" -> "Черный"
Как добавить элемент в структуру в 1с 8.2, 8.3?
// Создаем структуру НоваяСтруктура = Новый Структура; // Добавляем данные используя метод Вставить(<Ключ>,<Значение>) НоваяСтруктура.Вставить("Марка","TOYOTA"); НоваяСтруктура.Вставить("ГодВыпуска","2016"); НоваяСтруктура.Вставить("Цвет","Черный");
Как изменить значение ключа созданной структуры в 1с 8.2, 8.3?
Способ 1
// Создаем структуру НоваяСтруктура = Новый Структура; // Добавляем данные используя метод Вставить(<Ключ>,<Значение>) НоваяСтруктура.Вставить("Марка","TOYOTA"); НоваяСтруктура.Вставить("ГодВыпуска","2016"); НоваяСтруктура.Вставить("Цвет","Черный"); // Меняем значение поля Марка НоваяСтруктура.Марка = "ВАЗ"; // Теперь значение поля Марка - "ВАЗ".
Способ 2
НоваяСтруктура.Вставить("Марка","Chevrolet"); // Теперь значение поля Марка - "Chevrolet"
Как узнать количество элементов в структуре 1с 8.2, 8.3?
//Для вывода количества элементов структуры используем метод Количество(). Сообщить(НоваяСтруктура.Количество()); // По нашим примерам выше количество элементов вернется - 3
Как удалить элемент из структуры в 1с 8.2, 8.3?
//Для удаления одного элемента из структуры, //необходимо передать имя ключа в метод Удалить(<Ключ>), //после этого элемент с переданным ключом будет удален. НоваяСтруктура.Удалить("Цвет");
Как удалить все элементы из структуры в 1с 8.2, 8.3?
//Для удаления всех элементов из структуры необходимо вызвать метод Очистить(). НоваяСтруктура.Очистить();
Как обойти все элементы структуры в 1с 8.2, 8.3?
//Для обхода всей структуры (коллекции) необходимо использовать конструкцию - Для Каждого Из Цикл Для Каждого ЭлементСтруктуры Из НоваяСтруктура Цикл Сообщить(ЭлементСтруктуры.Ключ+" "+ЭлементСтруктуры.Значение); КонецЦикла;
На чтение 5 мин Просмотров 1к. Опубликовано 27.07.2021
Большинство объектов встроенного языка 1с предназначены для описания алгоритмов функционирования бизнес-логики.
Еще одна группа объектов, не входящая в состав объектов базы данных, — универсальные коллекции значений — не менее важная группа объектов. Хранит временные наборы данных в течение сеанса работы пользователя, служит для вспомогательного сбора, группировки, анализа и обработки информации:
Содержание
- Массив
- Структура
- Соответствие
- Список значений
- Таблица значений
- Дерево значений
- COMSafeArray
- Фиксированный массив
- Фиксированная коллекция
- Фиксированное соответствие
- Фиксированная структура
Массив
Представляет собой пронумерованную коллекцию значений произвольного типа. К элементу массива можно обращаться по его индексу. В качестве элементов массива могут выступать, в частности, другие массивы. Это позволяет создавать многомерные массивы.
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются значения элементов массива. Возможно обращение к значению элемента посредством оператора […]. В качестве аргумента передается индекс значения (нумерация с 0).
Более подробно о массивах тут.
Структура
Также как и структура, представляет собой коллекцию пар ключ — значение. Однако, в отличие от структуры, ключ может быть практически любого типа.
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы соответствия. Возможно обращение к значению элемента посредством оператора […]. В качестве аргумента передается значение ключа элемента.
Соответствие
Также как и структура, представляет собой коллекцию пар ключ — значение. Однако, в отличие от структуры, ключ может быть практически любого типа.
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы соответствия. Возможно обращение к значению элемента посредством оператора […]. В качестве аргумента передается значение ключа элемента.
Список значений
Список значений — это не сохраняемый в базе данных объект, который позволяет строить для решения интерфейсных задач динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Может быть наполнен значениями любого типа, т.е. в одном списке типы хранимых значений могут быть разными.
Например, список значений может использоваться для выбора конкретного документа из списка возможных документов, сформированного по сложному алгоритму.
Таблица значений
Таблица значений позволяет строить динамические наборы значений и манипулировать ими. Она может быть наполнена значениями любого типа, и в одной таблице типы хранимых значений могут быть разными.
Одним из примеров использования таблицы значений может служить организация представления в форме списка элементов справочника, отобранных по сложному алгоритму.
Таблица значений, связанная с элементом управления ТабличноеПоле, будет иметь все колонки, имеющиеся в табличном поле, с соответствующими именами. Кроме того, таблица значений может иметь также и собственные колонки, не отображаемые в табличном поле, при этом их имена должны отличаться от имен колонок табличного поля.
Дерево значений
Дерево значений представляет собой динамически формируемый набор значений любого типа, похожий на таблицу значений. В отличие от таблицы значений, строки дерева значений могут образовывать иерархические структуры: каждая строка дерева может иметь набор подчиненных строк, каждая из подчиненных строк, в свою очередь, также может иметь набор подчиненных строк и так далее. При этом поиск значений, сортировка, получение итогов могут осуществляться либо по текущему уровню иерархии, либо включая все подчиненные.
Дерево значений может иметь визуальное представление, если с ним связать элемент управления ТабличноеПоле. Внешний вид такого элемента будет похож на дерево групп справочника.
Дерево значений, связанное с элементом управления ТабличноеПоле, будет иметь все колонки, имеющиеся в табличном поле, с соответствующими именами. Кроме того, дерево значений может иметь также и собственные колонки, не отображаемые в табличном поле, при этом их имена должны отличаться от имен колонок табличного поля.
COMSafeArray
Представляет собой объектную оболочку над многомерным массивом SAFEARRAY из COM. Позволяет создавать и использовать SAFEARRAY для обмена данными между COM-объектами.
Фиксированный массив
Неизменяемый массив. Заполняется системой при инициализации объектов данного типа или разработчиком, с помощью конструктора.
Фиксированная коллекция
Системная коллекция значений. Используется в качестве значений свойств других объектов. Заполняется системой при инициализации объектов данного типа. Создать этот объект средствами встроенного языка нельзя. Набор свойств этого объекта определяется в зависимости от контекста его использования и описан подробнее в описании тех свойств, где он используется.
Фиксированное соответствие
Неизменяемая коллекция пар КлючИЗначение. В качестве ключа может выступать любое значение. Рекомендуется, чтобы в качестве ключа выступало значение примитивного типа или другого типа, значение которого может только присваиваться, но не может менять свое содержимое.
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы соответствия. Возможно обращение к значению элемента посредством оператора […]. В качестве аргумента передается значение ключа элемента.
Если при обращении к элементу коллекции с помощью оператора [], указан несуществующий ключ, будет вызвано исключение. В то же время метод Получить, в параметре которого указан несуществующий ключ, возвращает значение Неопределено.
Фиксированная структура
Фиксированная коллекция пар КлючИЗначение. При этом ключ может быть только строковым и должен удовлетворять требованиям, предъявляемым к именованию переменных встроенного языка. К значениям структуры можно обращаться как к свойствам объекта. При этом ключ используется как имя свойства. Предназначен для использования в качестве значений параметров сеанса.
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.