1. Ana Sayfa
  2. Dynamics 365
  3. X++ :12- Insert Metodu Ne İşe Yarar?

X++ :12- Insert Metodu Ne İşe Yarar?

Dynamics-365

Bu yazıda Dynamics 365 Finance and Operations tablo metotlarından () metodunu anlatacağım. Önceki yazılarımda tabloların temel yapılarından bahsetmiştim. Şimdi ayrıntılı olarak alt seviye nesne ve metotları inceleyeceğim. Tablolar XRecord sınıfından türetilen aslında SQL tabloların sınıf karşılıklarıdır. Sınıflardan temel bir iki farkı vardır. Sınıf olmasına rağmen New ile nesne oluşturmak gerekmez. Alanlar metot gibi davranın ama paranteze ihtiyaç duymaz. Insert() metodu tabloda bir kayıt oluşturan metottur.

FDBookTable tablosunda Metotlara sağ tıklayıp Insert() metodunu Override ettim.


Resim-1

Insert işlemini yani kaydın DB’ye yazılmasını aslında Super() yapar. Super() ezilen metodu çağıran koddur. Dolayısıyla Super()‘den önce kayıt henüz DB ye yazılmamıştır. Kaydetmeden önce bir işlem yapmak istiyorsanız Super()‘den önce sonra yapmak istiyorsanız Super()‘den sonra yazmalısınız. Ben Basit bir satır ekledim. Çok doğru bir yer olmamakla birlikte çalışır. Insert() metodu validasyon için kullanılmamalıdır.


Resim-2

Tablo tarayıcısını açıp yeni bir kayıt oluşturduğumda otomatik BookCount 1 olarak oluşuyor.


Resim-3

Şimdi standart bir tablonun Insert() metoduna bakalım. Kodları görebilmek için View code demeniz gerekiyor.


Resim-4

void insert(DirPartyType _partyType = DirPartyType::None, Name _name = ”,boolean _updateCRM=true)

{

DirPartyType type;

ttsbegin;

// Check if not associated to Party

if (!this.Party)

{

// Create a Party entry for customer

this.Party = DirPartyTable::createNew(_partyType, _name).RecId;

}

else

{

if (!this.VATNum)

{

this.VATNum = TaxRegistration::getPrimaryRegistrationNumber(DirPartyTable::findRec(this.Party), TaxRegistrationTypesList::TAXID);

}

this.initFromsmmLeadTable();

}

smmBusRelTable smmBusRelTable = smmBusRelTable::findByParty(this.Party, true);

if (smmBusRelTable.RecId)

{

smmBusRelTable.BusRelTypeId = smmBusRelTypeGroup::getCustomerType();

smmBusRelTable.update(false);

}

super();

// Insert new customer in full text search table

MCRFullTextSearch::insert(this);

this.SysExtensionSerializerMap::postInsert();

if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoMX]))

{

this.copyInfoToParty();

}

smmTransLog::initTrans(this, smmLogAction::insert);

DirPartyRelationship::createLegalEntityRelationship(this.Party, this.DataAreaId, DirSystemRelationshipType::Customer);

// Add links to contact person

ContactPerson::addCustVendLink(this.TableId, this.Party, this.AccountNum);

// Create default location if using existing party

LogisticsLocationDefaultAppUtil::createDefaultForExistingParty(this);

DimensionDefaultFacade::copyDimensionValueToDefaultDimensionField(this, fieldNum(CustTable, AccountNum), this, fieldNum(CustTable, DefaultDimension));

ttscommit;

}

Bu kodda iki yere dikkat çekeceğim. Birincisi if (!this.Party) ile başlayan kod burada eğer parti kodu yoksa oluşturmak üzerine bir kod var. Superden önce çünkü kayıt oluşmadan önce oluşmalı ve CustTable‘daki ilişkili alana yazılmalı. İkincisi ContactPerson::addCustVendLink(this.TableId, this.Party, this.AccountNum); ilgili kişi oluşturma. Burada da müşteri kaydı oluşmalı ki müşteri kodu kullanılarak ilişkili kişi kaydı oluşturulsun.

Selamlar.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar:
www.mshowto.org

www.fatihdemirci.net

TAGs: ,Insert, , , , , ,

Yorum Yap

Yazar Hakkında

2005 yılında Kocaeli Üniversitesi Bilgisayar Mühendisliğinden mezun oldum. Okulda ve ilk iş tecrübelerimde farklı yazılım dilleri kullandım. 2007 yılında Akşam gazetesinde işe başladım ve Microsoft Dynamics 365 (eski adıyla Axapta) ile orda tanıştım. Hiç duymadığım bir dil olan X++ kullanılıyordu. Kısa sürede adapta oldum ve kariyerimi bu alanda şekillendirdim. Bir kaç iş değişikliğinde sonra kendi firmamı kurdum. Şu anda DMR de yönetici ortak ve Çözüm mimarı olarak çalışmaktayım. 2010 yılında MCT oldum. Birçok faklı ortamda eğitimler verdim. Bloğum ve Youtube kanalımda tecrübelerimi paylaşmaktayım.

Yorum Yap