В данной статье приведены простые шаги по созданию отчета с возможностью перехода к форме Dynamics AX.
Ржевский Михаил (MikeR)
miker.ru@gmail.com
1. Создадим объект Query, который будем использовать, как источник данных при формировании отчета.

2. Далее необходимо создать проект с типом Dynamics AX Report в VS 2008. Назовем его DrillThroughtInventVSReport
3. На этому шаге необходимо прописать ссылку в отчете на компоненты, которые нужны для перехода из отчета на форму:
File ⇒ Add ⇒ Existing Project from Dynamics AX. В диалоге показываются текущие отчеты из узла Report Library AOT. Следует выбрать Shared Library и нажать OK. В Solution Explorer, в контекстном меню на пункте DrillThroughtInventVSReport щелкните Add Reference. В окне Projects выберите SharedLibrary, нажмите Add и затем OK.
4. Создадим основной отчет
В Solution Explorer кликните правой кнопкой мыши на Report1.moxl и переименуйте в InventList.moxl. На узле кликните Report1 и переименуйте в InventList.Теперь определим в нашем отчете источник данных (dataset) на основе созданного в Ax запроса. И переименуем отчет в InventList
В Model Editor выберите узел InventTable и перетащите в узел Designs. Создастся auto design с именем AutoDesign1. Выберите свойства узла AutoDesign1. Установите свойство
- LayoutTemplate: в ReportLayoutStyleTemplate и впишите Inventtable в свойство Title.
В итоге должно получиться так:
5. На этом шаге у нас создан простейший отчет, теперь нужно добавить возможность перехода на форму Dynamics Ax с записи отчета. Давайте сделаем переход с групп номенклатур отчета на запись групп номенклатур Dynamics Ax. Добавим параметр AX_ReportContext в отчет. Параметр AX_ReportContext распознается структурой Microsoft Dynamics AX, при вызове на отображение и содержит определенную ссылку (URL). Структура, основываясь на значении AX_ReportContext, производит перенаправление на соответствующую форму Microsoft Dynamics AX или страницу Enterprise Portal (EP).
6. Теперь нужно создать действие, которое приведет к вызову формы. У элемента ItemGroupId в контекстном меню выберите URL Drill Through Action

7. Теперь необходимо создать data method, который будет осуществлять перенаправление
using System;
using System.Collections.Generic;
using System.Security.Permissions;
using System.Data;
using Microsoft.Dynamics.Framework.Reports;
using Microsoft.Dynamics.FIMReports.SharedComponents;
public partial class InventList
{
[DataMethod(), AxSessionPermission(SecurityAction.Assert)]
public static string drillThroughActionItemGroupId(string reportContext, string ItemGroupId)
{
Dictionary<int, object> indexFields = new Dictionary<int, object>();
indexFields.Add(1, ItemGroupId);
if (RuntimeReportContext.IsClientContext(reportContext))
{
return DynaLink.GenerateURL(reportContext, "InventItemGroup",
MenuItemType.Display, 152, indexFields);
}
return string.Empty;
}
}
Параметры передаваемые в ссылку:
public static string GenerateURL(
string context,
string menuItemName,
MenuItemType menuItemType,
int tableId,
indexFields
)
| Context | URL |
| menuItemName | название запускающего меню в AX |
| menuItemType | соответственно тип |
| tableId | номер таблички |
| indexFields | это объект dictionary, который содержит индексные пары field ID/value |
8. И последнее, что нам остается добавить – это связь написанного метода и действия на отчете.
В свойстве Expression нужно записать следующую строку
=drillThroughActionItemGroupId(Parameters!AX_ReportContext.Value,Fields!ItemGroupId.Value)
В принципе, можно записать туда и другие выражения, например,
=drillThroughActionItemGroupId(Parameters!AX_ReportContext.Value,”1”)
и тогда форма будет открываться всегда с этим параметром. Это свойство
вызывает метод. В результате будет сгенерирована строка URL:
MenuItemDisplay:// InventItemGroup /+ 152 +[1:1].
Выполняем сохранение в AOT, build и deploy отчета, создаем меню в Ax, запускающую отчет, и наслаждаемся. Теперь, открыв отчет, вы сможете навести мышку на поле код номенклатуры и кликнув по этому полю, перейти к форме номенклатур:
А на последок, вкусности в виде полезных ссылок:
- AX SSRS Reporting ScreenCast List
- Walkthrough: Creating a Drillthrough Report (Visual Studio Reporting Tools for Microsoft Dynamics AX)
Ржевский Михаил (MikeR)
miker.ru@gmail.com






