1с найти значение в структуре

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

Структура

Описание:

Представляет собой коллекцию пар КлючИЗначение. При этом ключ может быть только строковым и должен удовлетворять требованиям, предъявляемым к именованию переменных встроенного языка.

К значениям структуры можно обращаться как к свойствам объекта. При этом ключ используется как имя свойства.

Структура используется обычно для хранения небольшого количества значений, каждое из которых имеет некоторое имя.

Элементы коллекции: КлючИЗначение

Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.

Структура в языке программирования 1С 8.3 и 8.2 — набор пар «Ключ» и «Значение». Поле «Ключ» имеет строковый тип, «Значение» же может принимать любой тип данных. Обычно используется для хранения и передачи между процедурами набора каких-либо параметров.

Создание новой структуры

Структуру в языке программирования 1С можно создать двумя способами с помощью конструкции «Новый».

Структура = Новый Структура;
Структура.Вставить(«КлючПараметра1», «Значения параметра №1»);
Структура.Вставить(«КлючПараметра2», «Значения параметра №2»);

Структура = Новый Структура(«КлючПараметра1, КлючПараметра2», «Значения параметра №1», «Значения параметра №2»);

Оба способа создадут структуру, которую видно на скриншоте из отладки:

Получите 267 видеоуроков по 1С бесплатно:

Изменение

Добавить или изменить структуру можно, используя метод «Вставить()».

Если требуется изменить значение старого ключа, вписываем его имя. Если добавить новый ключ, добавить уникальное имя относительно всех ключей структуры.

Чтобы удалить элемент коллекции, нужно воспользоваться методом «Удалить», куда передать имя ключа:

Возможна также очистка всех объектов коллекции:

Обход структуры

Чтобы перебрать коллекцию структуры, нужно использовать конструкцию «Для Каждого КлючИЗначение Из Структура Цикл».

Для Каждого КлючИЗначение Из Структура Цикл
…… //обрабатываем, например, изменяем значения
КонецЦикла;

В каждом цикле будет видно, что нам доступны следующие поля:

Количество элементов в структуре можно подсчитать следующим образом:

Проверка наличия ключа

Часто бывает, что нужно проверить, есть ли в структуре нужное значение по ключу. В таком случае следует использовать метод «Свойство»:

Если в структуре есть элемент с ключом «Контрагент», тогда метод вернет «Истина», в противном случае — «Ложь».

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

(0 голосов, в среднем: 0 из 5)

Поддержите нас, расскажите друзьям!

СПРОСИТЕ в комментариях!

Есть одна информация, которая не дает мне покоя. В синтаксис-помощнике написано:
Структура (Structure)
()
Использование:

Автор статьи предлагает при изменении существующего ключа структуры использовать метод Вставить. Все, вроде бы, логично и правильно, но тем не менее, если я сделаю так:
Структура.КлючПараметра1=»Другое значение параметра 1″, то 1С-ка проглотит это и не подавится, в то же время как в СП четко написано «ТОЛЬКО ЧТЕНИЕ». Или я чего-то не понимаю?

Структура.КлючПараметра1= «Другое значение параметра 1″

«КлючПараметра1» — это имя ключа (ТОЛЬКО ЧТЕНИЕ)

Значение параметра меняем как хотим ��

Ну… так-то если подойти, то да)). Однако, насколько я понял, структура СП в части свойств объекта, который она описывает выглядит так:
Если свойство четко определено — то пишется имя свойства. Например

СправочникСсылка
Наименование
Только чтение

СправочникОбъект
Наименование
Чтение и запись

Если же имя свойства неопределено, оно пишется в тегах «знак больше» и «знак меньше», как в этом случае со свойством «Имя ключа»

И в тех и в других случаях, когда говорится «Только чтение» или «Чтение и запись» — то имеют в виду ЗНАЧЕНИЕ СВОЙСТВА, А НЕ ЕГО ИМЯ.
Например
СправочникОбъект
ИмяОбщегоРеквизита
Чтение и запись (проверьте сами в СП)
здесь же не имеется в виду, что мы можем менять САМО ИМЯ ОБЩЕГО РЕКВИЗИТА. Его-то уж точно нельзя менять. Здесь написано «Чтение и запись» для ЗНАЧЕНИЯ ЭТОГО СВОЙСТВА

Проводя такой же аналог для структуры получаем что речь идет именно о значении свойства, которое указано в имени ключа. Вот в чем прикол-то))

Структура и соответствие являются своего рода таблицей, имеющей две колонки: ключ и значение. В колонке «Ключ» хранится индексируемый элемент, по которому производится поиск. Сам элемент поиска находится в поле «Значение». Какой механизм лучше использовать с точки зрения быстродействия поиска? Проведем серию экспериментов.

Создадим справочник Товары и наполним его 20 000 элементами. Далее с помощью нехитрой процедуры запишем данные всех этих элементов в структуру и соответствие. В первом эксперименте в ключ будем записывать ссылку для соответствия и наименование для структуруы. Во втором замере в качестве ключа будем использовать наименивание для обоих классов. В третьем для ключа структуры выбрано наименоваине, для соответствия — числовое поле.

1 опыт 2 опыт 3 опыт
Соответствие Ссылка Строка Число
Структура Строка Строка Строка

Ниже приведен листинг процедуры для поиска значения по ключу для соответствия и структуры.

Для первого опыта получены следующие результаты:

Как мы видим, с достаточно большим отрывом выигрывает соответствие. Время поиска для структуры показано примерно в 1/4 раза медленнее.

После второго эксперимента ситуация кардинально изменилась:

Время поиска для соответствия с параметром типа «Строка» в ключе проигрывает структуре практически в два раза.

В ходе третьего эксперимента лидерство вновь захватило соответствие.

Более чем в шесть раз соответствие справилось с этим заданием быстрее.

Таким образом можно делать выводы, что для поиска значений по строковому представлению как нельзя лучше подходит структура, так как этот тип данных специализирован как раз для строковых ключей. Однако при возможности использования других типов для ключа, таких как «Число» или «Ссылка», лучшие результаты показывает соответствие. Ответить с уверенностью почему именно так не представляется возможным, так как система для более глубоких опытов остается закрытой.

Оцените статью