在前文(http://www.cnblogs.com/duanshuiliu/p/3243048.html)最后演示了如何使用代码更改默认财务维度,那段代码模拟了创建各数据表记录的过程,实际上AX提供了一些类及方法来简化,下面给出更多如何通过代码更改财务维度的例子:

方法一:使用DimensionAttributeValueSetStorage类

static void ChangeCustFinancialDimension(Args _args)
{
CustTable custTable;
DimensionAttributeValueSetStorage dimensionStorage;
DimensionAttribute customerDimensionAttribute;
DimensionAttributeValue newDimensionValue; ;
ttsBegin;
custTable = CustTable::find('',true); //查找Customer财务维度主记录
customerDimensionAttribute = DimensionAttribute::findByName("Customer");
//查找值为“1102”的Customer维度的维度值记录,最后一个参数true表示如果没有找到记录就新建
newDimensionValue = DimensionAttributeValue::findByDimensionAttributeAndValue(customerDimensionAttribute, "",false, true); //根据客户记录表的默认维度查找DimensionAttributeValueSetStorage
dimensionStorage = DimensionAttributeValueSetStorage::find(CustTable.DefaultDimension);
//直接添加维度值记录到DimensionAttributeValueSetStorage
dimensionStorage.addItem(newDimensionValue); //save()返回的就是新的DimensionAttributeValueSet记录的recId
CustTable.DefaultDimension = dimensionStorage.save(); CustTable.update();
ttscommit;
}

上面的例子中将客户代码为1101的客户默认维度中的“Customer”维度值更改为“1102”。

方法二:使用类AxdDimensionUtil、DimensionDefaultingService

static void replaceDefaultDimensions2(Args _args)

{

    CustTable                       custTable = CustTable::find('');
container defDimensionCon;
DimensionDefault dimensionDefault; ;
defDimensionCon += ; //两个维度
defDimensionCon += 'Department';//先维度名称
defDimensionCon += 'OU_4608';//后维度值,依次存放在container中
defDimensionCon += 'CostCenter';
defDimensionCon += 'OU_4615';
defDimensionCon += 'Customer';
defDimensionCon += '';
//使用上面的维度值得到一个新的默认维度记录RecId
dimensionDefault = AxdDimensionUtil::getDimensionAttributeValueSetId(defDimensionCon); //更新到CustTable
ttsBegin;
custTable.selectForUpdate(true);
if (custTable.DefaultDimension)
//合并新的维度值到现有维度
custTable.DefaultDimension = DimensionDefaultingService::serviceMergeDefaultDimensions(dimensionDefault, custTable.DefaultDimension);
else
custTable.DefaultDimension = dimensionDefault;
custTable.doUpdate(); ttsCommit; }

上面两个例子演示如何添加维度值到默认维度,如果是要删除默认维度中的某个维度值又该怎么办呢?参照上面的两个方法,也有两种删除维度的办法:

方法一

static void DeleteDimensionValue1(Args _args)
{
CustTable custTable = CustTable::find('');
DimensionAttributeValueSetStorage dimStorage;
;
ttsBegin;
custTable.selectForUpdate(true);
dimStorage = DimensionAttributeValueSetStorage::find(custTable.DefaultDimension);
dimStorage.removeDimensionAttribute(DimensionAttribute::findByName('CostCenter').RecId);
custTable.DefaultDimension = dimStorage.save();
custTable.update();
ttsCommit;
}

方法二

static void DeleteDimensionValue2(Args _args)
{
CustTable custTable = CustTable::find('');
container c;
int i;
; c = AxdDimensionUtil::getDimensionAttributeValueSetValue(custTable.DefaultDimension);
i = conFind(c, 'CostCenter');
if(i)
{
c = conDel(c, i+, );
c = conDel(c, i, );
}
c = conDel(c, , );
c = conIns(c, , conLen(c) / ); ttsBegin;
custTable.selectForUpdate(true);
custTable.DefaultDimension = AxdDimensionUtil::getDimensionAttributeValueSetId(c);
custTable.update();
ttsCommit;
}

两种方法都不是很复杂,实际上AxdDimensionUtil内部用的也有用DimensionAttributeValueSetStorage,所以还是直接使用DimensionAttributeValueSetStorage更为简单。

[AX2012]代码更改默认财务维度的更多相关文章

  1. openwrt 更改默认主题

    BB 版本默认的主题为 bootstrap,想要修改为其他的主题,可以按照如下方法修改: 1.查看可以使用的主题. "make menuconfig" ---> " ...

  2. Discuz更改默认搜索模块

    由于网站使用DZ的侧重点不同,在搜索中可能需要更改默认搜索模块 首先找到模板中搜索模块对应的文件,默认模板中搜索模块的地址是 template\default\common\pubsearchform ...

  3. update-java-alternatives 更改默认Java环境

    Ubuntu/debian 更改默认Java环境 我的电脑里安装了两个版本的Java,一个是java-6-sun,还有一个是java-gcjgcj是在JVM非常缓慢的时候诞生的,他可以把Java代码编 ...

  4. webstorm 10 更改默认端口

    快捷键 ctrl + Alt + s :打开配置 如图下可以更改 默认端口.快捷键可能跟qq的快捷键冲突,可以关闭qq来设置端口

  5. Eclipse更改默认工作目录的方法

    参考: Eclipse更改默认工作目录的方法:http://blog.163.com/take_make/blog/static/208212210201272611406227/ 用记事本打开&qu ...

  6. gcc -D 传值给代码,默认值为1

    gcc -D 传值给代码,默认值为1 -D 参数可以给代码中的宏打开一扇门.简单的代码#include <stdio.h> #ifdef WHO #define NAME "jo ...

  7. SharePoint发展 - 使用Session(代码更改webconfig)

    博客地址 http://blog.csdn.net/foxdave SharePoint启用Session能够使用Powershell,戳这里:能够改动webconfig. 本篇叙述的重点是通过fea ...

  8. ssh更改默认端口号及实现免密码远程登陆

    近来在复习防火墙管理工具 iptables 的基本使用方法,涉及到对端口添加或删除防火墙策略的内容,之前对ssh更改默认端口号及免密码登录的方法不熟悉,这次做一个基本的总结防止自己遗忘. 错误偏差及其 ...

  9. 如何彻底解决MySQL更改默认字符集以及字符乱码问题!!!

    在我们使用MySQL数据库时,字符乱码,对我们来说是一个很头疼的问题.今天笔者就来教大家如何彻底解决更改默认字符集以及字符乱码问题. 当我们使用压缩包进行MySQL安装后,系统会使用默认的字符集,这时 ...

随机推荐

  1. 微信扫码支付.net版本

    微信扫码支付有两个坑 1.模式一已经过时,不能使用了 2.HttpService类的POST 和 GET方法内的 //设置代理WebProxy proxy = new WebProxy();proxy ...

  2. Linux中添加快捷

    执行操作比较快捷: 1.R3 CGP平台下OMU系统中: Linux 版本:2.6.16.60-0.21-bigsmp vi /etc/profile 2.R2 Linux版本2.6.5-7.244- ...

  3. Java注释规范整理

    Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00018736 在软件开发的过程中总是强调注释的规范,但 ...

  4. 访问网站出现EOF

    HTTP/0.0 503 Service Unavailable Date: Tuesday, 18-Apr-17 10:29:46 CST Keep-Alive: timeout=38 EOF 今天 ...

  5. Linux强制杀进程命令行工具

    需求, 有时候我们会有手动启动程序, 但是又在后台, 没有像服务那样有start, 和stop的程序, 这时候需要用强制杀进程方式 涉及工具, awk, sed, xargs, kill 需求一: 已 ...

  6. K-SVD算法

    它与K-mean算法原理上是类似的: K-mean 算法: (之前写过:http://www.cnblogs.com/yinheyi/p/6132362.html) 对于初始化的类别中心,可以看作初化 ...

  7. Linux中的链接文件_软链接和硬链接

    一.链接文件介绍 Linux操作系统中的“链接文件”分为硬链接(hard link)和软链接(symbolic link).两种链接的本质区别在于inode.以下是详细介绍: 硬链接:当系统要读取一个 ...

  8. 使用Maven运行单元测试

    要通过Maven运行单元测试,发出此命令: mvn test 这会在你的项目中运行整个单元测试. 案例学习 创建两个单元测试,并通过 Maven 的运行它.参见一个简单的 Java 测试类: pack ...

  9. C#基础 ---------------单利模式

    一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设计模式>,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了 ...

  10. C# 让枚举返回字符串

    下面的手段是使用给枚举项打标签的方式,来返回字符串 分别定义一个属性类,一个枚举帮助类 /// <summary> /// 自定义属性 /// </summary> [Attr ...