Информационный поток
Задания вакансии материалы разработки сообщения форума
Рубрики статей и материалов
Яндекс-директ

Перебор всех элементов справочника по иерархии.

  • Добавить свою публикацию
  • для этого требуется регистрация

 

Перебрать все элементы справочника довольно простая задача, которую можно реализовать в 1с-ке несколькими способами, самый простой использовать команду «Выборка», как показано во встроенном помощнике, я немного ужму код для наглядности

 

 

Номенклатура = Справочники.Номенклатура;
Выборка = Номенклатура.Выбрать(,, ,);
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.ПолучитьОбъект());
КонецЦикла;

 

 

 

На выходе мы получим перебор всех элементов отсортированных по основному представлению справочника, или можно указать другой порядок сортировки, по наименованию, по коду, или по любому другому реквизиту у которого признак индексирования установлен в значение "Индексировать" или в значение "Индексировать с доп. упорядоч.", казалось  бы, что этого хватит на все случаи жизни. Сейчас, как видно из тематики моих статьей, я разбираюсь с мобильным приложением 1с для андроида, и возникла необходимость обмена данными с основной конфигурацией, для  этого нужно как-то перекинуть справочники в мобильное приложение. Поскольку с планами обмена я еще не сталкивался (стыд мне и позор) решено было использовать обмен данными через электронную почту, и простой текстовый формат. Казалось бы, перебрал все элементы справочника, нужные реквизиты записал в виде строки  «код;наименование;этогрупа;родитель;параметр1» и т.д. но возник один нюанс: припустим у меня структура справочника номенклатура следующая:

 Изображение

 

Если выгружать номенклатуру по кодам, а потом соответственно загружать то мы не сможем записать  номенклатуру с кодом 110, поскольку один из реквизитов – «Родитель» будет ссылаться на несуществующую еще папку «Аксессуары» с кодом 147. Аналогичная ситуация может возникнуть если выгружать номенклатуру отсортированную по наименованию или любому другому реквизиту. Что же делать и как  с этим бороться? Работают же как-то стандартные выгрузки-загрузки и даже не заикаются о подобной проблеме? На помощь придет язык запросов с соответствующим параметром  сортировки данных.  Просто в запрос нужно добавить  поле со ссылкой на елемент, а потом указать что сортировка буде по иерархии.

 

Запрос.Текст =
			    "ВЫБРАТЬ
			 |	 Номенклатура.Родитель,
			 |	 Номенклатура.ЭтоГруппа,
			 |	 Номенклатура.Наименование,
			 |	 Номенклатура.Код,
			 | Номенклатура.Ссылка КАК Номенклатура
			 |ИЗ
			 |	 Справочник.Номенклатура КАК Номенклатура
			 | УПОРЯДОЧИТЬ ПО
			 | Номенклатура ИЕРАРХИЯ
	 | АВТОУПОРЯДОЧИВАНИЕ";

 

Результат выполнения запроса будет следующим:

 

Код

Название

Это Группа

Код Родителья

00000000046

!Серветки

Да

 

00000000077

!Бар-Сервіс

Да

00000000046

00000000076

Сер-ка "Бар-Сервіс" 24х24 (1 шар.) 500 шт барна

Нет

00000000077

00000000399

Сер-ка "Бар-Сервіс" 24х24 (1 шар.) 500 шт барна premium

Нет

00000000077

00000000537

Сер-ка "Бар-Сервіс" 400 шт

Нет

00000000077

 

Ми получили справочник номенклатура отсортированный по иерархии.

Лично мне он пригодился для правильного обмена с мобильным приложением.

 

 
0
Читайте также
Что такое настройка 1С
Типовые конфигурации 1С не способны удовлетворить всем требованиям и решить все задачи- поэтому и нужна подстройка конфигурации в соответствии с требованиями клиента.
Восстановление потерянных реквизитов документов v 7.7
В ранее записанных и проведённых документах пропали некоторые реквизиты. В отчётах полный бардак. Как я решил эту проблему.
Работа с хранилищем конфигурации
Хранилище конфигурации в 1С8
Разработки
Поиск повторяющихся элементов справочников. ДЛЯ ЛЮБОЙ КОНФИГУРАЦИИ 7.7
Обработка для поиска дубляжей элементов справочников для 1С7.7(любой)
Доступ к реквизитам справочника в 1с7.7 для каждого пользователя
Разработка разграничивает доступ к реквизитам справочника в 1С 7.7
Загрузка справочников и документов из excel в 1С 8
"Обработка для загрузки документов и справочников из Excel"
Еще от автора
≡ к списку статей