Archive for Nisan 12th, 2020

X++ :21- ChangeCompany Nedir?

Bu yazıda X++ sorgu anahtar kelimelerinden changeCompany inceleyeceğim. Öncelikle uygulamanın şirket yönetimini anlamak gerekiyor.

Uygulamadan istediğiniz kadar şirket tanımlayabiliyorsunuz. Kullanıcılar uygulamaya girdiğinde bir şirkette işlem yapıyorlar. İstedikleri zaman şirket değiştirebiliyorlar. Tablolarda DataAreaId sayesinde verilerin hangi şirkete ait olduğu tutuluyor. Eğer bir tablonun verisi şirket bağımsız olsun diyorsanız ayarlayabiliyorsunuz. Ancak bu tip tabloların dışında yaptığınız bütün işlemler bulunduğunuz şirkette gerçekleşiyor. Bir sorgu yazıp verileri görmek istediğinizde siz Range olarak şirket vermezseniz bile sistem SQL’e giden koda otomatik bulunduğunuz şirketi ekliyor. Eğer faklı kodunuz farklı şirkette çalışsın istiyorsanız bunun için changeCompany kullanabilirsiniz. Bir örnek yapalım.

static void Dmr_FD_ChangeCompany(Args _args)

{

DmrAuthorTable  authorTable;

DmrBookTable    bookTable;

;

changeCompany(“USF”) // Şu anda USMF şirketindeyim ve çalıştırdığım kodlar burada çalışacak. Ancak changeCompany ile şirket değiştirip bu kod bloğunda USF’te çalışsın diyorum.

{

while select authorTable

notexists join  bookTable

where authorTable.AuthorId ==  bookTable.AuthorId

{

info(strFmt(“%1 %2 %3 %4″, bookTable.BookId , authorTable.AuthorId,

authorTable.FirstName ,  bookTable.Title));

}

}

}

changeCompany çok kullanılan hayat kurtaran bir özellik ancak genelde yanlış kullanıldığını görüyorum. Örnek 3 faklı şirkette 1000 satır veri aktarımına benzer bir kodunuz var diyelim. Arkadaş bu veriyi gruplamadan her bir satıra changeCompany yazıyor ve bunun hızlı çalışmasını bekliyor. Olmaz changeCompany zaman alan bir koddur ve mümkün olduğunca az kullanılmalıdır. changeCompany bloğunda yazılan her kod sanki değiştirdiğiniz şirkette çalışır sadece select değil Insert Update Delete işlemlerinde yapabilirsiniz.

Selamlar.

www.fatihdemirci.net

TAGs: X++, changeCompany, Azure, Azure DevOps, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365