在上线前的测试阶段,要频繁测试某些参数,随着基础数据和测试数据的增加,需要反复地初始化系统,能够灵活快速地将数据恢复到某个时点就比较重要了,让人记得每天都做一件事情是比较费劲的,当然吃饭睡觉除外。
AX有数据导入导出的功能,并且这些类都是继承自RunbaseBatch的,也就是说可以做定期备份的,但是有一个问题是,文件名的问题,如果不处理一下,由于只有一个文件名,它每次都会把上次的备份给覆盖掉,这当然不是我们所希望看到的。本文描述一下如何修改代码使其每天可自动备份一个文件,只针对初学者,高手就不必看了。
一.修改代码处理文件名
找到类SysDataExpImp,把unpack方法修改如下:
Code
public boolean unpack(container packedClass)
{
version version = RunBase::getVersion(packedClass);
container c;
#DataBackup
boolean ret;
switch (version)
{
case #CurrentVersion:
[version,#CurrentList,c] = packedClass;
ret = super(c);
//Farseer Begin 2009.03
switch(this.parmGroupId())
{
case "All":
fileName = #AllData + Date2str(systemDateGet(),321,2,3,2,3,4) + " "+time2str(timenow(),3,3);
break;
case "Main":
fileName = #MainData + Date2str(systemDateGet(),321,2,3,2,3,4) + " "+time2str(timenow(),3,3);
break;
}
return ret;
//Farseer End 2009.03
default:
return false;
}
return true;
}
public boolean unpack(container packedClass)
{
version version = RunBase::getVersion(packedClass);
container c;
#DataBackup
boolean ret;
switch (version)
{
case #CurrentVersion:
[version,#CurrentList,c] = packedClass;
ret = super(c);
//Farseer Begin 2009.03
switch(this.parmGroupId())
{
case "All":
fileName = #AllData + Date2str(systemDateGet(),321,2,3,2,3,4) + " "+time2str(timenow(),3,3);
break;
case "Main":
fileName = #MainData + Date2str(systemDateGet(),321,2,3,2,3,4) + " "+time2str(timenow(),3,3);
break;
}
return ret;
//Farseer End 2009.03
default:
return false;
}
return true;
}
其中#DataBackup是一个宏,在里面定义了两个路径,分别用来存放全部数据的备份#AllData和只包含主数据的备份#MainData。
二.定义组
我的做法一般都是备份两份数据,1.包含全部数据,2.只包含主数据,不包含交易。组的名字分别为All和Main。
系统管理->期间->数据导入/导出->定义组
新建两个组,名字分别为All和Main,在包括表组选项卡中,All这个组选中所有的表组,而Main只选择前四项,既杂项,参数,组和主要。如下图所示:
All:
Main
三.定义导出数据的批处理和及其频率
选中刚建好的组,点击导出
设置选择批处理
选择 重复执行,设置执行备份数据的频率,如果想每天晚上执行一次,则可以按照如下设置方式,当然这个东西就看每个人的想法了。
四.执行批处理
基本设置->期间->批处理->处理,点击确定,让它运行就OK了。