在前文(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. 什么是API网关?

    版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/lcx216/article/details/52913645 1.API网关介绍 API网关是一个服务 ...

  2. PCL法线估计

    平面的法线是垂直于它的单位向量.在点云的表面的法线被定义为垂直于与点云表面相切的平面的向量.表面法线也可以计算点云中一点的法线,被认为是一种十分重要的性质.常常在被使用在很多计算机视觉的应用里面,比如 ...

  3. MFC函数—— CWnd::PreCreateWindow

     CWnd::PreCreateWindow virtual BOOL PreCreateWindow( CREATESTRUCT& cs ); 返回值: 如果要继续窗口的创建过程,则返回非零 ...

  4. 电源PI相关知识讲解

    电源层与地线层的谐振控制 一旦PCB的电源与地层的形状.距离以及中间介质定下来以后,发生谐振的频率也就定下来了. 采用LC等效电路,不考虑PCB上的损耗,而这些损耗往往在高频影响尤为明显,例如趋肤效应 ...

  5. windows下 删除指定文件夹里面一周前的所有文件和文件夹的bat

    forfiles /p "指定文件夹路径" /m * /s /d -7 /c "cmd /c if @isdir==TRUE (rd /q @path) else del ...

  6. 【WPF】WPF DataGrid List数据源 双向绑定通知机制之ObservableCollection使用以及MultiBinding 的应用

    以下代码实现了DataGrid的简单绑定List数据源 重点要提一下的是,绑定List数据源,但是不能直接用List.比如下面的代码,使用List<GridItem>只能实现数据修改的绑定 ...

  7. Linux中的绝对路径和相对路径

    一.介绍 1,文件路径 什么是文件的路径? 答:这个文件存放的地方,可以联想为 文件的“家”. 在Linux中,存在着绝对路径和相对路径 绝对路径:路径的写法一定是由根目录 / 写起的,例如 /usr ...

  8. e616. Determining If a Focus Lost Is Temporary or Permanent

    A temporary focus-lost event occurs if the focus moves to another window. It's temporary because the ...

  9. Python——eventlet

    eventlet语境下的“绿色线程”普通线程之间的区别: 1. 绿色线程几乎没有开销,不用像保留普通线程一样保留“绿色线程”,每一个网络连接对应至少一个“绿色线程”: 2. 绿色线程需要人为的设置使其 ...

  10. Lemon OA第3篇:核心功能

    对Lemon OA系统的核心功能进行梳理,分别介绍说明如下文. Portal页面 还是从用户主页开始说起: OA核心的功能就是流程,启动流程,办理流程,查看历史,3个常用功能都罗列在用户主页上,方便用 ...