В данной статье приведены простые шаги по созданию отчета с возможностью перехода к форме Dynamics AX.

Ржевский Михаил (MikeR)
miker.ru@gmail.com

1. Создадим объект Query, который будем использовать, как источник данных при формировании отчета.

Проект DrillThroughtInventVSReport

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

Отчет InventList

В Model Editor выберите узел InventTable и перетащите в узел Designs. Создастся auto design с именем AutoDesign1. Выберите свойства узла AutoDesign1. Установите свойство

В итоге должно получиться так:

Свойства дизайна

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, запускающую отчет, и наслаждаемся. Теперь, открыв отчет, вы сможете навести мышку на поле код номенклатуры и кликнув по этому полю, перейти к форме номенклатур:

После клика на поле открывается окно Аксапты

А на последок, вкусности в виде полезных ссылок:

 

Ржевский Михаил (MikeR)
miker.ru@gmail.com