method etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
method etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

17 Haziran 2014 Salı

AX 2012 RDP class parametreleri validate method, gruplama ve etiket ekleme

Class Declaration:

[
    DataContractAttribute,
    SysOperationGroupAttribute("DateGroup", "Tarih aralığı", "1", FormArrangeMethod::Vertical),
    SysOperationGroupAttribute("Other", "Diğer filtreler", "1", FormArrangeMethod::Vertical)
]
class myContract implements SysOperationValidatable

{
...
}

Parm metod:

[DataMemberAttribute('StartDate'),
SysOperationGroupMemberAttribute("DateGroup"),
SysOperationDisplayOrderAttribute("1")]
public StartDate parmStartDate(StartDate _StartDate = startDate)
{
   startDate = _StartDate;
   return StartDate;
}


Validate metodu:

public boolean validate()
{
    boolean isValid = true;
    if ( !endDate || !StartDate)
        isValid = checkfailed("İlk/Son tarih girmelisiniz!..");

    return isValid;
}

24 Haziran 2013 Pazartesi

AXAPTA - cacheAddMethod ile display methodları hızlandırmak

Axapta normalde bir kayıttaki display methodları dolaşırken defalarca ard arda çağırabilir. Bu display method sayısı fazla olduğunda can sıkıcı hale gelebilir.  cacheAddMethod ile display methodlar serverda bir arabellekte saklanır ve oldukça güzel performans artışı sağlanabilir. Bu method "datasource"un init methodunda super sonrası çağrılabilir. Yanlış yerde çağrıldığında donmalara sebep olabiliyor. Ayrıca bu display methodların "tablo" display methodu olması gerekiyor.
Bu yöntem aynı zamanda edit methodlar için de çalışıyor.

public void init()
{
    super();
    this.cacheAddMethod(tableMethodStr(B_CallTrack, CustomerName));
    this.cacheAddMethod(tableMethodStr(B_CallTrack, EndUserWarrantyStart));
    this.cacheAddMethod(tableMethodStr(B_CallTrack, ExtendedWarrantyDate));
    this.cacheAddMethod(tableMethodStr(B_CallTrack, ModelGroupID));
}


 Ara belleğe alınan display/edit methodlar update methodu çalışmadan güncellenmezler. Update methodundan önce güncellenmeleri gerektiğinde cacheCalculateMethod u kullanabilirsiniz:
B_CallTrack_DS.cacheCalculateMethod(tableMethodStr(B_CallTrack, EndUserWarrantyStart));
 

AX 2012 için güncelleme:

AX 2012'de bu işlem çok daha basit. SysClientCacheDataMethodAttribute kullanarak bu iş basitçe halledilebiliyor. Opsiyonel olarak bir parametre eklenmiş. True gönderildiğinde yukardaki update meselesi de çözülmüş oluyor. Ancak bu şekilde tanımlama yapıldığında display/edit metod tüm formlarda cache içine alınıyor. Eğer her formda ayrı ayrı yapılmak isteniyorsa eski yöntem de halen geçerli.


[SysClientCacheDataMethodAttribute(true)]
display name dispCustName()
{
    return CustTable::find(this.CustAccount).Name;
}
 

AXAPTA - Display method yetki kontrolü

//BP Deviation documented
display CustName customerName()
{
    CustName    custName    = '';
    DictTable   dictTable   = new DictTable(tablenum(CustTable));
    ;

    if (dictTable.rights() >= AccessType::View)
    {
        custName = CustTable::find(this.CustAccount).Name;
    }

    return custName;
}

20 Ekim 2011 Perşembe

AXAPTA Edit method örneği:

Edit method, tabloda bir field'ın değerinin tabloda bulunmayan başka bir bilgiye göre güncellendiği zaman kullanılabiliyor. Mesela burda tablonun ServiceObjectId alanı ItemId'ye göre değişiyor. Editmethod'a tablodaki ServiceObjectId değerine sahip ItemId değerini getiriyoruz, ve ItemId değiştikçe tablodaki ServiceObjectId alanını güncelliyoruz.


edit ItemId EditItemId(boolean set, ItemId _ItemId)
{
    ItemId ret;
    ;

    if (set)
    {
        this.ServiceObjectId =
            SMAServiceObjectTable::findItem(_ItemId).ServiceObjectId;
    }
    else
    {
        ret = SMAServiceObjectTable::find(this.ServiceObjectId).ItemId;
    }
    return ret;
}

Set boolean değeri editmethod'un düzenleme mi yoksa görüntüleme için mi çalışacağını belirliyor. Set true ise ikinci parametre (burada _ItemId) kullanıcı tarafından doldurulmuş demektir. aşağıda bu duruma göre ilgili field dolduruluyor. False olduğu zaman da ilgili field bilgisinden editmethod değeri geliyor.