|
как вывести структурированно иерархию справочника? | ☑ | ||
---|---|---|---|---|
0
falselight
05.12.16
✎
08:39
|
Поделитесь идеей если можно.
На снимке. структура родителей подразделения. Максимальный уровень родителя четвертый. Выборка отсортирована по подразделениям и их родителям. В каждой строке есть подразделение. которое входит в свой уровень группы родителя. В глубоком уровне родительского каталога может быть 1 сотрудник, в иерархии подразделений. Далее в который входят другие подразделения, со своей структурой и сотрудниками. Самых верхних подразделений 5. Как можно вывести это структурированно, в иерархии в табличный документ. В теории? https://cloud.mail.ru/public/51o9/hH2fZqL2W |
|||
1
falselight
05.12.16
✎
11:34
|
нет ни у кого идей?
УПП справочник подразделения там иерархия, как можно её вывести структурой в табличный документ |
|||
2
yzimin
05.12.16
✎
11:36
|
Вывести в дерево, обойти дерево, заполнить табдок как надо
|
|||
3
Лефмихалыч
05.12.16
✎
11:36
|
Упорядочить по Ссылка Иерархия
|
|||
4
catena
05.12.16
✎
11:36
|
ВЫБРАТЬ
ПО.Ссылка КАК Ссылка ИЗ Справочник.ПодразделенияОрганизаций КАК ПО УПОРЯДОЧИТЬ ПО Ссылка ИЕРАРХИЯ |
|||
5
falselight
05.12.16
✎
11:47
|
(2) Вообще никак не соображу (((
вот это что попало выводит Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник, | СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение КАК Подразделение, | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | РаботникиОрганизацийСрезПоследних.Период КАК Период |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеПодразделенийИПодразделенийОрганизаций КАК СоответствиеПодразделенийИПодразделенийОрганизаций | ПО РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации = СоответствиеПодразделенийИПодразделенийОрганизаций.ПодразделениеОрганизации |ГДЕ | РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | |УПОРЯДОЧИТЬ ПО | Подразделение ИЕРАРХИЯ"; Результат = Запрос.Выполнить(); ЭлементыФормы.ПолеОтчета.НачатьАвтогруппировкуСтрок(); ВыборкаДетали = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Пока ВыборкаДетали.Следующий() Цикл ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Пока ВыборкаРезультат.Следующий() Цикл Если ВыборкаРезультат.Подразделение <> "ПУСТО" Тогда ОбластьСтрока.Параметры.Подразделение = ВыборкаРезультат.Подразделение; ЭлементыФормы.ПолеОтчета.Вывести(ОбластьСтрока, ВыборкаРезультат.Уровень(),,Истина); КонецЕсли; КонецЦикла; ОбластьДетальныеЗаписи.Параметры.Заполнить(ВыборкаДетали); ЭлементыФормы.ПолеОтчета.Вывести(ОбластьДетальныеЗаписи, ВыборкаДетали.Уровень()); КонецЦикла; ЭлементыФормы.ПолеОтчета.ЗакончитьАвтогруппировкуСтрок(); (3) пробую у меня не получается (((( (4) нужен справочник подразделения, не подразделения организации, хотя не имеет значения, алгоритм вывода я хочу сделать и понять как нужно такое делать универсально!!!! |
|||
6
catena
05.12.16
✎
12:04
|
(5)Что в вашем понимании "что попало"?
|
|||
7
Wit77
05.12.16
✎
12:15
|
(6) У ТС "Вообще никак не соображу (((" в каждой поднятой ветке. :) Только время потратите.
|
|||
8
catena
05.12.16
✎
12:18
|
(7)Мне своим детям объяснять программирование, я изучаю типы мышления)) Оттачиваю навык, так сказать.
|
|||
9
Wit77
05.12.16
✎
12:19
|
(8) О! Тогда это ваш клиент! :)))
|
|||
10
falselight
05.12.16
✎
14:54
|
(6) Ну не выводит то что нужно.
Я пока не могу представить как это будет. Мыслей правильных нет просто ((((( |
|||
11
catena
05.12.16
✎
14:57
|
(10)Ну, тогда нужно с этого и начинать. Представить, что должно получиться в итоге и сформулировать, чем полученное отличается от представленного.
|
|||
12
DrShad
05.12.16
✎
14:58
|
тут классический пример собственной иерархии на СКД
|
|||
13
Ёпрст
05.12.16
✎
15:01
|
(5) ясен пень, группировку нужно выводить ДО вложенного цикла, а не ПОСЛЕ.
|
|||
14
falselight
05.12.16
✎
15:19
|
(13) там вроде так и есть?
(11) Есть справочник подразделения там структура подразделений каталогов и подкаталогов на верхнем уровне такие то остальные имеют разный уровень вложенности в них запросом (5) я выбираю так же сотрудников (потом нужно будет цеплять разные прочие данные и возможно производить дополнительные обработки) Нужно вывести эту структуру каталогов в табличном документе плюс под каждым своего сотрудника, который к нему относится Потом вывести тех у кого нет подразделения, включив их в группу имеющегося подразделения организации Я уже и так пробовал выбирать ВЫБРАТЬ РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник, СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение КАК Подразделение, СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель КАК РодительПодразделения, СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель.Родитель КАК РодительРодительПодразделения, СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель.Родитель.Родитель КАК РодительРодительРодительПодразделения, СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель.Родитель.Родитель.Родитель КАК РодительРодительРодительРодительПодразделения, СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель КАК РодительРодительРодительРодительРодительПодразделения, РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации, РаботникиОрганизацийСрезПоследних.Период КАК Период ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеПодразделенийИПодразделенийОрганизаций КАК СоответствиеПодразделенийИПодразделенийОрганизаций ПО РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации = СоответствиеПодразделенийИПодразделенийОрганизаций.ПодразделениеОрганизации ГДЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) Но я ищу в понимании универсальное решение которым можно вывести структуру любого справочника и её детализацию |
|||
15
DrShad
05.12.16
✎
15:20
|
(14) см (12)
|
|||
16
Ёпрст
05.12.16
✎
15:41
|
(14) для тех, кто в танке
Пока ВыборкаДетали.Следующий() Цикл ОбластьДетальныеЗаписи.Параметры.Заполнить(ВыборкаДетали); ЭлементыФормы.ПолеОтчета.Вывести(ОбластьДетальныеЗаписи, ВыборкаДетали.Уровень()); ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Пока ВыборкаРезультат.Следующий() Цикл ОбластьСтрока.Параметры.Подразделение = ВыборкаРезультат.Подразделение; ЭлементыФормы.ПолеОтчета.Вывести(ОбластьСтрока, ВыборкаРезультат.Уровень(),,Истина); КонецЦикла; КонецЦикла; |
|||
17
falselight
05.12.16
✎
17:42
|
(15) к чему это? Я делаю не на СКД
|
|||
18
aleks_default
05.12.16
✎
17:46
|
(16)там не танк, там броненосец
|
|||
19
DrShad
05.12.16
✎
17:54
|
(17) ну ты же хочешь универсально?
|
|||
20
falselight
05.12.16
✎
17:57
|
пока что попробовал вот так
// Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник, | СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение КАК Подразделение, | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | РаботникиОрганизацийСрезПоследних.Период КАК Период |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеПодразделенийИПодразделенийОрганизаций КАК СоответствиеПодразделенийИПодразделенийОрганизаций | ПО РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации = СоответствиеПодразделенийИПодразделенийОрганизаций.ПодразделениеОрганизации |ГДЕ | РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | |УПОРЯДОЧИТЬ ПО | Подразделение ИЕРАРХИЯ УБЫВ"; Результат = Запрос.Выполнить(); ЭлементыФормы.ПолеОтчета.НачатьАвтогруппировкуСтрок(); ВыборкаДетали = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Пока ВыборкаДетали.Следующий() Цикл //ОбластьДетальныеЗаписи.Параметры.Заполнить(ВыборкаДетали); ОбластьСтрока.Параметры.Подразделение = ВыборкаДетали.Подразделение; ЭлементыФормы.ПолеОтчета.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень(),,ЛОЖЬ); ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Пока ВыборкаРезультат.Следующий() Цикл Если ВыборкаРезультат.Подразделение <> "ПУСТО" Тогда ОбластьСтрока.Параметры.Подразделение = ВыборкаРезультат.Подразделение; ЭлементыФормы.ПолеОтчета.Вывести(ОбластьСтрока, ВыборкаРезультат.Уровень(),,ЛОЖЬ); КонецЕсли; КонецЦикла; КонецЦикла; ЭлементыФормы.ПолеОтчета.ЗакончитьАвтогруппировкуСтрок(); выводит просто список, одно подразделение сворачивает в нем несколько дублей других вот я и говорю, какую то хрень выводит |
|||
21
falselight
05.12.16
✎
18:00
|
(16) у вас ОбластьДетальныеЗаписи, ОбластьСтрока
АвтогруппировкаСтрок делает это на одну секцию все |
|||
22
falselight
06.12.16
✎
12:51
|
(16) в (20) так же как у вас, но выводит криво (
|
|||
23
falselight
06.12.16
✎
12:51
|
(22+) криво некуда, черти чт овыводит
|
|||
24
Ёпрст
06.12.16
✎
16:50
|
Открой для себя наконец, конструктор запроса с обработкой результата. Оно само всё нарисует
|
|||
25
Vladal
06.12.16
✎
17:19
|
(1) Идей море.
Методичка: http://its.1c.ru/db/metod8dev/content/2659/hdoc Копипаста: http://pro1c.org.ua/?showtopic=482 |
|||
26
falselight
07.12.16
✎
15:03
|
(24) Послушал вашего совета. Вот так конструктором, за несколько секунд, интуитивно, ну и потом подправив вывод в свой табличный документ, вывел структуру справочника подразделения.
Процедура КнопкаСформироватьНажатие(Кнопка) // Вставить содержимое обработчика. //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Макет = ПолучитьМакет("Макет"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Подразделения.Наименование КАК Наименование |ИЗ | Справочник.Подразделения КАК Подразделения | |УПОРЯДОЧИТЬ ПО | Наименование ИЕРАРХИЯ"; РезультатЗапроса = Запрос.Выполнить(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ЭлементыФормы.ПолеОтчета.Очистить(); ЭлементыФормы.ПолеОтчета.Вывести(ОбластьЗаголовок); ЭлементыФормы.ПолеОтчета.Вывести(ОбластьШапкаТаблицы); ЭлементыФормы.ПолеОтчета.НачатьАвтогруппировкуСтрок(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ЭлементыФормы.ПолеОтчета.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; ЭлементыФормы.ПолеОтчета.ЗакончитьАвтогруппировкуСтрок(); ЭлементыФормы.ПолеОтчета.Вывести(ОбластьПодвалТаблицы); ЭлементыФормы.ПолеОтчета.Вывести(ОбластьПодвал); //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецПроцедуры Вывод отличается от того что показывает запрос (14) видимо от того что запрос (14) показывает подразделения с имеющимися сотрудниками, а этот показывает все подразделения. Итак, могу ли я к этому запросу и выводу прицепить выборку (20)? Что бы помимо подразделений вытащить сотрудников и вывести их в удобной структуре? Пробую. |
|||
27
falselight
07.12.16
✎
15:04
|
(25) а запрос в (26) взял из вашего совета
|
|||
28
falselight
07.12.16
✎
15:13
|
пока не получается ((((
|
|||
29
falselight
07.12.16
✎
15:15
|
вот это не выводит вообще ничего (
подскажите как нужно? Процедура КнопкаСформироватьНажатие(Кнопка) // Вставить содержимое обработчика. //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Макет = ПолучитьМакет("Макет"); Запрос = Новый Запрос; //Запрос.Текст = // "ВЫБРАТЬ // | Подразделения.Наименование КАК Наименование // |ИЗ // | Справочник.Подразделения КАК Подразделения // | // |УПОРЯДОЧИТЬ ПО // | Наименование ИЕРАРХИЯ"; Запрос.Текст = " |ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник, | СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение КАК Подразделение, | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | РаботникиОрганизацийСрезПоследних.Период КАК Период |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеПодразделенийИПодразделенийОрганизаций КАК СоответствиеПодразделенийИПодразделенийОрганизаций | ПО РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации = СоответствиеПодразделенийИПодразделенийОрганизаций.ПодразделениеОрганизации |ГДЕ | РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | |УПОРЯДОЧИТЬ ПО | Подразделение ИЕРАРХИЯ"; РезультатЗапроса = Запрос.Выполнить(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ЭлементыФормы.ПолеОтчета.Очистить(); ЭлементыФормы.ПолеОтчета.Вывести(ОбластьЗаголовок); ЭлементыФормы.ПолеОтчета.Вывести(ОбластьШапкаТаблицы); ЭлементыФормы.ПолеОтчета.НачатьАвтогруппировкуСтрок(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ЭлементыФормы.ПолеОтчета.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; ЭлементыФормы.ПолеОтчета.ЗакончитьАвтогруппировкуСтрок(); ЭлементыФормы.ПолеОтчета.Вывести(ОбластьПодвалТаблицы); ЭлементыФормы.ПолеОтчета.Вывести(ОбластьПодвал); //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецПроцедуры |
|||
30
falselight
07.12.16
✎
15:28
|
(24) я хотел в иерархию справочника подразделения прикрутить запрос (29), выходит так не получится ((((
Как лучше получить такую выборку и вывести ее всю в табличный документ? |
|||
31
falselight
07.12.16
✎
15:32
|
подскажете? ест ьу кого идеи?
|
|||
32
DrShad
07.12.16
✎
15:47
|
а соответствия подразделений настроены?
|
|||
33
falselight
07.12.16
✎
15:47
|
(32) в регистре? да там все нормально
|
|||
34
falselight
07.12.16
✎
15:48
|
я думал 29 выведет такую же структуру в автоупорядочивании
но нет, подразделения выводятся только безо всякой структурвы (((((( |
|||
35
DrShad
07.12.16
✎
15:52
|
так это у тебя не основная таблица запроса
|
|||
36
falselight
07.12.16
✎
15:56
|
(35) в (29) ?
Так там одна всего таблица??? |
|||
37
Ёпрст
07.12.16
✎
16:01
|
||||
38
SleepyHead
гуру
07.12.16
✎
17:12
|
(37) ты что, это ж несолидно :) человек хочет ручками
|
|||
39
falselight
07.12.16
✎
18:21
|
(37) Интересно чему тут наслаждаться?
Мне нужно вот этот запрос вывести в иерархии. Это можно сделать? (38) Там полезного то нет совсем!!! |
|||
40
falselight
07.12.16
✎
18:23
|
(39+) Вот этот запрос -> (29) вывести в табличный документ
в иерархии, структура подразделений в иерархии, как в (26) и под каждым подразделением, сотрудник к нему относящийся. Это возможно? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |