1

在 D365 Finance and Operations 中,在表单 TaxExempt 的 General Section 中,有几个字段,例如 CodeType、CodeName、CompanyList(下拉菜单)。用户应输入所需的值(类型和名称)。在下一部分财产增值税 - 设置中有命令按钮新建。当单击该按钮时,它应该使用取自常规部分的值创建行:公司(来自公司列表选择)、销售税代码(来自代码类型)和名称(来自代码名称)。目前,它只创建空行。是否有一些建议如何执行?

在此处输入图像描述

4

1 回答 1

3

将实现您的目标的方法是表单数据源上的 initValue。在 super() 调用之后,添加来自表单上其他字段的默认值。示例可能如下所示:

[DataSource]
class TaxExemptCodeTable
{
    /// <summary>
    /// Default values from other form controls/fields on new record creation
    /// </summary>
    public void initValue()
    {
        super();

        TaxExemptCodeTable.Value = CustomFormControl.text();

        //etc.
    }
}

如果您正在创建扩展,实际上有多个事件取决于现有的基线代码。OnInitValue 将是与上述非扩展解决方案进行比较的类比,但如果在此存在现有代码,并且 formdatasource 上已经存在默认逻辑,它可能会覆盖您的字段。这是因为该事件将作为框架在 super() 调用中调用的最后一个方法之一触发,但在放置在 super() 之后的任何代码之前。这使扩展方案复杂化。

如果是这种情况,您可以查看 OnCreated 事件的默认值,该事件将在之前的事件和这些方法和/或事件上可能已经存在的“基础”/“开箱即用代码”之后触发。这将使用您在 oncreated 事件中指定的值覆盖任何现有的默认/初始化逻辑,同时还为您提供要使用的表单的上下文(与似乎没有要使用的表单控件/值的表级事件相反对您的要求是强制性的)

在此处输入图像描述

于 2019-06-14T13:41:22.657 回答