|
Сотрудников из регистра сведений по иерархии | ☑ | ||
---|---|---|---|---|
0
dj_serega
29.04.14
✎
19:02
|
Есть регистр сведений у которого два измерения: Сотрудник и Начальник
Данные в регистре хранятся так: Сотрудник Начальник Леонов Трещинков Трещинков Загородко Щелкин Загородко Загородко ------ В итоге нужно получить дерево: Загородко Трещинков Леонов Щелкин Уже пол дня ковыряюсь в этой задаче и никак... с виду интересная, но решения не вижу. Можно ли как-то построить такое дерево запросом? |
|||
1
Wobland
29.04.14
✎
19:04
|
какое такое? да
|
|||
2
dj_serega
29.04.14
✎
19:07
|
Вот такое:
Уровень 1: Загородко Уровень 2: Трещинков Уровень 3: Леонов Уровень 2: Щелкин |
|||
3
Wobland
29.04.14
✎
19:08
|
(2) формализуй задачу, не надо тут частным случаем размахивать
|
|||
4
Эмбеддер
29.04.14
✎
19:13
|
надо сделать кучу соединений, на нулевом уровне выбрать всех, у кого нет начальников и присоединять последовательно
но в самой такой организации данных есть такой косяк, что во-первых можно зациклить сотрудников, во-вторых можно сделать у каждого не одного начальника |
|||
5
Эмбеддер
29.04.14
✎
19:14
|
а вообще надо сделать иерархический справочник вместо такого регистра
|
|||
6
dj_serega
29.04.14
✎
19:14
|
(3) Загородко есть Начальником начальников.
У него в подчинении есть два сотрудника Трещинков и Щелкин. У Трещинкова есть подчиненный леонов. Мне нужно вывести иерархию в виде дерева. |
|||
7
dj_serega
29.04.14
✎
19:16
|
(5) Более чем согласен.
Буду добиваться такого. Но сейчас задача стоит в построении отчета. А переписывать много летние механизмы дело не на 4 минут. |
|||
8
Wobland
29.04.14
✎
19:16
|
(6) ну я чем смог помог ;)
|
|||
9
dj_serega
29.04.14
✎
19:17
|
(8) Ну настроение немного поднял :) вот бы еще сил добавилось. А то или косяки с (4) или бредятина бредятиной получается.
|
|||
10
dj_serega
29.04.14
✎
19:19
|
(4) За идею спасибо. Попробую сейчас.
|
|||
11
Wobland
29.04.14
✎
19:19
|
(9) аль не дошло? нарисуй себе на бумажке в самом общем случае. лопата - друг солдата, а бумажка - друг программиста ;)
|
|||
12
echo77
29.04.14
✎
19:23
|
на СКД собственную иерархию делать
|
|||
13
Эмбеддер
29.04.14
✎
20:01
|
(12) это понятно что своя иерархия, вопрос - как именно
|
|||
14
dj_serega
29.04.14
✎
20:13
|
(13) Ну с первым уровнем вроде получилось. Пробую "глубже" строить.
Текст запроса ниже: ВЫБРАТЬ ИерархияСотрудниковСрезПоследних.Сотрудник, ИерархияСотрудниковСрезПоследних.Начальник, ИерархияСотрудниковСрезПоследних.РегиональныйМенеджер, ИерархияСотрудниковСрезПоследних.Период ПОМЕСТИТЬ Работающие ИЗ РегистрСведений.ИерархияСотрудников.СрезПоследних(, ) КАК ИерархияСотрудниковСрезПоследних ГДЕ ИерархияСотрудниковСрезПоследних.Активность ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Работающие.Сотрудник ПОМЕСТИТЬ Руководители1 ИЗ Работающие КАК Работающие ГДЕ Работающие.Начальник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Руководители1.Сотрудник КАК Начальник1, Работающие.Сотрудник ИЗ Работающие КАК Работающие ВНУТРЕННЕЕ СОЕДИНЕНИЕ Руководители1 КАК Руководители1 ПО Работающие.Начальник = Руководители1.Сотрудник ГДЕ Работающие.Начальник В (ВЫБРАТЬ Руководители1.Сотрудник ИЗ Руководители1 КАК Руководители1) ИТОГИ ПО Начальник1 |
|||
15
Эмбеддер
29.04.14
✎
20:34
|
только соединение не внутреннее, а левое
и соединений надо много ИТОГИ ПО Начальник1, Начальник2... и в СКД игнорировать NULL |
|||
16
dj_serega
29.04.14
✎
20:34
|
(4) Спасибо. Завтра буду детально анализировать. Получилось 4 уровня всего-то :)
Выложу итоговый если будет истина :) |
|||
17
dj_serega
29.04.14
✎
20:35
|
(15) Дада... уже исправил.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |