在前文(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. 【C】——C语言字符串比较函数

    c语言字符串函数详解 void *memset(void *dest, int c, size_t count); 将dest前面count个字符置为字符c. 返回dest的值. void *memm ...

  2. java transient关键字作用,使用场景。

    java transient关键字作用,使用场景. 2016年08月31日 15:31:10 阅读数:4280 transient的作用及使用方法,官方解释为: Variables may be ma ...

  3. java json转换

    https://blog.csdn.net/WillJGL/article/details/77866224 SpringBoot中如果需要实现json的序列化和反序列化,我们会使用json解析工具. ...

  4. Oracle IF-ELSE 条件判断结构

    1. IF 语法 IF 表达式 THEN ... END IF; 例如: set serverout on declare v_name varchar2(20):='&name'; begi ...

  5. 安卓程序代写 网上程序代写[原]Android项目中string.xml占位符

    开发中经常遇到这样的情况 , 在string.xml中用到以下占位符 <string name="delete_success">删除<xliff:g id=&q ...

  6. 高大上的动态CSS

    项目里要添加 custom css 功能 (dynamic stylesheet ),总结一下实现方法. 1.在JSP中动态设定文件path 预先生成一些css文件,由用户选择,在jsp被请求时,动态 ...

  7. [hbase] 查询数据

    获取hbase数据 说说:count 'SOCIA:T_SOCIA_ALBUM_TALK'scan 'SOCIA:T_SOCIA_ALBUM_TALK',{LIMIT=>5}get 'SOCIA ...

  8. Kafka消息的可靠性测试--针对直播业务的方案选择

    转自:http://blog.csdn.net/bailove/article/details/44240303 业务场景 来疯直播互动平台,每天有数百万人上下线,有数十万人同时参与互动直播聊天.用户 ...

  9. Generalization and Equilibrium in Generative Adversarial Nets

    Paper link: https://arxiv.org/abs/1703.00573 Blog link: http://www.offconvex.org/2017/03/30/GANs2/ G ...

  10. jsp页面利用JS做即时时间显示

    想给系统多些点缀,顺便把知识点温习一遍,不过讲真,这些都是网上扒的!我的水平现在也就这样 <%@page import="javax.xml.crypto.Data"%> ...