21.12.2011, 08:47 | #1 |
Участник
|
Собрать 2-х уровневый отчет по холдинговым структурам из кучи уровней
Есть задача:
собрать отчет по холдинговым структурам клиентской базы в CRM. Нужно хотя бы в 2 уровня в отчете показать (1 ур. - головная холдинга, 2 ур. - все его подразделения), но проблема в том, что у некоторых подразделений головной часто указано другое подразделение (т.к. сами холдинги многоуровневые), и если делать обычный запрос, группирующий клиентов по атрибуту "головная организация". то все холдинги просто разбросаны частями по отчету. Подскажите, может кто сталкивался с подобной проблемой, как можно собрать отчет? Очень надо А может кто знает как всю иерархию холдинговой структуры показать в отчете? |
|
21.12.2011, 11:24 | #2 |
Чайный пьяница
|
Пример в экселе в студию. Если честно сходу не понял, как вы хотите структурировать отчёт и какие данные в него получить.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
21.12.2011, 11:39 | #3 |
Участник
|
Цитата:
отчет предполагает данные по холдинговым структурам. сначала голова, ниже все подразделения, которые есть в базе. для этого он должен брать значение поля "головная организация" у бизнес-партнера (А) и проверять если у бизнес-партнера (Б), указанного головной организацией для А не заполнено поле "головная организация", то ставить его как головную холдинга, а если у Б в поле "головная организация" тоже указан бизнес-партнер (В), то В ставит головной, а А и Б его дочерними. ну это я так предполагаю логику... |
|
21.12.2011, 12:02 | #4 |
Moderator
|
В сети можно найти немало примеров, как строить иерархические группировки в RS. Насколько я помню, есть ограничение на количество групп, но обычно это не вызывает проблемы. Если не ошибаюсь, RS 2005 поддерживал глубину вложенности в 8 позиций. Пример настройки такого отчета можно посмотреть тут: http://www.codeproject.com/KB/report...rsiveData.aspx
Смотреть нужно не программирование формы, а запрос и настройки групп отчета. Моя коллега делала аналогичный отчет - мы строили иерархию бизнес подразделений компании со списком пользователей в каждом из них. Нужно было показать численность каждого отдела, подразделения и т.д. до самого верха. Если не справитесь сами, я могу спросить у нее совета.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional Последний раз редактировалось Артем Enot Грунин; 21.12.2011 в 12:05. |
|
|
За это сообщение автора поблагодарили: Екатерина С (1). |
21.12.2011, 15:48 | #5 |
Чайный пьяница
|
Добрый день,
Сел наваял скрипт. Вроде как под все ваши требования подходит. Поправьте, если что проглядел: Код: Create Table #tmp(id int identity(1,1), AccountId Uniqueidentifier, IsParent bit) Insert Into #tmp(AccountId, IsParent) Select AccountId ,1 From FilteredAccount Where parentaccountid Is Null Select (case t1.IsParent When 1 Then fa1.Name else null end) ParentAccountName ,(case t1.IsParent When 0 Then fa1.Name else null end) ChildAccountName ,fa1.address1_city ,fa1.address1_stateorprovince From (Select AccountId, id, IsParent From #tmp Union All Select fa.AccountId, t.id, 0 as IsParent From FilteredAccount fa Inner Join #tmp t on fa.parentaccountid = t.AccountId) t1 Inner Join FilteredAccount fa1 on t1.AccountId = fa1.accountid Order By t1.id asc, t1.IsParent desc drop Table #tmp
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Екатерина С (1). |
22.12.2011, 11:23 | #6 |
Участник
|
Спасибо, ваш скрипт почти то что нужно, только он в поле IsParent выводит все у которых нет головных, и получается, что весь список многотысячный клиентов попадает в этот отчет, а конечная цель составить отчет только по тем клиентам, которые являются структурой (только если у головной есть дочерние)
|
|
22.12.2011, 12:47 | #7 |
Чайный пьяница
|
Доброе утро,
Если так, то попробуйте следующий скрипт: X++: Create Table #tmp(id int identity(1,1), AccountId Uniqueidentifier, IsParent bit) Insert Into #tmp(AccountId, IsParent) Select a1.AccountId ,1 From FilteredAccount a1 Where a1.parentaccountid Is Null and Exists (Select * From FilteredAccount a where a.parentaccountid = a1.accountid) Select (case t1.IsParent When 1 Then fa1.Name else null end) ParentAccountName ,(case t1.IsParent When 0 Then fa1.Name else null end) ChildAccountName ,fa1.address1_city ,fa1.address1_stateorprovince From (Select AccountId, id, IsParent From #tmp Union All Select fa.AccountId, t.id, 0 as IsParent From FilteredAccount fa Inner Join #tmp t on fa.parentaccountid = t.AccountId) t1 Inner Join FilteredAccount fa1 on t1.AccountId = fa1.accountid Order By t1.id asc, t1.IsParent desc drop Table #tmp
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Elka (1). |
26.12.2011, 06:33 | #8 |
Участник
|
|
|
Теги |
reporting services, иерархическая структура, отчет |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|