Salı, Haziran 29, 2010

AXapta & X++

x++ kullanarak yaptıgım ilk gelıştırmeyı blogumda yayınlamaktan gurur ve de onur duyarım =)
Başlangıç konumunda olanlar için (benim gibi=)) faydalı olacagına emınım..


//Class declaration kısmında çalışacagımız tablonun aşağıda goruldugu gıbı nesnesını yaratıyoruz.
class FeatureManagement
{
AGC_InventParameters aGC_InventParameters;
}
//new kısmına çalışacagımız tabloyu parametre alacak şekılde ,atama yapıyoruz
void new(AGC_InventParameters _AGC_InventParameters)
{
;
aGC_InventParameters = _AGC_InventParameters;
}

//run methodu klasik olarak .net ortamında da kullanılan bir method,bu kodda kendı oluşturdugumuz methodları çağırabılıyoruz

public void run()
{
#OCCRetryCount

try
{
ttsbegin;

FeatureManagement::CreateEdt(aGC_InventParameters);
FeatureManagement::SetExtendDataType(aGC_InventParameters);
FeatureManagement::CreateTable(aGC_InventParameters);
FeatureManagement::AddNameField(aGC_InventParameters);
FeatureManagement::AddCodeField(aGC_InventParameters);
FeatureManagement::ChangeNameFieldExtend(aGC_InventParameters);
ttscommit;
}
catch (Exception::Deadlock)
{
retry;
}
catch (Exception::UpdateConflict)
{
if (appl.ttsLevel() == 0)
{
if (xSession::currentRetryCount() >= #RetryNum)
{
throw Exception::UpdateConflictNotRecovered;
}
else
{
retry;
}
}
else
{
throw Exception::UpdateConflict;
}
}

}
//Aşağıdaki kod x++ ile tablo oluşturmayı sağlıyor
static void CreateTable(AGC_InventParameters _inventParameters)
{
#AOT
#TreeNodeSysNodeType
TreeNode treenode;
TreeNode fieldsnode,field;
AOTTableFieldList FList,Flist1;
str props,prop;
str tablename,fieldname;

;


treenode=TreeNode::findNode(#TablesPath);
treenode.AOTadd(_inventParameters.Kodu + "Table_AGC").applObjectType();

treenode.AOTsave();
treenode=null;

//Add Code and Name Field
/* Flist=TreeNode::findNode("Data Dictionary\\Tables\\" + _inventParameters.Kodu+"Table_AGC" +"\\Fields");
Flist.AOTaddExtendedDataType("Code",typeof(_inventParameters.Kodu+"EDT_AGC"));
Flist.AOTaddExtendedDataType("Name",typeof(_inventParameters.EDT_Tipi));
//Flist.addString('Code');
//Flist.addString('Name');
Flist.AOTsave();*/
/*
//Code --< ExtendedDataType--<
tablename= _inventParameters.Kodu+"Table_AGC";
//info (tablename);
fieldsnode=TreeNode::findNode(@'\DataDictionary\Tables\tablename\Fields');
fieldname="Code";
field=fieldsnode.AOTfindChild(fieldname);
prop=field.AOTgetProperties(false,false);
prop=Global::setProperty(prop,'ExtendedDataType',_inventParameters.Kodu+"EDT_AGC");
field.AOTsetProperties(prop);
field.AOTsave();
field=null;
fieldsnode=null;
*/


}
//Aşağıdaki kod belırlı ozellıkleri taşıyan name isimli alanın oluşturulan tabloya eklenmesını sağlıyor
static void AddNameField(AGC_InventParameters _inventParameters)
{
TreeNode fieldNode;
TreeNode fieldNodeId;
TreeNode fieldNodename;
TreeNode treeNode;
TreeNode treeNode1;
Name fieldName =_inventParameters.Kodu+"EDT_AGC";

#Properties
#AOT
str properties,prop2, strAllowEdit,extend ;
;
treeNode = TreeNode::findNode("Data Dictionary\\Tables\\" +_inventParameters.Kodu+"Table_AGC" );
treeNode1 = treenode.AOTfindChild("fields");
fieldNode= treeNode1.AOTfindChild(fieldName);


if(!fieldNode)
{
fieldNode = TreeNode::findNode(#ExtendedDataTypesPath+"\\"+fieldName);
if(fieldNode)
treeNode1.AOTDrop(fieldNode);
fieldNode= treeNode1.AOTfindChild(fieldName);
properties =fieldNode.AOTgetProperties();
properties = SetProperty(properties, 'Name', 'Name');
fieldNode.AOTsetProperties(properties);
fieldNode = TreeNode::findNode("Data Dictionary\\Tables\\" + _inventParameters.Kodu+"Table_AGC" );
fieldNode.AOTsave();
treeNode.AOTsave();

}

treeNode.AOTsave();
}
//Eklenen name alanının ExtendedDataType özelliğinin değiştirilmesini sağlıyor
static void ChangeNameFieldExtend(AGC_InventParameters _inventParameters)
{
#AOT
#TreeNodeSysNodeType
#Properties;

TreeNode treeNode;
Name fieldName="Name";
str props;

;

treeNode = TreeNode::findNode("Data Dictionary\\Tables\\" +_inventParameters.Kodu+"Table_AGC" );
treeNode = treeNode.AOTfindChild("fields");
treeNode= treeNode.AOTfindChild(fieldName);
props = treenode.AOTgetProperties(false,false);
props = Global::setProperty(Props,'ExtendedDataType',_inventParameters.EDT_Tipi);
treenode.AOTsetProperties(props);
treenode.AOTsave();
}
//Aşağıdaki kod Code isimli alanın tabloya eklenmesını sağlıyor
static void AddCodeField(AGC_InventParameters _inventParameters)
{
TreeNode fieldNode;
TreeNode fieldNodeId;
TreeNode fieldNodename;
TreeNode treeNode;
TreeNode treeNode1;
Name fieldName =_inventParameters.Kodu+"EDT_AGC";

#Properties
#AOT
str properties,properties2, strAllowEdit ;
;
treeNode = TreeNode::findNode("Data Dictionary\\Tables\\" +_inventParameters.Kodu+"Table_AGC" );
treeNode1 = treenode.AOTfindChild("fields");
fieldNode= treeNode1.AOTfindChild(fieldName);


if(!fieldNode)
{
fieldNode = TreeNode::findNode(#ExtendedDataTypesPath+"\\"+fieldName);
if(fieldNode)
treeNode1.AOTDrop(fieldNode);
fieldNode= treeNode1.AOTfindChild(fieldName);
properties =fieldNode.AOTgetProperties();
if (hasProperty(properties, #PropertyAllowedit) == true)
{
properties="PROPERTIES\n" +
" Name #Code\n" +
"ENDPROPERTIES\n " ;
fieldNode.AOTsetProperties(properties);
}
treeNode.AOTsave();
}

treeNode.AOTsave();
}
//Aşağıdaki kod X++ ile EDT yaratmayı sağlıyor(Bu class client ortamında çalışmalı)
static void CreateEdt(AGC_InventParameters _inventParameters)
{
#AOT
#TreeNodeSysNodeType
treenode treenode;
xInfo xInfo= new xinfo();

;
treeNode = xInfo.rootNode();
treeNode = treeNode.AOTfindChild('Data Dictionary');
treeNode = treeNode.AOTfindChild('Extended Data Types');
treeNode=treeNode.AOTaddExtendedDataType(_inventParameters.Kodu+"EDT_AGC",Types::String);
treeNode.AOTsave();

}
//Aşağıdaki kod oluşturulan EDT nın belırlı ozellıklerının degıştırılmesını sağlıyor
static void SetExtendDataType(AGC_InventParameters _inventParameters)
{
#AOT
#TreeNodeSysNodeType
#Properties;

TreeNode treenode;
AOTTableFieldList FList;
str props,props2;

;

treenode=TreeNode::findNode(#ExtendedDataTypesPath).AOTfindChild(_inventParameters.Kodu+ "EDT_AGC");
Props = treenode.AOTgetProperties(false,false);
if (_inventParameters.EDT_Tipi)
{
Props = Global::setProperty(Props,'Extends',_inventParameters.EDT_Tipi);
}
else
{ if (_inventParameters.Yeni_EDT && _inventParameters.EDT_Tipi=="")
Props = Global::setProperty(Props,'Extends',_inventParameters.Yeni_EDT);
}
treenode.AOTsetProperties(props);
treenode.AOTsave();
treenode=null;


//label
treenode=TreeNode::findNode(#ExtendedDataTypesPath).AOTfindChild(_inventParameters.Kodu + "EDT_AGC");
props2=treenode.AOTgetProperties();
props2 = SetProperty(props2, "Label", _inventParameters.Adi);
treenode.AOTsetProperties(props2);
treenode.AOTsave();
treenode=null;


}
//

Hiç yorum yok:

Yorum Gönder