Archive for Aralık, 2020

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