Posts Tagged ‘ lookup

Dynamics 365 Finance and Operations: InventSizeId Lookup Nasıl Yapılır?

Bu yazıda Dynamics 365 Finance and Operations içinde stok boyutlarından biri olan InventSize için nasıl lookup yazabilirsiniz bir örnekle anlatacağım. InventSize bilgisi EcoResSize tablosunda tutuluyor ayrıca ürünlerle ilişkileri de EcoResProductMasterSize tablosunda tutulmakta.

Örneğimiz belli bir ürünün InventSize bilgilerini gösterecek bir lookup oluşturacak.

Resim-1

public void lookup()

{

SysTableLookup                sysTableLookup;

QueryBuildDataSource    qbds;

Query                                  query;

sysTableLookup = SysTableLookup::newParameters(tableNum(EcoResSize), this);

sysTableLookup.addLookupfield(fieldNum(EcoResSize, Name));

query = new Query(queryStr(EcoResProductVariantSizeLookup));

qbds =  query.dataSourceTable(tableNum(EcoResProductMasterSize));

qbds.rangeField(fieldNum(EcoResProductMasterSize,        SizeProductMaster)).value(queryValue(EcoResProduct::findByProductNumber(fromItemId).RecId));

sysTableLookup.parmQuery(query);

sysTableLookup.performFormLookup() ;

}

Bu yazıda InventSize Lookup nasıl yazabiliriz basit örnekle anlatmaya çalıştım.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, InventSizeId, EcoResSize, Lookup, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

Dynamics 365 Finance and Operations Form Lookup Nasıl Yapılır?

Bu yazıda Dynamics 365 Finance and Operations içinde bir formun nasıl lookup olarak kullanılabileceğini anlatacağım. Öncelikle neden lookup olarak forma ihtiyaç duyarız ona bakalım. Kodla yaptığımız lookuplarda birkaç kısıntımız var. Birincisi tasarım. Form olduğunda tasarım için çok esnek bir yapımız oluyor ama diğerinde böyle bir imkânı yok. Veri kaynağı yönetimi ve parametrik olarak farklı çalışma özellikleri yine form olunca mevcut. Gelelim nasıl yapıldığına.

Öncelikle yeni bir form oluşturuyoruz. Lookup- Basic desenini uyguluyoruz.

Resim-1

Veri kaynağını ekliyoruz. Tasarıma bir Grid ekleyip gerekli alanları sürükleyip bırakıyoruz.

Resim-2

Run metoduna hangi alanı geri döndürmek istiyorsak onu ekliyoruz. Burada direk girdde oluşturduğumuz nesnenin adını kullanmak gerekiyor. Bu yüzden AutoDecleration yes olmalı.

Resim-3

Form ile işimiz bitti. Şimdi İlgili EDT de Form help kısmından formumuzu seçiyoruz. Artık bu EDT’nin kullanıldığı yerlerde otomatik olarak bizim form lookup olarak açılacak.

Resim-4

Deneme için bir tabloya alanı açıyoruz.

Resim-5

Forma alanı ekleyip çalıştırıyoruz.

Resim-6

Son olarak formda oluşturduğumuz lookupı görebiliriz.

Resim-7

Bu yazıda lookup olarak bir form nasıl yaparız anlatmaya çalıştım. Lookup yapmanın çok fazla yolu var hangisi hangi durumda kullanılmalı dikkat etmek lazım.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Lookup, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Segmented Entry, Power Automate, Power Apss, Power Virtual Agents, Dynamics 365 nedir, Dynamics 365 ERP, Dynamics 365 CRM

How to modify MainAccount Lookup in Segmented Entry Control

Hi

One of my friend asked me  “How can i modify MainAccount lookup in Segmented entry control?”. I did not know how to do that. After some research i found LedgerDimensionAccountController class which controls Segmented Entry Control.  After some working i found a method named restrictQueryForMainAccounts() .


public static void restrictQueryForMainAccounts(QueryBuildDataSource
                                             _queryBuildDataSource)
{
    QueryBuildRange qbr;
    //--> FD
    QueryBuildRange qbrFD;
    // <-- FD

    str evalCriteria = strFmt('(%1.Type != %2)',
        _queryBuildDataSource.name(),
        queryValue(enum2int(DimensionLedgerAccountType::Reporting)));
    ;

    qbr = _queryBuildDataSource.addRange(fieldNum(DimAttributeMainAccount, Type));
    qbr.value(evalCriteria);
    qbr.status(RangeStatus::Hidden);

    //--> FD
    qbrFD = _queryBuildDataSource.addRange(fieldNum(DimAttributeMainAccount, value));
    qbrFD.value("3*");
    // <-- FD
}

If you open segmented entry control and lookup mainAccount before modification of this method you can see all MainAccounts .

If you modify the method you can see only data starts with “3″ as you can see blow image.

It may not be the correct way to do this but it works. I dont recommend to do such a modification at framework classes. If you have to, be very careful.

Until next time.

AX 2012 ‘de lookup’ta çoklu kayıt seçimi nasıl yapılır

Merhaba

Ax 2012 ‘yi  incelerken  SysLookupMultiSelectCtrl isminde bir sınıfla karşılaştım . Bu sınıf sayesinde lookuplarda  çoklu kayıt seçilebiliyor.

Öncelikle lookupta görmek istediğiniz veri için bir query hazırlamalısınız. AOT de ki query düğümünü kullanarak yapabileceğiniz gibi kodla da oluşturabilirsiniz.

Biz CustTable için bir query hazırlayalım. Ayrıca tasarımında sadece stringEdit (adı CustAccount olsun ) bir alan olan form yapalım.

Bu aşamadan sonra forma kod yazmamız gerekiyor. Eklememiz gereken kodlar :

Read more

ExistsJoin ve NotExistJoin ile Lookup yazmak

Merhaba

Şöyle bir istek olsun.  Seçilecek vergi numarası ne müşteri nede satıcı tablosunda kullanılmış olsun. Bu gibi bir istekte notexistjoin kullanabiliriz. Eğer müşteride veya satıcıda  kullanılanlar listelensin denseydi existjoin kullanacaktık.

client static void lookupETGVATNum (FormStringControl ctrl, Common common)
{
    SysTableLookup          sysTableLookup = SysTableLookup::newParameters(tablenum(TaxVATNumTable), ctrl);
    Query                   query = new Query();
    QueryBuildDataSource    queryBuildDataSource = query.addDataSource(tablenum(TaxVATNumTable));
    QueryBuildRange         queryBuildRange = queryBuildDataSource.addRange(fieldnum(TaxVATNumTable, CountryRegionId));
    QueryBuildDataSource    qdbs;
    ;

// CustTable müşteri tablosunda olmayanları getiriyoruz
    qdbs  = queryBuildDataSource.addDataSource(tablenum(CustTable));
    qdbs.addLink(fieldnum(TaxVATNumTable , vatNum ),fieldnum(CustTable , vatNum ));
    qdbs.joinMode(joinmode::NoExistsJoin);

Read more

Query ile yapamadığınız bir join’i nasıl yapabilirsiniz?

Merhaba

BankAccountTable’ı lookup da açtırmak istiyoruz. Kriterlerimiz şöyle.

Lookupta  BankAccountTable.AssignedBankTransType alanı boş olanlar ve BankTransType.BankTransType   <>  BankAccountTable.AssignedBankTransType

İlişkisiyle  BankTransType’ın BankTransType.ExchangeNoteDocType’ı Çek ve senetten farklı olan kayıtlar isteniyor.

Query’de   bu join’in nasıl yapılacağını bulamadım.  Bu sebepten  temp tablo kullanmaya  karar verdim.  while select kullanarak temptabloyu doldurup.

Sonra lookup için query’ı yazdım.

Axaptada joinlerle ilgili bir makaleyi ilerki zamanlarda yayınlayacağım.

Örenk metod şöyledir.

 

static client void lookupPortfolioPromissory(FormStringControl _ctrl, CurrencyCode _filterStr)
{
    SysTableLookup                sysTableLookup = SysTableLookup::newParameters(tablenum(tmpBankAccountTable),_ctrl);
    Query                                     query = new Query();

Read more

Lookup’ta join ile query yazmak

Merhaba

Axapta  formlarında bir alanın lookup metodunu ezmek zorunda kalabilirsiniz.

Örneğimizde bir lookup metedu var.  join ile query yazılıp kriter veriliyor.
static client void lookupPortfolioPromissory(FormStringControl _ctrl, CurrencyCode _filterStr)// para birimine göre farklı gelsin
{
    SysTableLookup          sysTableLookup = SysTableLookup::newParameters(tablenum(BankAccountTable),_ctrl);
    Query                   query = new Query();
    QueryBuildDataSource    queryBuildDataSource = query.addDataSource(tablenum(BankAccountTable)); // birinci tablomuz
    QueryBuildDataSource    qdbs;
    ;

Read more