Inside Dynamics Axapta源代码赏析(一)
看不到书,就读代码解解馋吧,呵呵.感谢Ivan Gao提供源代码.
4.:MorphX Development Tools
代码修改了SysBPCheckMemberFunction这个类,增加了checkUseOfNames()方法,并在check()方法中调用,搞不清楚这个类是干什么用的.增加的这方法的作用是检查scanner中的每一行是否包含devNames中定义的姓名,为了说明宏的定义和使用?Container的使用或者字符串函数的使用?搞不清楚.
A.FormImageJoinedDataSources和FormImageTabActivated
这两个工程是为了说明一个问题的,如何让通过文档管理增加的图片显示在Form上.本示例以SalesTable这Form为例进行说明.
FormImageJoinedDataSources:用Active的方式关联DocuRef和DocuValue两个表.通过DocuValue的Active方法给picture控件赋值,代码如下:
B.InventoryDimensions
这个工程可以看做是增加物料维组的一个例子,这个示例增加了两个物料维组BikeWheelSize和BikeFrameSize,步骤如下:
1.增加扩展数据类型BikeFrameSize和BikeWheelSize
2.增加表BikeFrameSizeTable和BikeWheelSizeTable,这两个表的字段跟InventColor以及InvetSize等类似包含Itemid等字段.
3.修改Table InventDim,包括以下内容:
1).Fields,增加BikeFrameSize和BikeWheelSize这两个字段.
2).Indexs->DimIdx中增加BikeFrameSize和BikeWheelSize这两个字段.
3).Field Groups 在AutoReport,InventoryDimensions,ItemDimensions中分别增加上述两个字段.
4).Methods中需要修改的方法列表如下:
initFromInventDimCombination,dim2dimCombination,dim2dimParm,dimParm2dim,findDim,findOrCreate,formQueryAddDynalink,isFieldIdItemDim,
isFieldIdTransferReceiptMergeable,isFieldIdTransferTransitReceiptMergeable,
4.修改Table InventDimCombination,包括以下内容.
1).Fields.增加BikeFrameSize和BikeWheelSize这两个字段.
2).Field Groups 在Identification,InventoryDimensions,ItemDimensions中分别增加上述两个字段.
3).Indexs->ItemIdx中增加BikeFrameSize和BikeWheelSize这两个字段.
5.修改Table InventDimParm,包括以下内容:
1)Fields,增加BikeFrameSize和BikeWheelSize这两个字段.
2)Field Groups 在FixedView,View中分别增加上述两个字段.
3)Methods中需要修改的方法列表如下:
initFromInventDimCombination,findAllDimIdCombinations
6.修改如下宏文件:
InventDimExistsJoin,InventDimGroupAllFields,InventDimJoin,InventDimSelect
7.增加类似于InventColor,InventSize的Form,用于设定新建的两个纬度的值以及组合.
4.:MorphX Development Tools
代码修改了SysBPCheckMemberFunction这个类,增加了checkUseOfNames()方法,并在check()方法中调用,搞不清楚这个类是干什么用的.增加的这方法的作用是检查scanner中的每一行是否包含devNames中定义的姓名,为了说明宏的定义和使用?Container的使用或者字符串函数的使用?搞不清楚.
protected void checkUseOfNames()
{
#Define.MyErrorCode(50000)
container devNames = ["Arthur", "Lars", "Michael"];
int i;
int j;
int pos;
str line;
int lineLen;
for (i=scanner.lines(); i; i--)
{
line = scanner.sourceLine(i);
lineLen = strlen(line);
for (j=conlen(devNames); j; j--)
{
pos = strscan(line, conpeek(devNames, j), 1, lineLen);
if (pos)
{
sysBPCheck.addError(#MyErrorCode, i, pos, "Don't use your name!");
}
}
}
}
6 Customizing Dynamics Ax{
#Define.MyErrorCode(50000)
container devNames = ["Arthur", "Lars", "Michael"];
int i;
int j;
int pos;
str line;
int lineLen;
for (i=scanner.lines(); i; i--)
{
line = scanner.sourceLine(i);
lineLen = strlen(line);
for (j=conlen(devNames); j; j--)
{
pos = strscan(line, conpeek(devNames, j), 1, lineLen);
if (pos)
{
sysBPCheck.addError(#MyErrorCode, i, pos, "Don't use your name!");
}
}
}
}
A.FormImageJoinedDataSources和FormImageTabActivated
这两个工程是为了说明一个问题的,如何让通过文档管理增加的图片显示在Form上.本示例以SalesTable这Form为例进行说明.
FormImageJoinedDataSources:用Active的方式关联DocuRef和DocuValue两个表.通过DocuValue的Active方法给picture控件赋值,代码如下:
public int active()
{
Image image;
int ret;
ret = super();
if (docuValue.File)
{
image = new Image();
image.setData(docuValue.File);
bikeImage.image(image);
}
else
{
bikeImage.imageResource(0);
}
return ret;
}
FormImageTabActivated:不关联任何数据源,而是在Table SalesLine上增加一个display方法,picutre控件用这个方法填充.{
Image image;
int ret;
ret = super();
if (docuValue.File)
{
image = new Image();
image.setData(docuValue.File);
bikeImage.image(image);
}
else
{
bikeImage.imageResource(0);
}
return ret;
}
server public DocuValueFile bikeImage()
{
DocuRef docuref;
DocuValue docuValue;
;
select forceplaceholders firstonly tableid from docuRef
where docuRef.RefCompanyId == this.DataAreaId &&
docuRef.RefTableId == this.TableId &&
docuRef.RefRecId == this.RecId &&
docuRef.TypeId == 'Image'
join file from docuValue
where docuValue.RecId == docuRef.ValueRecId;
return docuValue.File;
}
我一般采用第二种方法,不知道哪个更好一些.{
DocuRef docuref;
DocuValue docuValue;
;
select forceplaceholders firstonly tableid from docuRef
where docuRef.RefCompanyId == this.DataAreaId &&
docuRef.RefTableId == this.TableId &&
docuRef.RefRecId == this.RecId &&
docuRef.TypeId == 'Image'
join file from docuValue
where docuValue.RecId == docuRef.ValueRecId;
return docuValue.File;
}
B.InventoryDimensions
这个工程可以看做是增加物料维组的一个例子,这个示例增加了两个物料维组BikeWheelSize和BikeFrameSize,步骤如下:
1.增加扩展数据类型BikeFrameSize和BikeWheelSize
2.增加表BikeFrameSizeTable和BikeWheelSizeTable,这两个表的字段跟InventColor以及InvetSize等类似包含Itemid等字段.
3.修改Table InventDim,包括以下内容:
1).Fields,增加BikeFrameSize和BikeWheelSize这两个字段.
2).Indexs->DimIdx中增加BikeFrameSize和BikeWheelSize这两个字段.
3).Field Groups 在AutoReport,InventoryDimensions,ItemDimensions中分别增加上述两个字段.
4).Methods中需要修改的方法列表如下:
initFromInventDimCombination,dim2dimCombination,dim2dimParm,dimParm2dim,findDim,findOrCreate,formQueryAddDynalink,isFieldIdItemDim,
isFieldIdTransferReceiptMergeable,isFieldIdTransferTransitReceiptMergeable,
4.修改Table InventDimCombination,包括以下内容.
1).Fields.增加BikeFrameSize和BikeWheelSize这两个字段.
2).Field Groups 在Identification,InventoryDimensions,ItemDimensions中分别增加上述两个字段.
3).Indexs->ItemIdx中增加BikeFrameSize和BikeWheelSize这两个字段.
5.修改Table InventDimParm,包括以下内容:
1)Fields,增加BikeFrameSize和BikeWheelSize这两个字段.
2)Field Groups 在FixedView,View中分别增加上述两个字段.
3)Methods中需要修改的方法列表如下:
initFromInventDimCombination,findAllDimIdCombinations
6.修改如下宏文件:
InventDimExistsJoin,InventDimGroupAllFields,InventDimJoin,InventDimSelect
7.增加类似于InventColor,InventSize的Form,用于设定新建的两个纬度的值以及组合.