ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

D365: 添加客制化表作为财务维度

2022-08-19 15:34:25  阅读:120  来源: 互联网

标签:renamePrimaryKey 化表 capex writeCrossCompany D365 客制 VyaFDCAPEX policy originalRe


1,创建表VyaFDCAPEX

 

 

注意事项

- 必须添加delete,renamePrimaryKey,writeCrossCompany方法

public void delete()
    {
        // Check to see if the associated dimension attribute value has been used
        // in a way that would prevent deletion.
        if (!DimensionValidation::canDeleteEntityValue(this))
        {
            throw error(strfmt("@SYS134392", this.Code));
        }

        ttsbegin;

        // Update the associated dimension attribute value.
        DimensionAttributeValue::updateForEntityValueDelete(this);

        this.writeCrossCompany(tableMethodStr(VyaFDCAPEX, delete));

        super();

        ttscommit;
    }

    public void renamePrimaryKey()
    {
        Common originalRecord = this.orig();

        super();

        DimensionValueRename::syncRenamedValue(this, originalRecord);

        this.writeCrossCompany(tableMethodStr(VyaFDCAPEX, renamePrimaryKey), originalRecord);
    }

    private void writeCrossCompany(str _methodName, Common _originalRecord = null)
    {
        SysDataSharingPolicy policy = SysDataSharingPolicy::findSharingPolicyByCompanyAndTable(curExt(), tableId2name(this.TableId));
        if (policy.RecId && policy.IsEnabled)
        {
            Query       query = SysDataSharingCrossCompanyValidatorQueryBuilder::buildQuery(this.orig(), policy.RecId);
            QueryRun    queryRun = new QueryRun(query);
        
            while (queryRun.Next())
            {
                VyaFDCAPEX companyCAPEX = queryRun.get(this.TableId);
                DataAreaId company = companyCAPEX.DataAreaId;

                if (companyCAPEX && company && company != curExt())
                {
                    changecompany(company)
                    {
                        VyaFDCAPEX capex = VyaFDCAPEX::find(companyCAPEX.Code);
                        if (capex.RecId)
                        {
                            buf2Buf(this, capex);

                            switch (_methodName)
                            {
                                case tableMethodStr(VyaFDCAPEX, delete):
                                    if (!DimensionValidation::canDeleteEntityValue(capex))
                                    {
                                        throw error(strfmt("@SYS134392", capex.Code));
                                    }

                                    DimensionAttributeValue::updateForEntityValueDelete(capex);
                                    break;
                                case tableMethodStr(VyaFDCAPEX, renamePrimaryKey):
                                    DimensionValueRename::syncRenamedValue(capex, _originalRecord);
                                    break;
                                default:
                                    return;
                            }
                        }
                            
                    }
                }
            }
        }
    }

  

2,增加创建主表的窗体,菜单

 

 

 3,增加View VyaFDCAPEXDimensionAttribute

 

 

注意事项

- 视图标签必须指定

- Singular label必须指定

- 数据源名称”必须为“BackingEntity”

- 需要包含三个字段Key, Vaule, Name

- 必须包含Vaule和Name的唯一索引

- 必须包含方法

[SubscribesTo(classstr(DimensionEnabledType), delegatestr(DimensionEnabledType, registerDimensionEnabledTypeIdentifiersDelegate))]
public static void registerDimenionEnabledTypeIdentifier(DimensionIEnabledType _dimensionIEnableType)
{
_dimensionIEnableType.registerViewIdentifier(tableStr(VyaFDCAPEXDimensionAttribute));
}

- 视图必须要有privilege,并将privilege放入到duty(SysServerAXBasicMaintain)中

 

 

 

 

4,打开URL清除缓存

https://*****.sandbox.operations.dynamics.com/?cmp=****&mi=DimensionClearCacheScopes

 

标签:renamePrimaryKey,化表,capex,writeCrossCompany,D365,客制,VyaFDCAPEX,policy,originalRe
来源: https://www.cnblogs.com/dingkui/p/16602099.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有