Inside Dynamics Axapta源代码赏析(一)

看不到书,就读代码解解馋吧,呵呵.感谢Ivan Gao提供源代码.
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
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控件用这个方法填充.
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;
}
我一般采用第二种方法,不知道哪个更好一些.
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,用于设定新建的两个纬度的值以及组合.
原文地址:https://www.cnblogs.com/Farseer1215/p/514624.html