0

如何使用 Role Tailored Client Report 编写函数来更新 Microsoft Dynamic NAV 中的记录?

提前谢谢,马卡拉

4

2 回答 2

2

您可以在报告触发器中放置代码。

下面是一个简单的代码示例,可以放入引用 Customer 表的 Customer 数据项的 OnAfterGetRecord 触发器。

IF Customer.Name[1] = 'A' THEN BEGIN
  Customer.Name[1] := 'B';
  Customer.MODIFY;
END

上面的代码将报告中包含的以大写“A”开头的任何客户姓名的第一个字符更改为大写“B”。

可以从 pastebin 中找到仅具有此功能且没有打印输出的完整报告: Simple Dynamics Nav Report Sample

您可以将粘贴的全部内容复制到文本文件中,然后将其作为文本导入 Nav。

但请注意,这样做会用此示例替换任何以前的 id 为 50000 的报告,而不会产生任何额外的警告或提示。导入为文本的报告需要以编译的形式保存在 Nav 中,然后您才能运行它。

于 2012-06-21T07:41:50.610 回答
1

您不能将 C/AL 代码直接放在 RTC 报告上 - 相反,您应该在“经典”客户端/开发环境中使用 DataItems 后面的触发器,因为此代码对经典和 RTC 报告都是通用的,并在报告运行时执行在任一环境中。

用一个类似的例子;

Vendor - OnAfterGetRecord()
----------------------------

...

IF Vendor."Phone No." = '' THEN BEGIN
  Vendor."Phone No." := NewPhoneNo;
  Vendor.MODIFY;
END;

...

您可能希望在报告本身上设置以下属性以隐藏打印对话框以及请求表单(假设您不希望应用过滤器):

UseReqForm := FALSE;
ProcessingOnly := TRUE;

另一个需要注意的重要事项是,位于部分后面的代码仅用于经典报告,如果在 RTC 中运行,则不会执行(这可能会导致意外结果)。

于 2012-06-21T04:25:20.570 回答