Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Янв 2018, 16:20
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Вывод иерархических данных в различных справочниках на СКД  (Прочитано 10179 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6571
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
Раздел конфигурирования:
Прикладные объекты
Вывод иерархических данных в различных справочниках

Для разных справочников в СКД существуют различные способы вывода иерархии.

Вывод иерархии для справочника с иерархией групп и элементов

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

 

Для вывода в отчете, построенном на СКД достаточно вывести группировку по Номенклатуре с установленным типом группировки Иерархия. А так же в запросе необходимо указать выбор только элементов (не групп).

ВЫБРАТЬ
Номенклатура.Ссылка,
Номенклатура.Код
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
НЕ Номенклатура.ЭтоГруппа



В отчете будет выведена точно такая же иерархия как и в списке справочника.

 

Как мы видим никаких побочных эффектов в виде повторяющихся элементов групп нет.
Если в группировке вместо типа Иерархия поставить тип Только иерархия, то программа предсказуемо выведет только группы номенклатуры, без самих элементов.

 

Вывод иерархии для справочника с иерархией элементов

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


 
Здесь вы не можете наложить условие выбор не групп. Поскольку здесь все не группы. При выводе группировки по иерархии мы видим следующую картину.


 
Как видно на картинке каждый элемент, являющийся родителем повторяется при выводе отчета два раза. Это совершенно неприемлемо при выводе отчетов. Происходит это из-за особенностей вывода иерархии, когда группируемый элемент является и родителем и самостоятельным элементом.
Для того чтобы такая ситуация не происходила необходимо воспользоваться механизмом Связей наборов данных. И если обычно он используется для связей различных наборов данных, то сейчас мы будем связывать один и тот же набор данных. Сам с собой.
Для этого выведем в запрос помимо поля ссылка, поле Родитель. Для того чтобы по ним осуществлять связь. Должна получиться примерно такая картина.


 
Так же есть один нюанс. Вам необходимо указать в этом механизме Начальное значение связи. В нашем случае это будет

ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)

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


 
Сформируем отчет и посмотрим что получилось.
 

Последний раз редактировалось: MuI_I_Ika; 22 Авг 2015, 01:21


 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
102 Сообщений
AIFrame
86 Сообщений
alex0402
34 Сообщений
pavl_vs
23 Сообщений
kiksi
22 Сообщений
andron81_81
17 Сообщений
alexandr_ll
17 Сообщений
Norfolk
15 Сообщений
Artibon
13 Сообщений
LexaK
13 Сообщений

* Кто онлайн

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal