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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.07.2015, 15:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,475 / 846 (79) +++++++
Регистрация: 28.10.2006
axforum blogs: Использование Data Methods в SSRS (AX 2009, SSRS) (продолжение)
Источник: http://axforum.info/forums/blog.php?b=8183
==============

... так вот - описанные ранее метод получения таблицы из AX в SSRS-отчет в качестве источника данных не работает. После развертывания на сервер отчетов классы Аксапты отказываются работать:
  • Fehler beim Clientrendering.
    • Fehler bei der Berichtsverarbeitung. (rsProcessingAborted)
      • Fehler beim Ausführen der Abfrage für das Dataset1-Dataset. (rsErrorExecutingCommand)
        • Exception has been thrown by the target of an invocation.
          • Fehler beim Dynamics-Adapter 'CallStaticClassMethod'.
            • ClrObject static method invocation error.
Хотя, в предварительном просмотре, в Visual Studio все работает. Общем - не понятно.
Пришлось делать по другому. В принципе, на скорость работы отчета это никак не отразилось.
В C# я написал класс, который из AxaptaRecordWrapper делает System.Data.DataTable. По сути - тоже преобразование, которое я делал в предыдущем посте по этой теме, за тем отличием - делается оно теперь на сторонее отчета. Вот как выглядит класс:
PHP код:
public class UNG_AxTables
{
AxaptaRecordWrapper axRecordWrapper;
Int32 TableId;
DataTable axTable;

public
Int32 parmTableId(Int32 _TableId)
{
if (
_TableId != 0)
this.TableId = _TableId;

return
this.TableId;
}

public
AxaptaRecordWrapper parmAxRecordWrapper(AxaptaRecordWrapper _axRecordWrapper)
{
if (
_axRecordWrapper != null)
this.axRecordWrapper = _axRecordWrapper;

return
this.axRecordWrapper;
}

private
DataTable getTableStructure()
{
DataTable tmpTab = new DataTable("tmpTab");
DataColumnCollection columns = tmpTab.Columns;
DataColumn column;

var
ax = SessionManager.GetSession();
AxaptaContainerWrapper axContainer = ax.CreateAxaptaContainer(ax.CallStaticClassMethod(UNG_ReportsClasses.UNG_SSRSTEST, UNG_ReportsClassesMethods.getAXTableFields, this.TableId));

for (
Int32 i = 1; i < axContainer.Count; )
{
column = new DataColumn(axContainer[i].ToString(), Type.GetType(axContainer[i + 1].ToString()));
columns.Add(column);

i = i + 2;
}

return
tmpTab;
}

private
void FillingDataTable()
{
DataRowCollection rows = this.axTable.Rows;
DataRow row;
DataColumnCollection columns = this.axTable.Columns;

while (
this.axRecordWrapper.Found)
{
row = this.axTable.NewRow();
for(
int i=0; i < columns.Count; i++)
{
row.SetField(i, this.axRecordWrapper.GetField(columns[i].ColumnName));
}

rows.Add(row);

this.axRecordWrapper.Next();
}
}

public
DataTable getDataTable()
{
this.axTable = this.getTableStructure();

this.FillingDataTable();

return
this.axTable;
}
}

метод getTableStructure - формирует таблицу
метод FillingDataTable - наполняет эту таблицу
Data method выглядит теперь так:
PHP код:
[DataMethod(), AxSessionPermission(SecurityAction.Assert)]
public static
System.Data.DataTable DataMethod2(DateTime _OnDate, Boolean ShowZeroLines)
{
UNG_AxTables axTable = new UNG_AxTables();
AxaptaWrapper ax = SessionManager.GetSession();
AxaptaRecordWrapper axRecWr = ax.CreateAxaptaRecord(ax.CallStaticClassMethod(UNG_ReportsClasses.InventSumDateEngine, UNG_ReportsClassesMethods.getInventTransFinValueQtySSRS, _OnDate, ShowZeroLines));

axTable.parmTableId(UNG_TableId.UNG_tmpInventTransValueQty);
axTable.parmAxRecordWrapper(axRecWr);

return
axTable.getDataTable();
}

в проекте есть еще namespace, в котором константами забиты имена классов аксапты, методов и TableId.
на-пример:
PHP код:
public class UNG_TableId
{
public const
Int32 SalesTable = 366;
public const
Int32 InventTrans = 177;
public const
Int32 UNG_tmpInventTransValueQty = 50249;
}

после развертывания все работает :)


Источник: http://axforum.info/forums/blog.php?b=8183
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Connecting Retail Components on an External Computer to the Microsoft Dynamics AX R3 Azure Lifecycle Services Demo Virtual Machine Blog bot DAX Blogs 0 28.06.2014 00:13
crminthefield: Creating SSL Certificates for CRM Test Environment Blog bot Dynamics CRM: Blogs 0 10.12.2013 02:12
atinkerersnotebook: Using PowerPivot to Analyze Dynamics AX Data Blog bot DAX Blogs 1 05.10.2013 07:23
bojensen: Dynamics AX 2009: Creating a simple SSRS Report – Saveen Reddy’s blog – Site Home – MSDN Blogs Blog bot DAX Blogs 0 04.01.2013 19:12
dynamicsaxbi: Better together: Microsoft Dynamics AX 2012 R2 and SQL Server Power View Blog bot DAX Blogs 0 12.12.2012 13:11

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:11.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.