Archive for the ‘ AX 2012 ’ Category

Transforming X++ into a General Web-Based Application Development Platform.

Microsoft Dynamics 365 F&SCM/FO/AX/Axapta was originally developed in collaboration between IBM and the Danish company Damgaard Data, with the first version released as IBM Axapta in March 1998. Axapta included its own development system, a combination of MorphX and the X++ programming language. MorphX and X++ had went through a significant evolution after Microsoft acquired the product in 2002. Initially, it was only designed to support enterprise resource planning processes, but today, with the support of Microsoft’s vision and technologies, X++ has become a powerful web development platform, but is still only available within Dynamics 365 F&SCM.

Along with its rapid development capabilities, strong database integration, high performance, object-oriented programming and the ability to efficiently manage business rules, X++ is able to provide fast and excellent solutions to the complexity of the business world. Currently, thousands of additional solutions developed with X++ are successfully used in ERP. However, the dependency of these solutions on Dynamics 365 F&SCM infrastructure limits their potential customer base.

In this article, we will discover the benefits of X++ becoming a mainstream web development platform and the opportunities this transformation can create for business, Microsoft and the X++ ecosystem. With detailed analysis and examples, we will evaluate how this transformation can be realized, the implications and challenges it may bring. Finally, we will try to create a platform for the entire ecosystem to discuss this transformation.

Why should this transformation be essential, and what benefits will it bring when completed?

  • There are currently thousands of modules and functions are written by X++. While these are currently dependent on Dynamics 365 F&SCM, many of them can be productized and sold independently. Developing these products with a different language that lacks of an  infrastructure similar to X++ is both costly and challenging. Leveraging these existing products through AppSource or independent sales could create numerous opportunities for Dynamics 365.
  • X++ allows for the rapid and easy development of many corporate web products, providing opportunities for both the X++ and Dynamics 365 ecosystems. Additionally, product and solution diversity will will support to growing Dynamics 365′s competitive position. Producing products with X++ is faster and more reliable than other languages.
  • This transformation will expand X++ ecosystem. The interaction of different resources working with X++ will allow for solutions to emerge in unexpected areas. Moreover, the growth of this ecosystem will positively impact the growth of Dynamics 365 F&SCM, enhancing its visibility.
  • Making X++ a new and easily accessible language for training resources will increase its appeal, especially for individuals at the beginning of their careers. Additionally, there will be no need for virtual machines or lengthy installations for training, making X++ development easily experiencable for many.
  • Open-source logic can be applied to X++ projects, resulting in the development of more powerful products. Furthermore, aligning with Microsoft‘s vision, this transformation will accelerate the development of X++.
  • The existing X++ ecosystem simplifies the widespread adoption and training of this new structure. Numerous X++ trainers and creators are already exists and more can be quickly added.
  • Along with these new products and ecosystem, cross-sell and co-sell opportunities will be increased.
  • The current structure of the X++ development environment is already suitable for this transformation. I believe that this transformation can be accomplished with a relatively uncomplicated project. With the contribution of volunteers from the X++ ecosystem, an initial version for training purposes could be released. In this version, the ability to create new objects would be sufficient.
  • Given that products developed with X++ can be easily integrated into the Microsoft ecosystem and provides cost advantages, they will be preferable.
  • X++ can be a language and platform for education, particularly for foundational software training in schools, especially in Object-Oriented Programming and Database Management courses. To support this, educational content can be prepared.
  • X++ language and development framework are enable the easy, fast, and reliable development of products. Particularly, the simplicity in database transactions, the structure of EDT and Enum, the security architecture, and the organized nature of Events provide for well-organized code and the creation of straightforward solutions for complex needs. Applications hosting large volumes of data can be developed easily.
  • It’s noteworthy that within the current X++ environment, developers already possess the capability to write code in C# and make use of .NET libraries seamlessly. This inherent flexibility allows for a powerful synergy between the robust features of X++ and the extensive functionalities offered by C# and the broader .NET ecosystem. Leveraging this advantage, the transformation of X++ into a comprehensive web-based development platform gains an extra layer of versatility. Developers, familiar with C# syntax and accustomed to working with .NET libraries, can seamlessly transition their skills to enhance X++ applications. This not only streamlines the development process but also extends the potential areas of application, making X++ an even more adaptable and developer-friendly platform.
  • While Microsoft currently offers Power Pages for citizen developers as a web development tool, there is no such tool for core developers. X++ can quickly fill this gap. This transformation will not only avoid competition with Microsoft‘s other products,it will also increase the usage of Power Platform and Dynamics 365. On the Azure side, it is anticipated to have an even greater impact.
  • Especially in corporate web solutions where data processing is crucial and complex code is required, X++ can be quickly and easily put into operation, making it a highly preferred tool.

How can X++ be transformed into a general web development platform?

  • The most important step towards X++‘s goal of becoming a general software development language starts with having a structure that can be easily developed locally like C#. At this point, the current state is very close to this goal, but the size of the system complicates this transformation. A language that gets rid of this complexity can realize this evolution much more smoothly.
  • X++ should be come with a framework that simplifies development, not just the language itself. When I refer to X++, I mean the development structure that comes with the framework. This structure is the main goal we want to achieve. Thus, while there will be an Application Object Tree (AOT), almost no standard objects will be present initially. When developing a new application, we should be able to include different modules in our project if we wish.

Structures that can be optionally added include:

  1. User management
  2. Standard EDTs and Enums
  3. Security infrastructure
  4. Workflow management
  5. Address management
  6. Company structure
  7. Data Management Framework (DMF)
  8. SQL Server Reporting Services (SSRS)
  9. Office integration
  10. Batch jobs
  11. Web service structure
  12. Power platform integration
  13. Power BI
  14. Model package management
  • Servers for a product developed with X++ can be made ready on Azure. These offers make advantage of Azure consumption.. However, this should not be a requirement and alternative options should be available.
  • It should be compatible with different versions of SQL Server. It can be done in the future to enhance its ability to work with various databases, expanding integration opportunities with different databases.
  • The initial version can start in a simpler form, leaving out structures that could complicate matters initially, such as Map, Extension, Table Extension, etc.
  • The standard Dynamics 365 F&SCM structure can remain the same. This should be released as a new product.

In Conclusion:

Throughout this article, we have examined many advantages of transforming X++ into a general web development platform. X++ is known as a language that stands out with its robust database management, rapid development capabilities, object-oriented programming features, and effective business rule management. However, using these powerful features in the context of general web development will open up access to a wider user base and offer potential solutions in various projects.

The evolution of X++ into a general web development platform not only creates new opportunities but also allows for the modernization of existing projects. Developers can produce more efficient, faster, and powerful projects with this transformation. This feature will gives companies a competitive advantage and allowing the language to create a richer ecosystem with a broader developer base.

However, achieving these goals requires not only technical challenges but also community support, educational resources and developer collaboration. Get through these challenges and leveraging the potential of X++ can provide benefits to developers and to the business world.

In conclusion, the transformation of X++ into a general web development platform allows for a wider perspective on the language. This transformation will carry out the foundations of the language into general web applications, providing more effective and competitive solutions in future projects.The X++ community, the developer team, and Microsoft can contribute together to ensure the success of this journey. I can’t wait to see what the future holds!

Happy Daxing!

Fatih Demirci


X++, Genel Bir Web Geliştirme Teknolojisi Haline Getirilmelidir!

Microsoft Dynamics 365 F&SCM/FO/AX/Axapta, orijinal olarak IBM ve Danimarka firması Damgaard Data işbirliği ile geliştirilmiş ve ilk versiyonu IBM Axapta olarak Mart 1998′de piyasaya sürülmüştü. Axapta kendi geliştirme sistemi içeriyordu MorphX ve X++ programlama dilinin bir kombinasyonu. MorphX ve X++ 2002’de Microsoft’un ürünü satınalmasından sonra önemli bir evrim geçirdi. Başlangıçta, sadece kurumsal kaynak planlama süreçlerini desteklemek amacıyla tasarlanmıştı ancak bugün Microsoft’un vizyonu ve teknolojilerinin desteğiyle birlikte, X++ güçlü bir web geliştirme platformu haline geldi ama hala sadece Dynamics 365 ERP içinde kullanılabiliyor.

X++, hızlı geliştirme yetenekleri, güçlü veri tabanı entegrasyonu, yüksek performans, nesne yönelimli programlama ve iş kurallarını etkili bir şekilde yönetme yetenekleri ile iş dünyasının karmaşıklığına hızlı ve mükemmel çözümler sunabiliyor. Şu an için X++ ile geliştirilmiş binlerce ek çözüm ERP içinde başarıyla kullanılıyor. Ancak bu çözümlerin Dynamics 365 ERP altyapısına bağımlı olması potansiyel müşteri kitlesini sınırlıyor.

Bu makalede X++‘ın genel bir web geliştirme platformu haline gelmesinin faydalarını ve bu dönüşümün iş dünyası, Microsoft ve X++ ekosistemi için yaratabileceği fırsatları keşfedeceğiz. Detaylı analizler ve örneklerle bu dönüşümün nasıl gerçekleştirilebileceğini, beraberinde getireceği sonuçları, karşılaşabileceği zorlukları değerlendireceğiz. Nihayetinde, bu dönüşümün tüm ekosistem tarafından tartışılmasını sağlayacak bir zemin oluşturmaya çalışacağız.

İyi okumalar dilerim!

Neden bu dönüşüm yapılmalı ve yapıldığında ne gibi faydaları olacak?

  • X++ ile yazılmış binlerce modül ve fonksiyon mevcut. Şu anda bunlar Dynamics 365 ERP’ye bağımlı durumda. Birçoğu ürünleştirilip tek başına satılabilir. X++ benzeri altyapısı olmayan farklı bir dil ile bu ürünleri geliştirmek çok maliyetli ve zor. Oysa ki hazır olan bu ürünler, AppSource aracılığıyla veya bağımsız bir şekilde kolayca satılabilir. Bu sayede Dynamics 365 için de birçok fırsatın ortaya çıkması mümkün olacaktır.
  • Birçok kurumsal web ürünü, X++ sayesinde hızlı ve kolay bir şekilde geliştirilebilir. Bu durum, hem X++ hem de Dynamics 365 ekosistemine birçok fırsat sunacaktır. Ayrıca, ürün ve çözüm çeşitliliği, Dynamics 365‘in rekabet içinde daha güçlü bir konuma gelmesine katkı sağlayacaktır. Diğer dillerle kıyaslandığında X++ ile ürün ortaya çıkarmak çok daha hızlı ve güvenilir olacaktır.
  • Bu dönüşüm, X++ ekosistemini genişletecektir. X++ ile çalışan farklı kaynakların etkileşimi, beklenmeyen alanlarda çözümlerin ortaya çıkmasına olanak tanıyacaktır. Ayrıca, bu büyüyen ekosistem sayesinde Dynamics 365 ERP‘nin büyümesine de olumlu etkisi olacak, bilinirliliğini arttıracaktır.
  • Bu dönüşüm, X++ için yeni kaynak eğitimini çok kolay ve çekici hale getirecektir. Kariyerinin başında olan kişiler için tercih edilebilir bir dil olma özelliğini artıracaktır. Ayrıca, eğitim vermek için sanal makineler veya uzun kurulumlara ihtiyaç olmayacak; bu sayede birçok kişi X++ ile geliştirmeyi kolayca deneyimleyebilecektir.
  • Açık kaynak kod mantığı ile projeler geliştirilebilir. Bu sayede çok daha güçlü ürünlerin ortaya çıkması sağlanabilir. Ayrıca, Microsoft vizyonuna uygun olarak X++‘ın gelişimini de hızlandıracaktır.
  • Hazır bir X++ ekosistemi olduğu için, bu yeni yapının yaygınlaştırılması ve eğitimi çok kolayca yapılabilir. Halihazırda birçok X++ eğitmeni ve içerik üreticisi mevcut; bunlara hızlıca yenileri eklenecektir.
  • Bu yeni ürünler ve ekosistem sayesinde cross-sell ve co-sell imkanları artacaktır.
  • X++ geliştirme ortamının son yapısı zaten bu dönüşüm için çok uygun. Çok karmaşık olmayan bir proje ile bu dönüşümün yapılabileceğine inanıyorum. X++ ekosisteminden gönüllülerin de katkısıyla öncelikle eğitim amaçlı bir sürüm çıkarılabilir. Bu sürümde sadece yeni nesne oluşturma imkanı olması yeterli olacaktır.
  • X++ ile üretilen bu ürünlerin Microsoft ekosistemine kolayca entegre edilebilecek olması ve maliyet avantajları sunması, tercih edilebilir olmasını sağlayacaktır.
  • X++ bir eğitim dili ve platformu haline gelebilir. Okullarda temel yazılım eğitimlerinde kullanılabilir, özellikle Nesne Yönelimli Programlama ve Veri Tabanı Yönetimi derslerinde temel dil olarak öğretilebilir. Bunu desteklemek için eğitim içerikleri hazırlanabilir.
  • X++ dili ve geliştirme frameworku çok kolay, hızlı ve güvenilir ürün geliştirmeye olanak sağlıyor. Özellikle veri tabanı ile olan işlemlerdeki kolaylık, EDT ve Enum yapısı, güvenlik yapısı, ve Event’lerin düzenlenmiş olması, kodların çok daha iyi organize olmasına ve karmaşık ihtiyaçlar için bile yalın çözümlerin üretilebilmesini sağlamaktadır. Büyük verileri barındıracak uygulamalar kolayca geliştirilebilecektir.
  • Microsoft hali hazırda Power Pages ile citizen developerlar için bir web geliştirme aracı sunuyor ancak core developerlar için böyle bir araç yok bu eksikliği X++ çok kolay ve hızlıca kapatabilir.
  • Bu dönüşüm Microsoft’un diğer ürünleri ile rekabet etmeyecek hatta Power Platfrom ve Dynamics 365 kullanımını arttıracaktır. Azure tarafında ise çok daha büyük bir etkisi olması öngörülmüştür.
  • X++ ile özellikle veri işlemenin önemli olduğu, karmaşık kod ihtiyacı olan kurumsal web çözümleri çok kolay ve hızlıca devreye alınabilir. Bu da çok tercih edilen bir araç olmasını sağlayacaktır.

X++, genel web geliştirme platformu haline nasıl getirilebilir?

  • X++‘ın genel bir yazılım geliştirme dili olma hedefine yönelik en önemli adım, C# gibi yerelde kolayca geliştirilebilen bir yapıya sahip olması ile başlar. Bu noktada, mevcut durum bu hedefe oldukça yaklaşmış durumdadır ancak sistem büyüklüğü bu dönüşümü karmaşıklaştırmaktadır. Bu karmaşıklıktan sıyrılan bir dil, bu evrimi çok daha sorunsuz bir şekilde gerçekleştirebilir.
  • X++ tek başına değil geliştirmeyi kolaylaştıran framework ile birlikte gelmelidir. Bu yüzden ben X++ derken sadece dili değil framework ile birlikte olan geliştirme yapısını kastediyorum. Bu yapı zaten asıl ulaşmak istediğimiz hedef. Dolayısıyla AOT olacak ama nerdeyse standart hiç bir nesne başlangıçta olmayacak. Standart hiç bir nesnenin kullanılmadığı yeni bir geliştirme yaptığımızda neler yapıyorsak aynısını yapabileceğimiz bir yapı hayal ediyorum. Yeni bir uygulamaya başlarken istersek faklı modulleri projemize dahil edebilmeliyiz.

İsteğe bağlı olarak eklenebilecek yapılar şunlar olabilir:

  1. Standart EDT ve Enumlar.
  2. Güvenlik altyapısı
  3. Kullanıcı yönetimi
  4. İş akışı yönetimi
  5. Adres yönetimi
  6. Şirket yapısı
  7. DMF
  8. SSRS (SQL Server Reporting Services)
  9. Ofis entegrasyonu
  10. Toplu işler
  11. Web servis yapısı
  12. Power platform entegrasyonu
  13. Power BI
  14. Model paket yönetimi
  • X++ ile geliştirilen bir ürün için sunucular Azure üzerinde hazır hale getirilebilir. Bu, Azure tüketimini sağlama avantajı sunar. Ancak, bu bir zorunluluk olmamalı ve farklı alternatifler de kullanılabilir olmalıdır.
  • SQL Server‘ın farklı versiyonları ile uyumlu olmalıdır. Gelecekte çeşitli veri tabanlarıyla çalışabilme yeteneğini geliştirmek adına çalışmalar yapılabilir. Bu çeşitli veri tabanlarıyla entegrasyon imkanlarını genişletebilir bu yeni olanakları beraberinde getirebilir.
  • İlk versiyon, daha basit bir formda başlayabilir. Karmaşıklaştırabilecek yapılar başlangıçta dışarıda bırakılabilir. Örneğin Map, Extension, Table Extension vs.


Bu yazı boyunca, X++ dilinin genel bir web geliştirme platformu haline getirilmesinin pek çok avantajını inceledik. X++ güçlü veri tabanı yönetimi, hızlı geliştirme yetenekleri, nesne yönelimli programlama özellikleri ve iş kurallarını etkili bir şekilde yönetme kabiliyetleri ile öne çıkan bir dil olarak bilinir. Ancak bu güçlü özelliklerin genel web geliştirme bağlamında kullanılması, daha geniş bir kullanıcı kitlesine erişme ve çeşitli projelerde etkili çözümler sunma potansiyelini ortaya çıkaracaktır.

X++‘ın genel web geliştirme platformu olarak evrimleşmesi, yeni fırsatlar yaratmanın yanı sıra mevcut projeleri de modernleştirme şansı sunar. Geliştiriciler, bu dönüşümle birlikte daha verimli, hızlı ve güçlü projeler üretebilirler. Bu, şirketlere rekabet avantajı kazandırırken, geniş bir geliştirici kitlesiyle dilin daha zengin bir ekosistem oluşturmasına olanak tanır.

Ancak, bu hedeflere ulaşmak için teknik zorlukların yanı sıra topluluk desteğine, eğitim kaynaklarına ve geliştirici işbirliğine ihtiyaç vardır. X++ genel web geliştirme platformu haline getirilirken, bu zorlukları aşmak ve dilin potansiyelini tam anlamıyla değerlendirmek, sadece geliştiricilere değil aynı zamanda iş dünyasına da büyük avantajlar sağlayabilir.

Sonuç olarak, X++‘ın genel web geliştirme platformu haline getirilmesi, dilin daha geniş bir perspektiften değerlendirilmesini sağlar. Bu dönüşüm, dilin güçlü temellerini genel web uygulamalarına taşırken, gelecekteki projelerde daha etkili ve rekabetçi çözümler sunma potansiyelini artırır. X++ topluluğu, geliştirici ekibi ve Microsoft bu yolculukta birlikte çalışarak dilin başarıya ulaşmasına katkıda bulunabilir. Gelecekteki gelişmeleri sabırsızlıkla bekliyorum.

İyi kodlamalar!

Dynamics AX 2012 Caching Video 1


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


Ç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.


XML’de metin değiştirmek


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:Note>Yazıyla :  TRY TRY</cbc:Note>
  <cbc:Note>TOPLAMADET: 1 / 22,00 </cbc:Note>
    <cbc:ID schemeID="VKN_TCKN">11111111</cbc:ID>

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";


    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,

    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.




Ax’ta yeni bir iş akışı ataması oluştuğunda aynı kullanıcının bu iş akışı için daha önce onayı var mı tespit etmek


İş akışında yeni bir atama oluştuğunda atanan kişinin aynı iş akışında daha önce onayı var mı diye kontrol etmek için aşağıdaki metodu kullanabilirsiniz. Bu metodu WorkflowTrackingTable’ a yazdım ama farklı bir yere de yazılabilir. İş akışı altyapısı biraz karışık standart yapıyı değiştirirken dikkatli olmakta fayda var.

Boolean dmrExistApprove()
    boolean ret = false;

    WorkflowTrackingStatusTable     workflowTrackingStatus;
    WorkflowTrackingStatusTable     workflowTrackingStatusExist;
    WorkflowTrackingTable           workflowTrackingTable;

    workflowTrackingStatusExist = WorkflowTrackingStatusTable::findRecId(this.WorkflowTrackingStatusTable);

    select firstOnly RecId, User from workflowTrackingTable
    exists join workflowTrackingStatus
    where  workflowTrackingTable.WorkflowTrackingStatusTable == workflowTrackingStatus.RecId
        && workflowTrackingTable.TrackingType       == WorkflowTrackingType::Approval
        && workflowTrackingTable.User               == this.User
        && workflowTrackingTable.RecId              != this.RecId
        && workflowTrackingStatus.ContextRecId      == workflowTrackingStatusExist.ContextRecId
        && workflowTrackingStatus.InstanceNumber    == workflowTrackingStatusExist.InstanceNumber
        && workflowTrackingStatus.ContextTableId    == workflowTrackingStatusExist.ContextTableId
        && workflowTrackingStatus.TrackingStatus    != WorkflowTrackingStatus::Cancelled ;

        ret = true;

    return ret;


CIL Derleme sistematiği


Çok sık karşılaştığım bir sorun var. CIL derlenememesi ve buna bağlı olarak SSRS, Küp ve servislerin çalışmaması.  CIL sorunu çözmek için aşağıdaki adımları uygularsanız büyük oranda sorununuz çözülecektir.

  1. Bütün AOS’ları durdurun.
  2. c:\Program Files\Microsoft Dynamics AX\60\Server\InstanceName\bin\XppIL klasörünü silin. (Silmek uzun sürebiliyor klasörün adını değiştirip yedek almak daha mantıklı)
  3. Model veritabanındaki SysXppAssembly tablosunun bütün kayıtlarını silin.
  4. İşlem yapılacak AOS’u açın.
  5. Paralel derleme ile işlem yapılacak AOS’u derleyin. Paralel derleme için bakınız.
  6. C:\Program Files\Microsoft Dynamics AX\60\Server\DynamicsAX_Live\Log\AxCompalieAll.html dosyasından hataları kontrol edin. Tablo, Class ve güvenlik nesnelerinde hata olmamalı. Form ve job lardaki hatalar CIL için önemli değil.
  7. AOS’u yeniden başlatın.
  8. Ful CIL derleyin.
  9. Diğer AOS’larin XppIL klasörlerini silin.
  10. Diğer AOS ları başlatın.

CIL hatası hala devam ediyorsa Google veya tecrübesinde istifade edeceğiniz birine danışın :)


Ax2012 Paralel derleme


Bazı durumlarda Ax komple derleme ihtiyacı oluyor. Bu durumda AOT’yi açıp tümünü derlemeye kalkarsanız çok uzun sürdüğünü görürsünüz. Bunu yerine Command Prompt’tan paralel derleme yapabilirsiniz. Sunucuya bağlı olarak 30 ile 50 dakika arasında derleme işlemi bitecektir.

Paralel derleme için öncelikle Command Prompt’u açıp aşağıdaki klasöre geçmelisiniz. Bu işlemi ASO’un kurulu olduğu sunucuda yapmalısınız. Kuruluma göre klasör değişebilir.

cd “C:\Program Files\Microsoft Dynamics AX\60\Server\DynamicsAX_Live\bin”

Daha sonra aşağıdaki kodu çalıştırmalısınız.

axbuild.exe xppcompileall /s=01 /altbin=”C:\Program Files (x86)\Microsoft Dynamics AX\60\Client\Bin” /workers=12

S=01  AOS numarasıdır sizde farklı olabilir. Server Configuration Utility’den bakabilirsiniz.

Worker=12 kaç işlemin aynı anda çalışacağını gösterir. Kendi sunucunuzdaki  işlemcilere göre göre değiştirebilirsiniz.


AutoRefreshData property on buttons AX2012


Ax gerçekten bir çok ayrıntıya sahip. Özellikle nesnelerin özelliklerinde aktif olarak kullanmadığımız bir çok yenilik mevcut. AutoRefreshData özelliği de bunlardan biri.

Yaptığım bir geliştirmede ListePage formunda durum değiştiren bir sınıf yaptım. Bildiğiniz gibi ListPage formlara kod yazamıyoruz. Bu sınıf ListePage’teki satırın durum alanını değiştiriyor. Bu değişikliği yaptıktan sonra formu yenilemem gerekiyordu. Bunu yapmak için args üzerinde DateSource alıp üzerinden Refresh çalıştırmak gerekiyor ama güzel bir yöntem değil. Bunun daha kolay bir çözümü olmalı derken buton üzerindeki AutoRefreshData özelliğini gördüm. Bu özelliği true olarak ayarlağınızda aslında Table_DS.Research(True) metodunun yaptığı işi yapıyor. Bu sayede kod yazmadan griddeki veriyi güncelleniyor.


How to get table field properties from X++


Sometimes while development process you need to get table field properties. One of my customer i need to setup a structure which i have to get all the LedgerJournalTrans table fields names and properties .

In this example i loop all the fields except some system fields and  show names and some properties.

//Dmr Fatih Demirci
static void Dmr_FD_GetTableField(Args _args)
    SysDictTable    dictTable = new SysDictTable(tableNum(LedgerJournalTrans));
    SysDictField    dictField;
    TreeNode        treeNode;
    FieldId         fieldId   = dictTable.fieldNext(0);

    while (fieldId)
        dictField = dictTable.fieldObject(fieldId);

        //Except Sql, System, visible fields
        if (   dictField.isSql()      && !dictField.isSystem()
            && dictField.allowEdit()  && dictField.allowEditOnCreate()
            && dictField.visible()    && !dictField.getCountryRegionCodes( ) )
            treeNode = dictField.treeNode();

                                        dictField.baseType()  ));

        fieldId = dictTable.fieldNext(fieldId);


Happy Daxing.

Page 1 of 712345...Last »