Вход | Регистрация

1С:Предприятие ::

Метки:справочники

Каким образом из одноуровнего справочника получить дерево?

Я
   3V
 
08.07.04 - 12:59
Суть проблемы такая, что есть справочник "Подразделения" - он одноуровневый, в нем есть реквизит "Родитель" типа справочник "Подразделения", есть справочник "ШтатноеРасписание", в нем есть реквизит "Подразделение" типа справочник "Подразделения".
требуется вывести дерево подразделенийв отчет, при условии, что попадают в отчет только те, которые есть в штатном расписании и те которые являются родителем к попавшим из штатного.
есть какие-нить варианты алгоритма отбора
 
  Рекламное место пустует
   3V
 
1 - 08.07.04 - 14:07
никто, уважаемые, с подобным извращение не сталкивался?
   Warlock
 
2 - 08.07.04 - 14:11
Вот это действительно извращения...
Что, справочник "Подразделения" сам на себя ссылается?! И как ты сделал реквизит "Родитель"?
   3V
 
3 - 08.07.04 - 14:16
ну... :) реквизит называется НовРодитель, елси быть точным а то, что в элементе справочника есть ссылка на другой элемент этого типа или даже на самого себя, то в 1С оно нормально работает
   Press
4 - 08.07.04 - 14:33
|Период с ВыбНачПериода по ВыбКонПериода;
|Подразделение = Справочник.ШтатноеРасписание.Подразделение;
|Родитель = Справочник.ШтатноеРасписание.Подразделение.Родитель;
|Группировка Родитель;     
|Группировка Подразделение; 
?
   3V
 
5 - 08.07.04 - 14:48
(4) и что это даст? полученные значения - просто сдвиг на один уровень вверх от штатки...
   Волшебник
 
6 - 08.07.04 - 14:54
Нужно использовать рекурсию

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

Не забудь всплыть из рекурсии. В этой процедуре должна быть фраза "Если дочерних элементов нет, то Возврат"
   3V
 
7 - 08.07.04 - 14:58
(+5)причем НовРодитель - переодический, а в запросе периодические не юзаются
   Press
8 - 08.07.04 - 15:42
(4) Для 2-х уровнего канает.
Ты, случаем, не велосипед изобретаешь?


Список тем форума
Рекламное место пустует   Рекламное место пустует
Программист всегда исправляет последнюю ошибку.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует