Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 июл 2021, 10:03

Вывод иерархических данных в различных справочниках на СКД

Автор MuI_I_Ika, 22 авг 2015, 00:36

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

MuI_I_Ika

Раздел конфигурирования
Прикладные объекты
Вывод иерархических данных в различных справочниках

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

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

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



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

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




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



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



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

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



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



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



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

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

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



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


Похожие темы (1)

Рейтинг@Mail.ru Rambler's Top100

Поиск