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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.02.2017, 23:35   #1  
AnGor is offline
AnGor
Участник
Аватар для AnGor
 
97 / 46 (2) +++
Регистрация: 30.08.2007
Адрес: Ulm
Записей в блоге: 6
AX2012, SSRS отчеты
Пытаюсь разобраться, как работать с SSRS отчетами в AX2012.
Есть SSRS-отчет, класс Controller, который его запускает, Contract с параметрами для отчета (с атрибутоми SSRS-отчета и UI Contract ) и UI Contract с диалогом для параметров.

Я создал SSRS-отчет, задеплоил его, создал Contract, UI Contract, Controller, но при запуске не подтягивается диалог из UI Contract.

Как Контроллер связан с Контрактом?
Старый 09.02.2017, 01:01   #2  
griefon is offline
griefon
Участник
 
131 / 52 (2) ++++
Регистрация: 07.12.2010
Адрес: down under
Может быть все-таки UIBuilder?

Надо создать класс-расширение SysOperationAutomaticUIBuilder

А в определении контракта в аттрибутах указать SysOperationContractProcessingAttribute(classStr(YourClassNameUIBuilder)

А в определении контроллера указать в аттибутах
SRSReportParameterAttribute(classstr(YourClassNameContract)

Для простого добавления параметров UIBuilder не нужен, достаточно контракта
За это сообщение автора поблагодарили: Logger (5).
Старый 09.02.2017, 08:42   #3  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Microsoft Dynamics AX 2012 R3 Reporting Cookbook.pdf
__________________
// no comments
За это сообщение автора поблагодарили: Logger (5), Ace of Database (2).
Старый 09.02.2017, 10:54   #4  
AnGor is offline
AnGor
Участник
Аватар для AnGor
 
97 / 46 (2) +++
Регистрация: 30.08.2007
Адрес: Ulm
Записей в блоге: 6
Цитата:
я по этой книжке и пробую.
стр. 58:
1. Создал в VS SSRS : PktRdlItemTransList.ItemTransList
2. Controller:
X++:
class PktRdlItemTransController extends SRSReportRunController
{}
public static void main(Args args)
{
    PktRdlItemTransController controller;
    controller = new PktRdlItemTransController ();
    controller.parmReportName(ssrsReportStr
      (PktRdlItemTransList, ItemTransList));
    controller.parmArgs(args);
    controller.startOperation();
}
Проверил - отчет запускается
3. UIBuilder:
X++:
class PktRdlWarehouseUIBuilder extends SrsReportDataContractUIBuilder
{
    DialogField     dialogStatus;
    DialogField     dialogFromDate;
    DialogField     dialogToDate;
}
public void build()
{
    PktRdlWarehouseContract    pktRdlWarehouseContract;
pktRdlWarehouseContract = this.dataContractObject() as 
  PktRdlWarehouseContract;
dialogStatus = this.addDialogField 
  (methodStr(PktRdlWarehouseContract, parmStatus), 
  pktRdlWarehouseContract);
dialogFromDate  = this.addDialogField 
  (methodStr(PktRdlWarehouseContract,parmFromDate), 
  pktRdlWarehouseContract);
dialogToDate  = this.addDialogField 
  (methodStr(PktRdlWarehouseContract,parmToDate), 
  pktRdlWarehouseContract);
}
public void postBuild()
{
    PktRdlWarehouseContract    pktRdlWarehouseContract;
    super();
    pktRdlWarehouseContract = this.dataContractObject() as
      PktRdlWarehouseContract;
    dialogStatus = this.bindInfo().getDialogField
      (pktRdlWarehouseContract, 
      methodStr(PktRdlWarehouseContract, ParmStatus));
    dialogFromDate = this.bindInfo().getDialogField
      (pktRdlWarehouseContract, 
      methodStr(PktRdlWarehouseContract, parmFromdate));
    dialogToDate  = this.bindInfo().getDialogField
      (pktRdlWarehouseContract, 
      methodStr(PktRdlWarehouseContract, parmTodate));
}
4. Contract:
X++:
[
    DataContractAttribute,
    SysOperationContractProcessingAttribute
(classstr(PktRdlWarehouseUIBuilder))
]
public class PktRdlWarehouseContract implements 
SysOperationValidatable
{
    TransDate                   fromDate;
    TransDate                   toDate;
    InventtransferUpdateType    status;
}
    [
        DataMemberAttribute('ToDate'),
        SysOperationLabelAttribute(literalStr("ToDate"))
    ]
public ToDate parmToDate(ToDate _toDate = toDate)
{
    toDate = _toDate;
    return toDate;
}
[
    DataMemberAttribute('FromDate'),
    SysOperationLabelAttribute(literalStr("FromDate"))
]
public FromDate parmFromDate(FromDate _fromDate = fromDate)
{
    fromDate = _fromDate;
    return fromDate;
}
[
    DataMemberAttribute('Status'),
    SysOperationLabelAttribute(literalStr("Status"))
]
public InventTransferUpdateTye 
  parmStatus(InventTransferUpdateTye _status = status)
{
    status = _status;
    return status;
}
public boolean validate()
{
    boolean isValid = true;
    if (fromDate && toDate && fromDate > toDate)
    {
        isValid = checkFailed("From date cannot be 
          greater than to date");
    }
    if (!fromDate)
    {
        isValid = checkFailed("From date must 
          be filled in");
    }
    if (!toDate)
    {
        isValid = checkFailed("To date must 
          be filled in ");
    }
    return isValid;
}
как связывается UIBuilder с Contract видно:
SysOperationContractProcessingAttribute
(classstr(PktRdlWarehouseUIBuilder))
как контролер связывается с отчетом - тоже понятно:
controller.parmReportName(ssrsReportStr
(PktRdlItemTransList, ItemTransList));
А вот как контроллер или отчет связывается с контрактом или UIBuilder - я не увидел.
Правда на стр. 66 этойже книги я увидел, что контракт уже был реализован следующим образом:
X++:
[
    SrsReportNameAttribute(ssrsReportStr
      (PktRdlItemTransList, ItemTransList)),
    SysOperationContractProcessingAttribute(classstr
      (PktItemTransUIBuilder), 
      SysOperationDataContractProcessingMode::
      CreateSeparateUIBuilderForEachContract)
]
public class PktRdlItemTransListRdlContract extends 
  SRSReportRdlDataContract
{
    TransDate   fromDate;
    TransDate   toDate;
    #define.FromDate('FromDate')
    #define.ToDate('ToDate')
}
тут уже видно, что контракт связывается с отчетом через атрибут.
Сделал подобное - не помогло.
Т.е. всеравно не понятно - как отчет призапуске понимает, что нужно брать именно этот контракт. В моем случает отчет не берет вообще никакой контракт.
За это сообщение автора поблагодарили: Logger (3).
Старый 09.02.2017, 21:45   #5  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
не забывай регулярно обновлять кеш и компилить CIL перед очередной пробой. также недурно влияет перезапуск и самого сервера ssrs.

вощим, встал ты на скользкую дорогу, полную невзгод и разочарований... но мы здесь, с тобой!
__________________
Felix nihil admirari
Старый 10.02.2017, 08:56   #6  
arhat is offline
arhat
Участник
 
116 / 16 (1) ++
Регистрация: 10.11.2014
Адрес: Казахстан
в классе провайдера есть такой атрибут
X++:
[
    SRSReportParameterAttribute(classStr())
]
Сил я не компилю. Деплою отчет в студий и перезахожу в аксу. Всегда работает.
Старый 21.02.2017, 13:43   #7  
Skolos is offline
Skolos
Участник
 
56 / 13 (1) ++
Регистрация: 06.01.2016
Цитата:
Т.е. всеравно не понятно - как отчет призапуске понимает, что нужно брать именно этот контракт. В моем случает отчет не берет вообще никакой контракт.
В DataProvider классе реализуется подключение контракта. И из него можно будет тянуть переменные выбранные в диалоговом окне при запуске отчета.
X++:
[SRSReportParameterAttibute(classstr(ClassDataContract))]
class DataProvider extends SRSReportDataProviderBase
{
}
[SysEntryPointAttribute(false)]
public void processReport()
{
ClassDataContract contract = this.parmDataContract() as ClassDataContract;
}
За это сообщение автора поблагодарили: Logger (1).
Теги
ssrs, ssrs reports

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: SSRS Report label shown as @SYSxxxx in AX2012 Blog bot DAX Blogs 0 02.11.2016 07:15
ax2012: как собрать в group программного проекта SSRS-отчеты по нужной маске mazzy DAX: Программирование 9 10.08.2016 17:31
AX2012 SSRS - как раскидать отчеты по серверам EVGL DAX: Администрирование 1 03.05.2013 18:36
sumitax: AX2012 SSRS Reports – Toggle fields Blog bot DAX Blogs 0 31.05.2012 19:11
emeadaxsupport: SSRS error in AX2012 - An item with the same key has already been added Blog bot DAX Blogs 0 13.03.2012 18:11

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

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

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