Ветвление в связанных отчетах, как правильно?
- Александр
- Активный участник
- Сообщения: 1652
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Продолжаем разговор...
Не подскажете -как красиво (без связей>1 уровня) создать примерно-такой же отчет как и предыдущий, но по множеству объектов?
Ситуация такая (объектноя модель)
Нужно сделать отчеты
1.-персональный (3 вида) -по плану работ, - по выполненной работе,-общий отчет
2.-отчет по отделу (сотрудники отделов) (градации как в первом)
3.-отчет по компании (все сотрудники)(градации как в первом)
Сложность заключается в том - что одна и таже работа(объект) может находится одновременно у нескольких сотрудников в разных папках (у одного в плане работ у остальных в выполненных работах)
Как я делаю сейчас
-завожу три атрибута для объектов (сотрудник/отдел/компания)
первый (число) если 0-общий отчет 1- план 2- выполненные
второй дата начала отчетного периода
третий дата окончания отчетного периода
Это сделано для настройки фильтров отчета, причем каждый объект хранит свои последние значения (кстати - если кто будет этим пользоваться фильтр отчета не берет последнюю дату 'включительно' т.е. отчет формируется только на день раньше.?? наверно-глюк)
А вот дальше для сотрудника??
Стою на нем, через диалог получаю тип отчета и даты
1-Запускаю отчет 'Сотрудник-План работ'
Он принимает атрибутивную информацию о текущем объекте (через аргументы) встает на План работ сотрудника и выдает все объекты первого уровня (по фильтру) в результирующий (последний) отчет - с этим понятно
2-Запускаю отчет 'Сотрудник-Выполненные работы' - здесь уже два варианта или в первый отчет подсунуть в качестве выделенного объекта -Выполненные работы и все как и выше Либо сначала получить все ID объекты из 'плана работ' (они будут нулевые по фильтру) добавить объекты из 'выполненных работ' и всю эту кучу с признаком кто где-передать в результирующий (последний) отчет
3-Соответственно отчет по всем работам Сотрудника можно выполнить по второму варианту второго отчета (собрать id плана работ_первый уровень(+признак)+id выполненные работы_первый уровень(+признак) все это сбросить в третий отчет и сделать группировку по признаку
Другими словами -создать 3-х уровневый связанный отчет и вызывать нужный уровень (или последний по признаку)
Если с одним человеком- в голове вроде все умещается, то с отделом и компанией не очень ( в смысле сделать просто и универсально)???
Не совсем понятно как все найденные id передать на второй и третий уровень?
Помогите распутаться (отчет выше первого уровня делать не хочу-Строчка 'поиск предка' - очень напрягает)
Не подскажете -как красиво (без связей>1 уровня) создать примерно-такой же отчет как и предыдущий, но по множеству объектов?
Ситуация такая (объектноя модель)
Код: Выделить всё
1. Компания
1 Отдел_1
1.1 Сотрудник 1
1.1.1 План работ
1.1.1.1 Работа_1
1.1.1.2 Работа_2
1.1.2 Выполненная работа
1.1.2.1 Работа_3
1.1.2.2 Работа_4
....
1.2 Сотрудник 2
1.2.1 План работ
1.2.1.1 Работа_3
...
2 Отдел_2
2.1 Сотрудник 1
2.1.1 Выполненная работа
2.1.1.1 Работа_5
...
2.2 Сотрудник 2
2.2.1 План работ
2.2.1.1 Работа_4
...
1.-персональный (3 вида) -по плану работ, - по выполненной работе,-общий отчет
2.-отчет по отделу (сотрудники отделов) (градации как в первом)
3.-отчет по компании (все сотрудники)(градации как в первом)
Сложность заключается в том - что одна и таже работа(объект) может находится одновременно у нескольких сотрудников в разных папках (у одного в плане работ у остальных в выполненных работах)
Как я делаю сейчас
-завожу три атрибута для объектов (сотрудник/отдел/компания)
первый (число) если 0-общий отчет 1- план 2- выполненные
второй дата начала отчетного периода
третий дата окончания отчетного периода
Это сделано для настройки фильтров отчета, причем каждый объект хранит свои последние значения (кстати - если кто будет этим пользоваться фильтр отчета не берет последнюю дату 'включительно' т.е. отчет формируется только на день раньше.?? наверно-глюк)
А вот дальше для сотрудника??
Стою на нем, через диалог получаю тип отчета и даты
1-Запускаю отчет 'Сотрудник-План работ'
Он принимает атрибутивную информацию о текущем объекте (через аргументы) встает на План работ сотрудника и выдает все объекты первого уровня (по фильтру) в результирующий (последний) отчет - с этим понятно
2-Запускаю отчет 'Сотрудник-Выполненные работы' - здесь уже два варианта или в первый отчет подсунуть в качестве выделенного объекта -Выполненные работы и все как и выше Либо сначала получить все ID объекты из 'плана работ' (они будут нулевые по фильтру) добавить объекты из 'выполненных работ' и всю эту кучу с признаком кто где-передать в результирующий (последний) отчет
3-Соответственно отчет по всем работам Сотрудника можно выполнить по второму варианту второго отчета (собрать id плана работ_первый уровень(+признак)+id выполненные работы_первый уровень(+признак) все это сбросить в третий отчет и сделать группировку по признаку
Другими словами -создать 3-х уровневый связанный отчет и вызывать нужный уровень (или последний по признаку)
Если с одним человеком- в голове вроде все умещается, то с отделом и компанией не очень ( в смысле сделать просто и универсально)???
Не совсем понятно как все найденные id передать на второй и третий уровень?
Помогите распутаться (отчет выше первого уровня делать не хочу-Строчка 'поиск предка' - очень напрягает)
Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный
- Anderyt
- Активный участник
- Сообщения: 777
- Зарегистрирован: 15 июл 2004, 13:15
- Используемое ПО: Lotsia PDM PLUS
- Откуда: Тюмень
- Контактная информация:
может быть проблему решит знак "<=" (или ">=") в фильтре отчета? вместо "<" (или ">")...Александр писал(а):Продолжаем разговор...
кстати - если кто будет этим пользоваться фильтр отчета не берет последнюю дату 'включительно' т.е. отчет формируется только на день раньше.?? наверно-глюк
а зачем делать отчет по связям?
если мы хотим получить отчет по сотруднику - встаем на него в дереве и выполняем отчет по всем потомкам. то же самое - для отдела и компании.
если уровней немного и объектов на каждом уровне немного - то работать будет достаточно шустро даже для компании целиком, в недавних обновлениях была увеличена скорость работы отчетов.
единственное, где можно запутаться - один объект (работа) может попасть в отчет столько раз, сколько он входит в объекты, так или иначе являющиеся дочерними для выделенного объекта... тут даже не знаю... это смотря что надо получить
а вообще, это ниче, нормально, что работа есть у НЕСКОЛЬКИХ сотрудников сразу? с кого спрашивать?
лучше день потерять, потом за пять минут долететь!
- Александр
- Активный участник
- Сообщения: 1652
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
можно было бы использовать связи>1 но раньше, когда работа принадлежала только одному сотруднику и я использовал '1'-это план работ, а '-1'-это выполненные работы.
Сейчас же работа проходит по исполнителям, обрастает комментариями и что характерно, каждый хочет иметь ее экземпляр в своем плане работ-для отчетности, в связи с чем признак '1'/'-1' утрачивает актуальность для группировки отчета по конкретному сотруднику и мне нужно в отчете за что-то цепляться чтобы понять где сейчас эта работа при построении отчета со стороны сотрудника, а не со стороны работы
у работы есть исполнитель и набот статусов и она принадлежит тому кто сейчас является исполнителем и какой статус имеет
а в отчете по компании идет группировка
отдел
сотрудник1
плановые работы
выполненные работы
сотрудник 2
т.е. пусть она входит куда хочет - по исполнителю и статусу понятно что-к чему.
К сожалению в однозначной идентификации используется еще несколько признаков - и воткнтуть их все в общий фильтр тем более по компании - достаточно проблематично
Сейчас же работа проходит по исполнителям, обрастает комментариями и что характерно, каждый хочет иметь ее экземпляр в своем плане работ-для отчетности, в связи с чем признак '1'/'-1' утрачивает актуальность для группировки отчета по конкретному сотруднику и мне нужно в отчете за что-то цепляться чтобы понять где сейчас эта работа при построении отчета со стороны сотрудника, а не со стороны работы
у работы есть исполнитель и набот статусов и она принадлежит тому кто сейчас является исполнителем и какой статус имеет
а в отчете по компании идет группировка
отдел
сотрудник1
плановые работы
выполненные работы
сотрудник 2
т.е. пусть она входит куда хочет - по исполнителю и статусу понятно что-к чему.
К сожалению в однозначной идентификации используется еще несколько признаков - и воткнтуть их все в общий фильтр тем более по компании - достаточно проблематично
Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный
- Александр
- Активный участник
- Сообщения: 1652
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Запутался полностью
Как ведет себя Лоция в случае 3-х уровневого отчета, ести 3-й является результатом предыдущих?
Когда я запускаю 3-й отчет
- он сначала запускает 1-й потом 2-й потом формируется сам?
- или он запускает 2-й который в свою очередь запускает 1-й, затем спускается на второй и формируется сам?
Как идет работа -снизу вверх или сверху вниз?
И как передать найденные данные из отчета в отчет в одной колонке? или результаты 1-го нужно передавать в одной колонке, а результаты второго во второй, и как тогда объединить их в 3-м отчете в одну колонку? в общем жуть-учитывая то, что в первые два отчета еще нужно передать ID объектов и информацию для фильтра?
Как ведет себя Лоция в случае 3-х уровневого отчета, ести 3-й является результатом предыдущих?
Когда я запускаю 3-й отчет
- он сначала запускает 1-й потом 2-й потом формируется сам?
- или он запускает 2-й который в свою очередь запускает 1-й, затем спускается на второй и формируется сам?
Как идет работа -снизу вверх или сверху вниз?
И как передать найденные данные из отчета в отчет в одной колонке? или результаты 1-го нужно передавать в одной колонке, а результаты второго во второй, и как тогда объединить их в 3-м отчете в одну колонку? в общем жуть-учитывая то, что в первые два отчета еще нужно передать ID объектов и информацию для фильтра?
Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный
- Старик Крупский
- Активный участник
- Сообщения: 803
- Зарегистрирован: 27 июл 2006, 22:17
- Откуда: Москва
Как я понимаю, третий отчет ничего не знает о первом. Он тянется ко второму, а второй, тоже видя, что аргументы идут от первого, запускает первый отчет. Это можно легко увидеть. Можно у первого отчета сделать форму с 2-мя аргументами, а у второго с одним. Запускать второй отчет. При запуске покажется форма с 2-мя аргументами. Значит, сразу же запускается 1-ый отчет.
Данные их первого в третий передаются так: из первого во второй через связку аргумент-колонка. Во втором отчете делается вычисляемое поле со ссылкой на тот самый аргумент. В третьем отчете делается связка аргумент-вычисляемое поле. Имеется в виду аргумент текущего отчета, а колонка или вычисляемое поле из пердыдущего отчета. Так по цепочке и идет. А как соединить в одну колонку? Просто: через вычисляемые поля. Принял данные обработал их и передал дальше в другом вычисляемом поле.
Не такая уж и жуть. А вместо фильтра могу посоветовать дополнительные условия SQL отбора - частенько они срабатывают на порядок быстрее.
Данные их первого в третий передаются так: из первого во второй через связку аргумент-колонка. Во втором отчете делается вычисляемое поле со ссылкой на тот самый аргумент. В третьем отчете делается связка аргумент-вычисляемое поле. Имеется в виду аргумент текущего отчета, а колонка или вычисляемое поле из пердыдущего отчета. Так по цепочке и идет. А как соединить в одну колонку? Просто: через вычисляемые поля. Принял данные обработал их и передал дальше в другом вычисляемом поле.
Не такая уж и жуть. А вместо фильтра могу посоветовать дополнительные условия SQL отбора - частенько они срабатывают на порядок быстрее.