Dynamics Ax/365’te Model Class Nasıl Kullanırız

Semih Çelikol
2 min readNov 21, 2024

--

Selam arkadaşlar,
Bildiğiniz gibi Dynamics Ax AIF servisleri biraz komplike bir yapıya sahip.
Bazen sadece belirli bir datayı dışarıya açmak isteriz.

Örneğin, CustTable tablosunu komple dışarı açmak yerine sadece AccountNum ve AccountName dışarı açmak isteyebiliriz.
Bir başka sebep ise CustTable tablosunu direkt dışarı açarsak eğer kompleks bir XML olarak dışarı açılıyor. Ancak bir model class yapıp onu dışarı açarsak JSON çıktısı elde edebiliyoruz.
Bu sebeplerden dolayı Model class yapmaya ihtiyacımız var. Aşağıda model classı nasıl oluştururuz anlatıyorum.

Model class diye belirtmin temel sebebi c#(.Net) ekosisteminde bu class yapısının bu isimle adlandırılmasından kaynaklıdır. Dynamics Ax dünyasınsa Data Contract Attribute ya da direkt Attribute diye isimlendiriyoruz.

Başlayalım !

1- Yeni class oluşturalım: CustTableModel

[DataContractAttribute]
class CustTableModel
{
CustAccount accountNum;
CustName accountName;
}

[DataMemberAttribute('AccountNum')]
public CustAccount parmAccountNum(CustAccount _accountNum = accountNum)
{
accountNum = _accountNum;

return accountNum;
}

[DataMemberAttribute('AccountName')]
public CustName parmAccountName(CustName _accountName = accountName)
{
accountName = _accountName;

return accountName;
}

2- Yeni bir servis oluşturalım ve CustTableModel Model classını kullanalım.

Yeni bir class ekledim ve içine aşağıdaki methodu ekledim.

[
SysEntryPointAttribute,
AifCollectionTypeAttribute('return', Types::Class, classStr(CustTableModel))
]
public List getCustTables()
{
CustTable custTable;
CustTableModel model;
List list = new List(Types::Class);

while select custTable
{
model = new CLSAdvanceCurrencyCodeModel();
model.parmAccountNum(custTable.AccountNum);
model.parmAccountName(custTable.name());

list.addEnd(model);
}

return list;
}

Hepsi bu. List tipinde bir değişken tanımlıyoruz. Bu list değişkenimizin elemanlarının Class tipinde olacağını belirtiyoruz. Dikkat ederseniz method’un dönüş tipi de List. Attribute bölümünde, ‘return’ ifadesi ile geri dönüşün hangi tipte olacağını belirtiyorum. Yani List objem class tipinde olduğu için, burada da hangi class tipinde ise onu belirtiyorum. Bu örneğimize göre CustTableModel olarak belirttim. While select ile classı doldurup, listeye ekleyerek return ettim.

İşlemlerimiz bu kadar. Servisi yayınlayabilir ve methodu kullanabilirsiniz.
Umarım yardımcı olmuşumdur. Sorularınız ve önerileriniz için benimle iletişime geçebilirsiniz.
Teşekkürler

Bonus

Model classındaki alanlar arttıkça her alanı tek tek açmak biraz yorucu olabiliyor. Bu yüzden model classını otomatik oluşturan bir tool yaptım. Buradan kullanabilirsiniz.

--

--

No responses yet