Author Archive

Yeni bir Dynamics 365 Finance and Operations uygulama projesini Microsoft Life Cycle Services (LCS) üzerinden nasıl ayarlanır.

Bu yazıda size Dynamics 365 Finance, Dynamics 365 Supply Chain Management veya Dynamics 365 Commerce için yeni bir lisans satışından sonra uyarlama projeyi başlatmak için gerekli olan adımları anlatmaya çalışacağım.

Öncelikle firmanın Tenant Administrator hesabıyla Azure Active Directory (Azure AD) de aşağıdaki adımları takip ederek aktivasyon işlemi yapılmalı:

  1. InPrivate/Incognito olarak yeni bir oturum oluşturun ve Microsoft 365 Admin Center’ı açın.
  2. Tenant Administrator hesabıyla giriş yapın.
  3. Billing > Products & services gidin ve orada aldığınız ürünün olduğundan emin olun. Eğer yoksa iş ortağınızla iletişime geçin.
  4. Eğer ürün aboneliği (Subscription)  aktifse uygulama projesi (Implementation Project) oluşturmayı tetiklemek için LCS ye giriş yapın.
  5. Yeni bir sayfada LCS’e Tenant Administrator hesabıyla giriş yapın.
  6. Ekrana çıkan kutucukları onaylayın böylece proje oluşturulmuş olacak.
  7. Tenant Administrator otomatik olarak Project Owner rolüne atanır. Bundan sonra projeyi LCS de görebilirsiniz.

Yukarıdaki adımları tamamladıktan sonra eğer bir sorun yoksa Resim-1 de görünen uyarlama(Implementation) projesi oluşacak.

Resim-1

Read more

Microsoft iş çözümlerini tanıyalım. ERP, CRM, BI, AI, Bulut ve ötesi.

Microsoft iş çözümlerini tanıyalım. ERP, CRM, BI, AI, Bulut ve ötesi.

Bu yazıda size Microsoft iş çözümlerini tanıtacağım. Microsoft iş çözümlerine çok fazla yatırım yapıyor. Bunun sonucu olarak sürekli yeni bir ürün çıkıyor veya olan bir üründe isim ve içerik değişikliği olabiliyor. Bu bazen bizim için bile kafa karıştırıcı oluyor. Çok ayrıntıya girmeden aşağıdaki resimde bulunan her kutucuğu size izah etmeye çalışacağım.


Resim-1

Read more

Türkiye Dynamics 365 User Group Meetup 3

Merhaba,

Türkiye Dynamics 365 User Group etkinliklerine devam ediyoruz. Seri haline getirmeyi planladığımız Profesyonellerle Söyleşiler başlıklı 2. etkinliği bu cumartesi yapacağız. Etkinliğimizde şu anda yurt dışında 3 faklı ülkede çalışan uzman arkadaşlarımız tecrübelerini bizimle paylaşacaklar. Yurt dışı ekosistemi, iş yapış şekilleri, imkanlar ve merak edilen bir çok konunun konuşulacağı etkinliğimizi kaçırmamanızı tavsiye ederiz.

Ayrıca soru cevap kısmı da olacak.

Kommunity:

https://lnkd.in/gnkWWXz

Meetup:

https://lnkd.in/g6f7rsT

Microsoft Teams üzerinden katılmak için linki kullanabilirsiniz.

https://lnkd.in/gkQtiMW

Ekibimiz için Full-Stack developer takım arkadaşı arıyoruz

Asp.net Core, Azure Cloud, React, SQL teknolojilerine hakim aşağıdaki niteliklere sahip takım arkadaşları arıyoruz.
Tercihen üniversitelerin ilgili bölümlerinden mezun, benzer pozisyonda en az 2 yıllık iş deneyimine sahip,
Object Oriented programlama (OOP) konusuna ve çok katmanlı mimarilere hakim, Solid prensiplerini benimsemiş,
Veri yapıları, algoritmalar ve tasarım kalıpları (Design Patterns) konusunda deneyimli,
Web tabanlı uygulama geliştirme tecrübesi bulunan,
C# ve ASP.NET Core MVC konusunda tecrübeli,
Rest Full, Entity Framework gibi teknolojilere hakim,
React, Mobx, Es6, Javascript , konularında bilgi sahibi,
Functional programming ve reactive programming konularında bilgi sahibi,
Material Design standartları konusunda deneyim sahibi,
İyi derece MS SQL bilgisi olan olan, NOSQL (Elastic Search, Azure Search, Raven Db vb..) konusunda bilgi sahibi,
Tercihen İngilizce bilen,
Takım çalışması için uyumlu, bireysel başarısı kadar takımının başarısını da önemseyen,
Askerlik görevini tamamlamış veya en az 2 yıl tecilli,
Full Stack Developer arıyoruz.

İlgilenenler benimle iletişime geçebilirler.

X++ Set Based Operations : Update_recordset

Merhaba,

X++ Set Based Operations : Update_recordset

İyi seyirler.

X++ Set Based Operations : RecordSortedList & RecordInsertList

Merhaba,

X++ Set Based Operations : RecordSortedList & RecordInsertList

İyi seyirler.

Dynamics AX 2012 Caching Video 1

Merhaba,

Sonunda YouTube kanalımı açtım videolarımı çekmeye başladım.
Yazdığın ön bellek makalelerini açıklamaya çalıştığım video aşağıda. Umarım daha güzel videolarla devam edebilirim.

İyi seyirler.

History Of AX

Merhaba

Çok beğendiğim bende nostanji yaşatan iki makaleyi sizinle paylaşmak istiyorum.

History of AX

Technical History of Dynamics AX – From Axapta 3.0 to AX2012

Axapta’yı ilk olarak 2006 yılında Turkmedya firmasında tanıdım. Axapta 3.0 kullanılıyordu. Ben başladığımda proje canlıya geçmişti. Destek ve yeni geliştirmeler ile giriş yaptığım AX dünyasında 12 yılı devirdim. Hayatım üzerinden bu kadar etkisi olacağını tahmin edemezdim.

Selamlar.

XML’de metin değiştirmek

Merhaba

Ax ta E-Fatura süreçleriyle uğraşmayan yoktur. Biz SimpleUBL adında bir eklentiyle hem XML hemde UBL oluşturuyoruz. Şöyle bir ihtiyaç  oldu bazı durumlarda bir alanın verisinin değiştirilmesi gerekiyor. Örneğin matbu irsaliye numarası. Bunun  için gerekli tablolarda veriyi güncelleyip sonra E-Fatura UBL ini oluşturan kodu tekrar çağırınca direk güncelliyor. Ancak bu işlem biraz yavaş çok fazla kontrol ve  işlem yapıyor. Bense çok basit sadece bir alanı değiştirmek istiyorum ve çok hızlı  olması gerekiyor.  Bunu  için str fonksiyonlarından faydalanarak bir metot yazdım. Umarım  işinize yarar.

Örnek UBL in bir parçası  şöyle:


<?xml version="1.0" encoding="utf-8"?>
  <cbc:UBLVersionID>2.1</cbc:UBLVersionID>
  <cbc:CustomizationID>TR1.2</cbc:CustomizationID>
  <cbc:ProfileID>TEMELFATURA</cbc:ProfileID>
  <cbc:ID>YTD20182222225</cbc:ID>
  <cbc:CopyIndicator>false</cbc:CopyIndicator>
  <cbc:UUID>E01C17F9-B13B-4Df5E-BB5A-92F52E17ff3AB0</cbc:UUID>
  <cbc:IssueDate>2018-09-01</cbc:IssueDate>
  <cbc:IssueTime>06:43:11.0000000+03:00</cbc:IssueTime>
  <cbc:InvoiceTypeCode>ISTISNA</cbc:InvoiceTypeCode>
  <cbc:Note>Yazıyla :  TRY TRY</cbc:Note>
  <cbc:Note>TOPLAMADET: 1 / 22,00 </cbc:Note>
  <cbc:LineCountNumeric>1</cbc:LineCountNumeric>
  <cac:OrderReference>
    <cbc:ID>YKS022222222</cbc:ID>
    <cbc:IssueDate>2018-08-08</cbc:IssueDate>
    <cbc:IssueTime>07:25:31.0000000+03:00</cbc:IssueTime>
  </cac:OrderReference>
  <cac:DespatchDocumentReference>
  <cbc:ID>SVK000343433</cbc:ID>
    <cbc:IssueDate>2018-09-01</cbc:IssueDate>
  </cac:DespatchDocumentReference>
  <cac:Signature>
    <cbc:ID schemeID="VKN_TCKN">11111111</cbc:ID>
    <cac:SignatoryParty>

Ben ‘cbc:id SVK000343433 cbc:id’ buradaki SVK000343433 bu numarayı değiştirmek istiyorum.

Bir kaç zorluk var. Birincisi bu numaranın uzunluğu sabit değil.

İkincisi Her bir satır yeni satir karakteriyle ayrılmış durumda.


static void FD_UpdateXml(Args _args)
{
    EInvoiceTable  eInvoiceTable;
    str     str1;
    str     str2;
    str     str3;
    int     i ,j;
    num     packingSlipId = "FD000002";
    ;

    ttsBegin;

    select forUpdate eInvoiceTable
        where eInvoiceTable.RecId  == 5637292931;

    str3 = strFmt("<cbc:ID>%1</cbc:ID>" , DmrPackipackingSlipIdngSlipId ); // Değiştireceğim metin

    i = strScan( eInvoiceTable.InvoiceXml , // İrsaliye numrasının başladığı yeri tespit ediyorum.
        "<cac:DespatchDocumentReference>" , 0,
        strLen(eInvoiceTable.InvoiceXml));

    str1 = subStr( eInvoiceTable.InvoiceXml ,  i +31  , 50);
    // Karakteri sayip  ilerletiyorum ve 50 karakterlik bir parçayı alıyorum
    //str1  böyle bir string oluyor <cbc:ID>YKS000017102</cbc:ID>   <cbc:IssueDa

    j = strScan( str1 ,"</cbc:ID>" , 0, strLen(str1)); // Numaranın bitişini tespit ediyorum.
    str2 = subStr( eInvoiceTable.InvoiceXml ,  i +31  ,j+8);  // Değiştirmek istediğim metne ulaşıyorun
    // str2 <cbc:ID>YKS000017102</cbc:ID> bu oldu

    eInvoiceTable.InvoiceXml = strReplace(eInvoiceTable.InvoiceXml ,str2 ,str3);
    // str2 yi str3 ile değiştiriyorum.

    eInvoiceTable.update();

    ttsCommit;
}

Selamlar.

Dynamics Ax UserConnection kullanımı

Merhaba

Ax’ta  ilk versiyonlardan beri transaction (ttsBegin ttsCommit) blokları dediğimiz bir yapı vardır. Veri tutarlılığı için çok önemli olan roleback dediğimiz bir hata durumunda o blokta yapılan işlemlerin tümünü geri almayı sağlayan bir yapıdır. Ax ta çok sıklıkla kullanılır. Veri tabanında yapılacak işlemlerde mutlaka kullanmak gerekir. Benim bu yazıda bahsedeceğim konu bu bloklar arasında bir hata oluştuğunda roleback in dışında tutmak istediğim bir işlemi nasıl sağlayabileceğim. Genelde bu log atma bildirim gönderme gibi işlemler olur.  Bir örnekle açıklamaya çalışayım.  Eski sistemden satış verilerinin geldiği ve axta sipariş oluşturulup deftere nakledinlen bir yapı olsun.  Herhangi bir sebepten sipariş  oluşturulamadığında bir log tablosuna kayıt atmak istiyorum.   Örnek kodlar şöyle  olsun:

server static void FD_UserConnection1(Args _args)
{
    DmrSalesOrderHeader DmrSalesOrderHeader = DmrSalesOrderHeader::findByRecid(325355554);
    DmrSalesOrderLine   DmrSalesOrderLine;
    ;
    ttsBegin;
    try
    {
        // Sipariş başlığı oluşturma kodu
        while select DmrSalesOrderLine
            where DmrSalesOrderLine.OrderId == DmrSalesOrderHeader.OrderId
        {
            // Sipariş satırı oluşturma kodu
            throw error("hata");
        }
    }
    catch
    {
        DmrExceptionTable::findOrCreate("Satır oluşturulurken bir hata oluştu.", "DmrCreateSalesOrder",
                DmrSalesOrderHeader.recid,DmrSalesOrderHeader.tableId,DmrSalesOrderHeader.recversion);
    }

    ttsCommit;

}

Bu metod sipariş oluşturmaya çalışırken herhangi bir satırda hata veriyor. Bizde hata verdiğini yakalayıp hangi kayıttan sipariş oluştururken hata verdiğini bir tabloya yazmaya çalışıyoruz. Normalde hata verdiği ve tts blokları olduğu için bizim yazmaya çalıştığımız veriyi de geri alacaktı ancak UserConnection ve UnitOfWork kullanarak bunu engelliyoruz. Metot aşağıda.

static server void findOrCreate(    str1260          _exceptionDetail,
                                    str 100          _className,
                                    RefRecId         _RefRecId,
                                    RefTableId       _RefTableId,
                                    RefRecId         _RefRecVersionId)
{
    DmrExceptionTable   DmrExceptionTable;
    UserConnection      UserConnection;
    UnitOfWork          UnitOfWork;
    ;

    UserConnection = new UserConnection();
    UserConnection.ttsbegin();
    UnitOfWork = new UnitOfWork();

    DmrExceptionTable.ExceptionDetail       = _exceptionDetail;
    DmrExceptionTable.ClassName             = _className;
    DmrExceptionTable.RefRecId              = _RefRecId;
    DmrExceptionTable.RefTableId            = _RefTableId;
    DmrExceptionTable.RefRecVersionId       = _RefRecVersionId;

    UnitOfWork.insertonSaveChanges(DmrExceptionTable);
    UnitOfWork.saveChanges(UserConnection);

    UserConnection.ttscommit();

}

Selamlar.

Page 2 of 25123451020...Last »

Türkiye'nin en doğru, dolu dolu ve hatasız anlatımları ile teknik yazılarına, makalelerine, video'larına, seminerlerine, forum sayfasına ve sektörün önde gelenlerine ulaşabileceğiniz teknik topluluğu, MSHOWTO