Dynamics 365 Finance and Operations Yeni Bir Finansal Boyut DefaultDimensin Alanı Nasıl Eklenir?

Bu yazıda Dynamics 365 Finance and Operations içinde yeni bir finansal boyut alanı tablo ve forma nasıl eklenir anlatmaya çalışacağım. Uygulama içinde iki tip boyut var birincisi stoksal boyutlar, ikincisi finansal boyutlar. Bu yazıda konumuz finansal boyutlar olacak. Öncelikle birkaç kavramı netleştirelim. DefaultDimension içinde sadece boyut bilgileri olan bir kombinasyondur. FinancialDimension ise içinde muhasebe hesabıyla birlikte boyutların olduğu bir kombinasyondur. Bu iki tipin birbirine çevrimi çok sık kullandığımız bir yapıdır. Bir de DefaultAccount var oda sadece muhasebe hesabı için kullanılan hesap kaydıdır. Bu yazıda bir tabloya DefaultDimens alnı açıp formada bütün boyutları gösterecek yapının nasıl kurulacağını anlatacağım.

Öncelikle int64 tipinde yeni bir alan oluşturalım.

Resim-1

Read more

D365 FinOps PowerSummit Introduction to Development

Merhaba,

Geçen hafta benim için faklı bir deneyim olan FinOps BootCampte İngilizce geliştirmeye giriş sunumu yaptım. Şöyleki bir kaç hafta önce Raz bende bu etkinlikte bir sunum yapmamı istedi. Konuyu bana bıraktı ama herkesin ileri seviye  konular anlatmak istediğini ama katılımcılardan bir çoğunun yeni mezun olduğunu ve başlangıç seviyesi bir konu anlatmamın daha iyi olacağını söyledi. Bende geliştirmeye yeni başlayanlar için bir çalışma yaptım. Seçtiğim  konu benim yıllardır eğitimini verdiğim ve çok  iyi bildiğim bir konu ama 1 saate İngilizce anlatmak beni biraz strese soktu.

MB-500 eğitimini baz alıp bir hazırlık yaptım ama sonradan sunum ağırlıklı değil de demo olsun istedim. D365 de canlı demo yapmak çok riskli bir çok şey ters gidebiliyor ve derlemeler uzun sürebiliyor. Bu yüzden tüm demoyu önceden başka bir ortamda hazır ettim eğer bir aksilik olurda yetişemezsem oradan devam ederim diye. Bir iki kere zaman hesabı yaptım ve tam 1 saati doldurduğumu gördüm. sunuma başladım fena da gitmiyordu kendimce tam zamanında bitirdim ama benden sonraki sunumu yapacak kişi gelmemiş bende ilk etapta anlamadım. Gelene kadar soru cevap yapalım dedik. Ben bir kaç dakikaya gelir diye düşünürken hiç gelmedi dolayısıyla 1 saat düşündüğüm sunum 2 saat oldu. son saate demoda gösteremedim bazı konuları gösterdim ve gelen soruları cevapladım. İkinci saatin bitiminde bile hala soru vardı. Organizasyon ekibi çok teşekkür etti. Böylece tüm dünyadan Dynamicscilerin takip ettiği bir etkinlikte 2 saat İngilizce sunum yapmış oldum.

Selamlar.

Dynamics 365 Finance and Operations Yeni Bir İş Akışı Nasıl Oluşturulur?

Bu yazıda Dynamics 365 Finance and Operations yeni bir iş akışı (Workflow) nasıl oluşturulur anlatmaya çalışacağım. Öncelikle yeni bir tablo ve formumuz olmalı ben örnek olsun diye FDActivityType tablosunu kullanacağım.  Adımlar halinde anlatacağım.

Resim-1

Read more

X++ :26- Extension ile Standart Bir Formun Event Metotlarına kod eklemek.

Bu yazıda Visual Studio üzerinden Extension mantığıyla standart bir formun DataSource eventlerine kod nasıl eklenir anlatmaya çalışacağım.

Önceki yazımda smmActivities’e bir alan eklemiştik. Şimdi yine smmActivities dataSource’nun bazı olaylarına kod ekleyelim. Öncelikle validateDelete koduna eklem yapmak istiyorum. Standart kod böyleymiş.

Resim-1

Öncelikle yeni bir sınıf oluşturuyorum daha önce oluşturduğum Extension formunu açıyorum. DataSource’a gelip eventlerden ilgili eventi bulup Copy event handler method diyorum.

Resim-2

Sonra bunları oluşturduğum sınıfa yapıştırıyorum ve aşağıdaki gibi içlerini dolduruyorum.

class FDSmmActivitiesFormEventHandler

{

/// <summary>

///

/// </summary>

/// <param name=”sender”></param>

/// <param name=”e”></param>

[FormDataSourceEventHandler(formDataSourceStr(smmActivities, smmActivities), FormDataSourceEventType::ValidatingDelete)]

public static void smmActivities_OnValidatingDelete(FormDataSource sender, FormDataSourceEventArgs e)

{

smmActivities smmActivities = sender.cursor(); // Bu sayede aktif kaydı aldım.

if(smmActivities.FDActivityId !=”")

{

checkFailed(“FDActivityTable Record Exist.”);

}

}

/// <summary>

///

/// </summary>

/// <param name=”sender”></param>

/// <param name=”e”></param>

[FormDataSourceEventHandler(formDataSourceStr(smmActivities, smmActivities), FormDataSourceEventType::Activated)]

public static void smmActivities_OnActivated(FormDataSource sender, FormDataSourceEventArgs e)

{

smmActivities smmActivities = sender.cursor(); // Bu sayede aktif kaydı aldım

FormRun formRun = sender.formRun(); // Form run a ulaştım

FormControl formControl =  formRun.design(0).controlName(“smmActivities_FDActivityId”); // Herhangi bir form nesnesine bu şekilde ulaşabilirim.

if(smmActivities.Status == smmActivityStatus::Read) // Örnek olsun diye yaptım çok mantıklı bir kontrol değil.

{

formControl.enabled(false);

}

else

{

formControl.enabled(true);

}

}

}

Bu yazıda Extension mantığıyla standart bir formun eventlerine nasıl kod eklenir anlatmaya çalıştım. Eski mantığa göre biraz daha zor ve uzun süren bir iş ama getirileri çok büyük. Extension bundan sonra uzun bir süre hayatımızda olacak mantığını kavrayıp bütün işleri bu mantıkla çözmeye çalışmak gerekiyor.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Extension, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

X++ :25- Extension ile Standart Bir Tablo Metoduna Ekleme Yapmak.

Bu yazıda Visual Studio üzerinden Extension mantığıyla standart bir tablo metoduna kod nasıl eklenir anlatmaya çalışacağım.

Önceki yazımda smmActivities’e bir metot eklemiştim. Şimdi yine smmActivities’te bir kayıt oluşturulduğunda bu metodu tetiklemek için ne yapmalıyız anlatacağım. Öncelikle bir sınıf oluşturalım. Sonrasında resimde olduğu gibi smmActivities için daha önce oluşturduğumuz Extension üzerinden Copy event handler method deyip post olanı kopyalıyoruz.

Resim-1

class FDSmmActivitiesEventHandler

{

/// <summary>

///

/// </summary>

/// <param name=”args”></param>

[PostHandlerFor(tableStr(smmActivities), tableMethodStr(smmActivities, insert))] // Bu kısım bizim için gerekli tanımları yapıyor.

public static void smmActivities_Post_insert(XppPrePostArgs args)

{

smmActivities smmActivities;

;

smmActivities = args.getThis(); // GetThis() ile üzerinde bulunduğumuz kaydı alıyoruz.

smmActivities.createFDActivityTable(smmActivities); // Bir önceki yazıda oluşturduğumuz metot.

}

/// <summary>

///

/// </summary>

/// <param name=”args”></param>

[PreHandlerFor(tableStr(smmActivities), tableMethodStr(smmActivities, validateField))] // Aynı şekilde validateField metodunun bu sefer preHandler oluşturuyoruz.

public static void smmActivities_Pre_validateField(XppPrePostArgs args)

{

}

}

Bu yazıda standart bir tablo metoduna pre post eventHandler nasıl eklenir anlatmaya çalıştım. Burada da isimlendirmeye dikkat etmek lazım.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Extension, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

X++ :24- Extension ile Standart Bir Tabloya Metot eklemek.

Bu yazıda Visual Studio üzerinden Extension mantığıyla standart bir tabloya yeni bir metot nasıl eklenir anlatmaya çalışacağım.

Önceki yazımda smmActivities’e bir alan eklemiştik. Şimdi yine smmActivities’e bir FDActivityTable kaydı oluşturan bir metot ekleyelim. Öncelikle bir sınıf oluşturalım. Sonrasında aşağıdaki kodu yazalım.

[ExtensionOf(Tablestr(smmActivities))] // Burası önemli bu sınıfın smmActivities tablosunun bir Extension’ı olduğunu söylüyor.

final class FDSmmActivities_Extension // Final olması gerekiyor ve _Extension ile bitirmek lazım.

{

public void createFDActivityTable(smmActivities _smmActivities) // Kayıt oluşturan metodumuz.

{

FDActivityTable       activityTable;

smmActivities           smmActivitiesUp;

NumberSeq               numberSeq;

FDActivityId              activityId;

;

ttsbegin;

numberSeq   = numberSeq::newGetNum(NumberseqmoduleFDActivity::numRefActivityId());

activityId       = numberSeq.num();

activityTable.clear();

activityTable.ActivityId         = activityId;

activityTable.ActivityDate   = DateTimeUtil::date( _smmActivities.ActualEndDateTime);

activityTable.Employee        = _smmActivities.ResponsibleWorker;

activityTable.insert();

smmActivitiesUp                                    = smmActivities::findWithRecId(_smmActivities.RecId , true);

smmActivitiesUp.FDActivityId           = activityTable.ActivityId;

smmActivitiesUp.update();

ttscommit;

}

}

Artık bu metodu smmActivities’te kullanabiliriz. Bir job yazıp deneyebiliriz.

class FDJob3

{

public static void main(Args _args)

{

smmActivities smmActivities;

;

Select firstonly smmActivities;

smmActivities.createFDActivityTable(smmActivities);

}

}

Bu yazıda Extension mantığıyla standart bir tabloya nasıl metot ekleyebileceğinizi anlattım. Burada dikkat etmeniz gereken bir konu bu sınıfların isimlendirmesi ve tekilleştirme.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Extension, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

X++ :23- Extension ile Standart Bir Forma Alan eklemek.

Bu yazıda Visual Studio üzerinden Extension mantığıyla standart bir tabloya eklenen alanların nasıl forma eklenebileceğini anlatmaya çalışacağım.

Bir önceki yazımda smmActivities’e bir alan eklemiştik. Şimdi AOT üzerinden Formları açıyoruz. Sonrasında smmActivities formuna sağ tıklayıp Create extension’a tıklıyoruz.

Resim-1

Projemde Extension oluştu. Adını değiştirebilirim ama benim için şu anada adı uygun. Çift tıklayıp açıyorum.

Resim-2

Açılan Extension formu içinden veri kaynağına baktığımda bir önceki yazımda eklediğim alan otomatik geldi.  Sürükleyip tasarımda uygun bir yere bırakıyorum.

Resim-3

Artık hazırız. Projeyi Build edip çalıştırabiliriz.

Resim-4

Bu yazıda Extension ile standart bir tabloya eklenen yeni bir alanın formda nasıl gösterilebileceğini anlattım. Sonraki yazılarımda Extension ile kod yazmak ile ilgili örnekler yapacağım.

Selamlar.

www.fatihdemirci.net

TAGs: Extension, X++, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

X++ :22- Extension ile Standart Bir Tabloya Alan eklemek.

Bu yazıda Visual Studio üzerinden Extension mantığıyla standart tablolara alan nasıl eklenir anlatmaya çalışacağım.

Öncelikle bu yazılarda Youtube videolarımda oluşturduğum Activity Managment projesini kullanacağım. Bu projede kullanmak üzere aktivitelerimi smmActivities tablosuna bağlamak için bir alan açıp bunu kullanacağız. smmActivities CaseManagment paketinden eğer yoksa öncelikle kendi paketinize eklemiz gerekiyor. Sonrasında sağ tıkladığınızda Create extension’a tıklıyoruz.

Resim-1

Projemde Extension oluştu. Adını değiştirebilirim ama benim için şu anada adı uygun. Çift tıklayıp açıyorum.

Resim-2

Açılan Extension içinden Fields2a sağ tıklayıp yeni bir alan oluşturuyorum.

Resim-3

Alanın özelliklerini belirleyip kaydediyorum.

Resim-4

Projemi eşitliyorum. Eğer hata yoksa tabloya alanı eklemiş oldu.

Resim-5

Bu yazıda Extension ile standart bir tabloya yeni bir alan nasıl eklenir anlatmaya çalıştım. Burada Extension isimlendirmesine dikkat etmek lazım. Birden çok geliştirme yapan varsa özellikle isimlendirme çok önemli oluyor. Bu şekilde alanı ekledikten sonra kodda tablonun standart bir alanı gibi kullanabilirsiniz. Sonraki yazılarımda Extension ile forma alanı eklemek ve kod düzenlemek ile ilgili örnekler yapacağım.

Selamlar.

www.fatihdemirci.net

TAGs: Extension, X++, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

Ax2012’den Dynamics 365 Kod Yükseltmesi Nasıl Yapılır? –3

Bu yazıda Ax2012’den Dynamics 365 Finance and Operations’a nasıl kod güncellemesi yapıyoruz anlatmaya devam edeceğim. İkinci yazıda ModelStore’u yüklemiş ve raporların ve Azure DevOps projesinin oluşturulmasını sağlamıştık. Bu yazıda oluşan kodlara inceleyeceğiz ve VisualStudio’da neler yapmak gerekiyor anlatmaya çalışacağım.

Oluşturduğumuz Azure DevOps projesinde 2 klasör oluşuyor. Aslında ikisinin altında yanı kodlar var. Sırayla inceleyelim.

Resim-1

Trunk altında AplicationSuite’yi açınca sizin Ax2012 olan modellerinizin her biri için klasörler göreceksiniz. Her bir klasör altında Delte klasörü var ve bu klasördeki nesnelerde çakışmalar olduğu için elle düzeltilmesi gerekiyor. Asıl güncelleme eforunun harcanacağı yerler buralar olacak. Bunu dışında kalan nesnelerde sorun yok demektir. Bunları kendi oluşturduğumuz pakete dosya sisteminden kopyalamalısınız.

Resim-2

Visual Studio Source Control Explorer açıp Azure devops projenize bağlanın. Burada sıfır bir development makinesi deploy etmek daha faydalı olacaktır ama şart değil. Ben elimde olan bir makineden bağlandım. Tüm kodları buradan da görebilirsiniz.

Resim-3

Örneğin burada Delta altın çakışma olan nesnelerden bazıları var. Tek tek elden geçmesi lazım. Eğer bir metot eklendiyse bunların Extension mantığına çekilip Delta altından bu nesnenin silinmesi gerekiyor. Eğer kod arasına girilmişse durum biraz daha karışık inceleyip neler yapılması gerektiğine karar verilmesi gerekecek. Bunların ayrıntısına ileriki yazılarımda değineceğim.

Resim-4

Kodları indirmek için bir klasör oluşturup bağlantısını kuruyorum. Bu sayede kendi makineme kodları indirmiş olacağım ve Xml üzerinden kopyalama ve upgrade işlemlerine başlayabilirim.

Resim-5

Bu şamdan sonra Paket yapıma karar verip ona göre paketlerimi oluşturmalıyım. Ax2012 de bulunan model yapımı korumak istersem her model için bir paket oluşturmak bir seçenek olabilir. Burada aklınızda bulunsun çok fazla pakete bölerseniz ve birbirlerine bağımlılıkları varsa bunların sürekli referans hataları alacaksınız. Temel mantık şu olmalı ben bu paketi tek başına alıp bir ortama veya başka bir yere yüklemem gerekir değiniz de bölmek doğru bir yaklaşım olur. Paketleri karar verip modelinizi oluşturduktan sonra Main altındaki upgrade edilmiş bütün Xml leri kendi paketinize kopyalayın. Deltaları kopyalamayın onları tek tek nasıl çözeceğinize ayrıca değineceğim.

Böyle çakışmaları çözmek için hazır hale gelmiş olduk. Eğer birden çok yazılımcı çalışacaksa iş bölümü yapmak lazım. Örneğin Nesneler paylaşılabilir. Enum, EDT, Class ve Table gibi veya modelleri ayırdıysanız model model paylaşabilirsiniz. Burada aynı nesne için iki yazılımcının efor harcamaması için koordine olmak şart.

Bu yazıda çakışmaları çözmeden önceki son aşamaya gelene kadar neler yapılmalı anlatmaya çalıştım. Tabi burada anlattıklarım benim tecrübelerim farklı ekipler farklı yaklaşımları benimseyebilir. İleriki yazarlarımda nene tiplerine göre çakışmalar nasıl çözülür anlatmaya çalışacağım.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Ax2012 Code Upgrade, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

Ax2012’den Dynamics 365 Kod Yükseltmesi Nasıl Yapılır? – 2

Önceki yazımda Ax2012’yi Dynamics 365’e yükseltmek için gerekli ilk adımları anlatmıştım. Bu yazıda dışarı aktardığımız ModelStore dosyasını LCS yükleyip işlemeyi anlatacağım.

Oluşturduğumuz projeyi açıp code upgrade kutucuğuna tıklıyoruz.

Resim-1

Açılan sayfadan Add ile işlemi başlatıyoruz.

Resim-2

Upgrade aşamalarının olduğu bir sayfa açılacak. İşleme tekil bir isim vermek gerekiyor. Hangi versiyondan hangi versiyona taşıma yapılacaksa onu seçiyoruz. Eğer sadece raporu görmek istiyorsanız Estimation Only’i işaretleyebilirsiniz. Bu durumda sadece raporları oluşturacak Azure Devops ta bir işlem yapmayacak.

Resim-3

Add file ile Model Store dosyamızı yüklüyoruz. Burada dosyanın Zip olması gerekiyor Rar kabul etmiyor. Sonrasında Analyze code deyip işlemi başlatıyoruz.

Resim-4

İşlemler tamamlandıktan sonra böyle listelenecek. Name kısmına tıklayıp içine girebilirsiniz.

Resim-5

Tamamlanan işlem sonunda böyle bir sayfa çıkacak. Burada bazı raporlar ve özet bilgiler var.

Resim-6

Burada sizin eforunuzu hesaplamak için kullanacağınız rapor TaskList olacak. Buradaki maddelerin tümüne dokunmanız gerekecek.

Resim-7

Özet olarak yapılan ve kalan işleri bu rapordan görebilirsiniz.

Resim-8

Bu yazıda güncelleme işlemin kod yükseltme adımını anlatmaya çalıştım. Bu aşamadan önce kodları Ax2012 gözden geçirmek ve temiz bir halde ModelStore oluşturup yüklemek bu aşamadan sonra harcanması gereken eforları azaltacaktır. Kod yükseltmeyi gözünüzde büyütmeyin birçok kolaylık var. En azından bu raporları oluşturacak adımları yapıp nasıl bir efor gerektiğini öğrenebilirsiniz. Sonraki yazımda Azure Devops‘ta oluşan kodları ve orada yapılması gereken işleri anlatacağım.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Ax2012 Code Upgrade, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

Page 5 of 40« First...34567102030...Last »