[AX2012]代码更改默认财务维度
在前文(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]代码更改默认财务维度的更多相关文章
- openwrt 更改默认主题
BB 版本默认的主题为 bootstrap,想要修改为其他的主题,可以按照如下方法修改: 1.查看可以使用的主题. "make menuconfig" ---> " ...
- Discuz更改默认搜索模块
由于网站使用DZ的侧重点不同,在搜索中可能需要更改默认搜索模块 首先找到模板中搜索模块对应的文件,默认模板中搜索模块的地址是 template\default\common\pubsearchform ...
- update-java-alternatives 更改默认Java环境
Ubuntu/debian 更改默认Java环境 我的电脑里安装了两个版本的Java,一个是java-6-sun,还有一个是java-gcjgcj是在JVM非常缓慢的时候诞生的,他可以把Java代码编 ...
- webstorm 10 更改默认端口
快捷键 ctrl + Alt + s :打开配置 如图下可以更改 默认端口.快捷键可能跟qq的快捷键冲突,可以关闭qq来设置端口
- Eclipse更改默认工作目录的方法
参考: Eclipse更改默认工作目录的方法:http://blog.163.com/take_make/blog/static/208212210201272611406227/ 用记事本打开&qu ...
- gcc -D 传值给代码,默认值为1
gcc -D 传值给代码,默认值为1 -D 参数可以给代码中的宏打开一扇门.简单的代码#include <stdio.h> #ifdef WHO #define NAME "jo ...
- SharePoint发展 - 使用Session(代码更改webconfig)
博客地址 http://blog.csdn.net/foxdave SharePoint启用Session能够使用Powershell,戳这里:能够改动webconfig. 本篇叙述的重点是通过fea ...
- ssh更改默认端口号及实现免密码远程登陆
近来在复习防火墙管理工具 iptables 的基本使用方法,涉及到对端口添加或删除防火墙策略的内容,之前对ssh更改默认端口号及免密码登录的方法不熟悉,这次做一个基本的总结防止自己遗忘. 错误偏差及其 ...
- 如何彻底解决MySQL更改默认字符集以及字符乱码问题!!!
在我们使用MySQL数据库时,字符乱码,对我们来说是一个很头疼的问题.今天笔者就来教大家如何彻底解决更改默认字符集以及字符乱码问题. 当我们使用压缩包进行MySQL安装后,系统会使用默认的字符集,这时 ...
随机推荐
- 【javascript】设为首页——setHome
原生 js 编写,兼容 ie,火狐和谷歌. 函数如下: function setHome(obj,url){ try{ obj.style.behavior = 'url(#default#homep ...
- Spring Cloud搭建手册(2)——Spring Cloud Config
※在Dalston.SR2版本以后,均不能正常加密,如果必须使用此功能,需要降级到SR1或Camden SR7. 1.首先需要创建一个config-server工程,作为配置中心的服务器,用来与git ...
- JavaScript世界的一等公民—— 函数
简介 在很多传统语言(C/C++/Java/C#等)中,函数都是作为一个二等公民存在,你只能用语言的关键字声明一个函数然后调用它,如果需要把函数作为参数传给另一个函数,或是赋值给一个本地变量,又或是作 ...
- 关于qt QWebKit/QWebview 使用心得
当前项目为c/s客户端,采用qt4.8.7,需要使用仪表盘.折线图.柱状图等,曾经使用过qwt和自定义的图形控件,但是都不尽如人意.最近发现ECharts控件不错.为此就要在qt端使用web的技术.为 ...
- C语言课程设计-保安值班系统支持任意输入保安值班时间
//.cpp : Defines the entry point for the console application. // #include "string.h" #incl ...
- Numpy 的数组转置和轴对换
数组转置 转置(transpose)是重塑的一种特殊形式, 它返回的是源数据的视图(不会进行任何操作.)数组不仅有transpose,还要特殊的T属性 计算矩阵内积 高维数组transpose 详细讲 ...
- 文本编辑工具(sublime text 2)
学习地址: http://www.iplaysoft.com/sublimetext.html 下载地址:http://www.sublimetext.com
- Linux操作_常用命令操作练习
1,新键一个用户,该用户名为自己姓名首字母缩写+学号最后2位组成(如王东,学号最后2位为18,则该用户名为wd18),为该用户设置密码,并将其加到users组:将该用户的相关信息更改(要求:Name为 ...
- Linux Shell nohup命令用法
linux的nohup命令的用法. 在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台: /us ...
- MVC2 ,MVC3 ,MVC4,MVC5的区别,EF的各个版本的区别;LocalDB是个啥
2010年發行ASP.NET MVC 2.0版,2011年發行ASP.NET MVC 3.0版,2012年發行ASP.NET MVC 4.0版 MVC3 需要.net framework 4.0 版本 ...