В данной статье будет показано, как добавить в отчет программный код. В классическом клиенте некоторые расчеты выполняются в триггерах секций, но в ролеориентированном клиенте триггеры секций не поддерживаются. Однако код можно добавить непосредственно в макет отчета. Это может быть важно, когда требуется выполнить расчет процентов по итоговым суммам. В данной статье продолжается работа над отчетом, созданным в статьях Разработка отчета для классического клиента и Разработка отчета для ролеориентированного клиента.

Процедура состоит из нескольких шагов:

  1. Добавление функции в макет отчета
  2. Использование функции в макете отчета

Добавление функции в макет отчета

Ниже будет показано, как добавить в отчет пользовательскую функцию по расчету рентабельности продаж, которая будет рассчитываться на основании суммы продаж и прибыли.

В Microsoft Dynamics NAV Classic Client:

  1. Щелкните Tools > Object Designer. Откроется Object Designer.
  2. Щелкните кнопку Report, чтобы открыть список отчетов.
  3. Выберите отчет 123456701 Salesperson Cust. Sales Profit, затем щелкните кнопку Design.
  4. Щелкните View > Layout. Откроется Visual Studio.
  5. Щелкните Report > Report Properties. Откроется окно Report Properties.
  6. Перейдите на закладку Code.
  7. В поле Custom Code напишите требуемую функцию на Visual Basic.
  8. Report propertiesReport properties
    Рисунок 1.1

  9. Щелкните кнопку OK.

Использование функции в макете отчета

Ниже будет показано, как использовать созданную функцию в макете отчета.

  1. Щелкните по столбцам, затем щелкните правой кнопкой мыши и выберите Insert Column to the Right. Теперь в таблице с семь столбцов.
  2. Щелкните правой кнопкой мыши в седьмом столбце третьей строки и выберите Expression. Появится окно Expression.
  3. Введите в верхнее поле следующее выражение:
    =Code.CalcEfficiency(Fields!Customer__Sales__LCY__.Value, Fields!Customer__Profit__LCY__.Value)
  4. ExpressionExpression
    Рисунок 1.2

  5. Щелкните кнопку ОК.

Это был добавлен расчет рентабельности по клиенту. Теперь нужно добавить расчет рентабельности для каждого менеджера и по всем менеджерам в целом.

  1. Щелкните правой кнопкой мыши в седьмом столбце седьмой строки и выберите Expression. Появится окно Expression.
  2. Введите в верхнее поле следующее выражение:
    =Code.CalcEfficiency(Sum(Fields!Customer__Sales__LCY__.Value), Sum(Fields!Customer__Profit__LCY__.Value))
  3. Щелкните кнопку ОК. Это был добавлен расчет рентабельности по менеджеру.
  4. Повторите шаги 1-3 для ячейки, расположенной в седьмом столбце восьмой строки.
  5. Закройте Visual Studio, когда система предложит сохранить изменения, щелкните кнопку Yes.
  6. Щелкните в любом месте Report Designer, затем щелкните кнопку Yes, чтобы загрузить макет из Visual Studio.
  7. Сохраните отчет и закройте Report Designer.

Запуск измененного отчета

  1. Щелкните кнопку Пуск > Выполнить (Win+R) и укажите DynamicsNAV:////runreport?report=123456701.
  2. Щелкните кнопку Preview
  3. Report PreviewReport Preview
    Рисунок 1.3.

Для того чтобы использовать мультиязычные возможности системы, а также соответствующее форматирование (один знак после запятой), в секцию Customer, Body (2) была добавлена текстовая зона с настроенными свойствами Caption, CaptionML и Format (DecimalPlaces).

 

Андрей Панько >>
Dynamics NAV MVP
apanko@rabota-na-rezultat.ru