AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.08.2009, 12:26   #1  
AlexeyS is offline
AlexeyS
Участник
 
404 / 339 (12) ++++++
Регистрация: 15.06.2004
Адрес: москва
использование Reporting Services в Axapta
Постепенно перевожу отчеты на RS и вот какие мысли по этому поводу:

в аксаптовских отчетах отчетах основная претензия - неудобно пользоваться
пользователи хотят нормальную выгрузку в Excel, чтобы работать в привычной среде

в RS удобные механизмы группировки записей,
можно добавить графики, диаграммы
можно повысить удобство работы и настроить цвета ячеек, например по коэффициентам или другим параметрам
с помощью параметра BackgroundColor
X++:
=IIF(Fields!ABCRate.Value="A", "Green",
     IIF(Fields!ABCRate.Value="B", "Yellow",
         IIF(Fields!ABCRate.Value="C", "Red", "White")))
WEB доступ удобен, плюс к этому разграничение прав доступа, на основе win пользователей, удобно разложить отчеты по папкам

так как прямой доступ к БД, скорость выше, чем аксаптовские отчеты

можно поставить RS Data Extension и обращаться через фреймфорк к AX 2009,
но с этим пока не разбирался

из минусов - во первых нужно самому писать SQL-запросы и настраивать дизайн - русское название поля и его длину

enum-ы в таблицах это просто числа,
соответственно нужно делать подстановку на уровне SQL запроса.
есть два варианта решения
1.подменять цифры на текст непосредственно в запросе через CASE
2.сформировать таблицу наподобие OlapEnum, где хранить все EnumName, EnumText и EnumValue и join-ить ее (плюс нужно обновлять после каждого изменения в enum-ах)
это можно сделать в случае, если нужно будет делать много отчетов и предпологается активное изменение enum-ов, для небольшого количества проще использовать case
еще остается вопрос - если много раз присоединить такую таблицу в запросе, как это скажется на производительности

вот пример запроса для отчета "ABC по продажам за период"
X++:
select ItemID, Sum(LineAmountMST) as Summ, Sum(Qty) as SummQty
into #tmp
from bmssa.CustInvoiceTrans
where InvoiceDate >= @DateFrom and InvoiceDate <= @DateTo
group by ItemID
order by Summ DESC

select IC.ItemCodeDesc, IC.ItemCategoryID, t1.ItemID, IT.ItemName, 
       cast(t1.Summ as Numeric(10,2)) as SoldAmountMST,
       cast(t1.SummQty as int) as SoldAmountQty,
  case when sum(case when t1.Summ <= t2.Summ then t2.Summ end) < sum(t2.Summ) *@RateA/100 then 'A'
       when sum(case when t1.Summ <= t2.Summ then t2.Summ end) < sum(t2.Summ) *@RateB/100 then 'B' else 'C' end as ABCRate,
  case when IT.ABCRevenue = 1 then 'A' 
       when IT.ABCRevenue = 2 then 'B' 
       when IT.ABCRevenue = 3 then 'C' else '-' end as ABCRateOLD, 
       IT.ABCRevenue as ABCRevenueCodeOLD
from #tmp t1, #tmp t2, bmssa.InventTable IT, bmssa.ITEMCATEGORY AS IC 
where IT.ItemID = t1.ItemID and IT.ITEMCATEGORYID = IC.ITEMCATEGORYID
group by IC.ItemCategoryID, IC.ItemCodeDesc, IT.ItemName, IT.ABCRevenue, t1.ItemID, t1.Summ, t1.SummQty

drop table #tmp
а вот как он выглядит
Миниатюры
Нажмите на изображение для увеличения
Название: ABC.JPG
Просмотров: 356
Размер:	39.5 Кб
ID:	4958  
За это сообщение автора поблагодарили: GLU (1), belugin (3).
Теги
olap, законченный пример, полезное, reporting services, report

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
msdynamicsax: Make the role centers work with Reporting Services Blog bot DAX Blogs 0 15.08.2008 11:05
gatesasbait: Installing Reporting Services, Analysis Services and Enterprise Portal for AX 2009 Blog bot DAX Blogs 0 03.07.2008 02:05
Axapta Lessons: Reporting tools Blog bot DAX Blogs 0 28.10.2006 18:22
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:17.