1с перебрать элементы справочника

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

Справочники

Описание:

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

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

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

В ходе написания алгоритмов может возникнуть потребность перебрать все элементы справочника Например, может понадобиться получить реестр какого-либо справочника (товаров, контрагентов и т.д.), содержащий перечень всех элементов этого справочника

Для формирования такого реестра создайте отчет с помощью Конструктора Отчетов и Конструктора Макета Отчетов (Конструктору Макета Отчетов следует указать, что отчет будет содержать циклы по строкам, количество циклов по строкам -1, количество колонок — 3).

Конструктор Макета Отчета сгенерирует процедуру формирования отчета:

Эта процедура пока содержит только строки вывода печатной формы, но не содержит строк получения и вывода необходимых данных.

Рассмотрим пример формирования реестра товаров (элементов справочника «Номенклатура»).

Наша задача — обойти все элементы справочника «Номенклатура» и вывести необходимую информацию — код, наименование и цену товара — на печать.

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

Для выполнения необходимых действий над справочником «Номенклатура» мы должны создать специальную переменную с помощью функции «СоздатьОбъект»:

Эта переменная будет использоваться для перебора элементов справочника Далее выберем элементы справочника с помощью метода «ВыбратьЭлементы»:

Метод «ВыбратьЭлементы» открывает (начинает) перебор элементов справочника. В данном случае, мы выбираем все элементы справочника «Номенклатура». Обрабатывать элементы справочника мы будем в цикле, который у нас уже в каком-то виде есть, он содержит оператор вывода строки в печатную форму, но не содержит условия.

Очевидно, цикл нам нужен, чтобы перебрать все элементы справочника. Для получения очередного элемента справочника, мы воспользуемся методом «ПолучитьЭлемент».

Чтобы получить очередной элемент справочника, следует записать:

Если элемент справочника выбран, метод возвращает значение «1», в противном случае — «0» Поэтому, прежде чем выполнять над элементом справочника какие-либо действия, необходимо проверить, результат работы метода (то есть, мы проверяем, имеется ли у нас элемент справочника для обработки)

Запишем выражение для проверки результата выборки элементов справочника в условие цикла:

Таким образом, для перебора всех элементов справочника мы использовали конструкции организации цикла и методы «ВыбратьЭлементы» — «ПолучитьЭлемент». После выполнения метода «ПолучитьЭлемент» переменная «Спр» позиционирована (установлена) на очередной элемент справочника. При этом все реквизиты этого элемента можно получить обращаясь через точку («Спр.Код, Спр.Наименование и т.д.). При следующем выполнении метода «ПолучитьЭлемент» переменная позиционируется на следующий элемент и обращение «через точку» к реквизитам уже будет выдавать информацию о следующем элементе.

Итак, мы перебрали все элементы справочника и для каждого элемента вывели в печатную форму строку Но в сформированном Конструктором шаблоне печатной формы отчета секция «Строка_1» состоит из пустой строки:

Кроме того, в шапке формируемого отчета стоят условные названия колонок отчета Колонка_1, Колонка_2, Колонка_3. Заменим их названиями «Код», «Наименование» и «Цена».

А в секции Строка_1 в колонках таблицы 2, 3 и 4 запишем соответственно Спр.Код, Спр.Наименование и Спр.Цена:

Доработка алгоритма, в целом, завершена. В справочнике «Номенклатура» мы перебрали все элементы и вывели в отчет их реквизиты: «Код», «Наименование» и «Цена».

Как в цикле получить все элементы справочника 1С 8.2 — 8.3.

Как в цикле перебрать все элементы справочника.

На примере получим все элементы справочника Номенклатура (Наименования) в цикле.

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