Author Archive

X++ :10- Query Nedir?

Bu yazıda X++’ın en güçlü özelliklerinden biri olan Query’leri inceleyeceğim. Query nesne tabanlı sorgu olarak özetleyebiliriz. Bu sorgu nesne bazlı olduğu için istenildiği gibi değiştirilebilir ayrıca son kullanıcı ile iletişime sokulabilir. Bu sebeplerden Form ve raporların temel veri kaynağı Query’dir.  Hem kodla hem de ara yüzden oluşturabiliriz. Form ve view gibi yapılarda kullanmak için genelde ara yüzden oluşturulanlar kullanılır.  Bu yazıda ara yüzden örnek bir Query oluşturacağım. İlerleyen yazılarımda kodla nasıl oluştururuz ve nasıl kullanabiliriz anlatacağım.

Resim-1

Yeni bir Query oluşturuyorum.

Resim-2

Query’de temel birkaç özellik var tabi öncelikle veri kaynağı belirlemelisiniz. Ben veri kaynağı olarak FDBookTable ekledim ve FieldList ile BookId, BookName oluşturdum. Range olarak ta BookCoverTyoe ekledim. Eğer kabaca sorgu olarak yazsaydım şöyle olurdu. Bu sorguyu artık istediğim yerde kullanabilirim.

Select BookI, BookName From FDBookTable

Where FDBookTable.BookCoverTyoe == FDBookCoverType::paperback;

Resim-3

Standartta olan karmaşık bir sorgu örneği. Burada 3 tablo bağlanmış. Filtre ve sıralama verilmiş.

Resim-4

Kullanıcı ile iletişime giren Query ekranı bu şekildedir. Bu resim eski versiyondan ama mantıkta bir fark yoktur. Yukarıdaki sorgunun görsel halini görebildiğimiz gibi buradan kullanıcı istediği işlemleri yapabilir.

Resim-5

Eklediğimiz veri kaynağı otomatik alanları seçilmeden gelecektir. Eğer tüm alanlar seçilsin isterseniz Dynamics Fields özelliğini Yes yapmak gerekir.

Resim-6

Bu yazıda ara yüzden nasıl Query oluşturulur anlatmaya çalıştım. Query çok geniş ve çok kullanılan bir özelliktir. Ayrıntılarına vakıf olmak için bol bol örnek yapmak lazım. Özellikle form tarafında kullanımı konusunda çok zafiyet görüyorum bu konuda ayrı bir yazı hazırlamayı düşünüyorum.

Selamlar.

www.fatihdemirci.net

TAGs: X++,Query, Azure, Azure DevOps, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

How to Change the Default Model for Dynamics 365 Finance and Operations Developments?

When you install a new DevBox for Dynamics 365 Finance and Operations, the default model is Fleet Management. If you create a new model, you can mark it as the default model while creating it. However, to use an existing model, it is necessary to make changes to the DynamicsDevConfig file.

In my previous articles, I created the DmrWMS model and marked it as the default model. Therefore, my every new project opens in the DmrWMS model.

Image-1

I have two models in this environment. If I want to work on the other model, unfortunately I cannot choose it while creating the project.

Image-2

As you can see, it is not possible to choose a model in the new project creation screen, or I could not find it. Of course I did some research.

Image-3

To change this, it is necessary to open the DynamicsDevConfig file in C:\Users\Adminb17ce65567\Documents\Visual Studio 2015\Settings.  You must go to this path with your own user. Adminb17ce65567 is my auto-generated admin user. That is the user I connect with Remote Desktop. You can find very useful information in the DynamicsDevConfig file. Let’s go over these 3 features for now.

<DefaultCompany></DefaultCompany> // You can set the default company here.

<DefaultModelForNewProjects>DmrWMS</DefaultModelForNewProjects> // You can change the default model here. When first opened, you will see Fleet Management here.

<DefaultWebBrowser                   i:nil=”true” /> // You can set the default browser here. Sometimes if you want to use Chrome for tests you can change this.

Image-4

In this article, I tried to explain how you can change the default model with the DynamicsDevConfig file. It is imperative to work with the model and it is necessary to set up the model management correctly and make sure that the software developers develop the right model. It becomes troublesome to fix them later.

Regards.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, DynamicsDevConfig, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Dynamics 365 Insights Power BI, Power Automate, Power Apss, Power Virtual Agents, what is Dynamics 365, Dynamics 365 ERP, Dynamics 365 CRM

X++ :9- MenuItems ve Menus Nedir?

Bu yazıda Dynamics 365 Finance and Operations ara yüzlerinin temel nesneleri olan MenuItem ve Menu’lerden bahsedeceğim. MenuItem bir nesnenin giriş noktası olan ve üzerinden yetki tanımı yapılabilen yapılardır. Menu ise adı üzerinde ekrandaki kısa yollardır. Üç tip MenuItem vardır. Display formlar için Output raporlar için Action ise sınıflar için kullanılır.

Resim-1

Önceki yazıda oluşturduğum FDBookTable formu için Display tipinde bir MenuItem oluşturalım.

Resim-2

Mutlaka Label tanımlamalısınız.  ObjectType olarak Form seçiyorum. Object olarak formumu seçiyorum.

Resim-3

Bu MenuItem artık istersek formda buton olarak veya menüye ekleyerek kullanabiliriz. Şimdi biz menüye ekleyelim. Kitap projesini Stok yönetimi altında takip etmek istediğim için Create Extension ile Extension oluşturdum.

Resim-4

Oluşan Extension’a bir alt menü ekliyorum.

Resim-5

Oluşturduğum alt menüye Book Managment etiketini tanımladım. Oluşturduğum menüItem’ı sürükleyip yeni oluşturduğum alt menüye bırakıyorum.

Resim-6

Derleyip projemi çalıştırdığımda uygulamada yeni oluşturduğum menü ve eklediğim MenuItem’ı görebildim.

Resim-7

Bu yazıda ara yüz oluşturmak için kullandığımız Menu ve MenuItem nedir nasıl oluşturulur anlatmaya çalıştım.

Selamlar.

www.fatihdemirci.net

TAGs: X++,Menu,MenuItem, Azure, Azure DevOps, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

Dynamics 365 Finance and Operations Alt Seviye Form Nesnelerine Yetki Nasıl Verilir?

Bu yazıda Dynamics 365 Finance and Operation uygulamasında herhangi bir nesneye nasıl yetki tanımı yapılır anlatmaya çalışacağım. Bunu çok kullanmanızı tavsiye etmiyorum. Ne kadar çok ayrıntıya girerseniz güvenliği yönetmek o kadar zor olacaktır. Ancak tabi bazı durumlarda bu ihtiyaç olacaktır. Bu durumlarda gördüğüm bir yanlışta bunu güvenlik altyapısıyla değil de kodla çözmek oluyor. Kesinlikle güvenlikle ilgili işler için kod yazmayın ilk etapta hızlı çözümmüş gibi görünür ama ilerde çok baş ağrısı olur. Desteği ve sonra gelen taleplerin karşılanması çok zorlaşır. Bu yazıda önceki yazılarımda kullandığım proje ile devam edeceğim. Bir test kullanıcısına Müşteriler formu yetkisi vermiştik. Artık formu açıp verilerini görebiliyor. Varsayalım Customer group alanı bu kullanıcıda görünmesin istendi. Bunu nasıl yapabiliriz görelim.

Resim-1

Read more

X++ :8- Form Nedir?

Bu yazıda Dynamics 365 Finance and Operations formlarının temellerinden ve basit bir formu nasıl oluşturabiliriz anlatacağım. Form uygulamanın kullanıcıya sunduğu ara yüzdür. Çok gelişmiş özellikleri olan bu yapının benim en çok sevdiğim tarafı tasarımla sizi uğraştırmamasıdır. Ağaç yapısında alanları eklediğinizde otomatik tasarım ortaya çıkar ve siz tasarımla uğraşmazsınız.

Bir örnek ile açıklamaya çalışacağım.

Resim-1

Önceki yazılarımda oluşturduğum FDBookTable için bir tane form yapalım.

Resim-2

Formlardaki temel nesneler aslında 3 tanedir. Öncelikle Data Source formun temel veri kaynağını gösterir. Burada Table, View veya Query kullanabiliriz. Methods kod yazabildiğimiz yerler sadece ana alanda değil her bir nesneye de kod yazabiliyoruz. Form metodları ile ilgili ayrı bir yazı düşünüyorum. Gelelim Design kısmına burası bizim tasarımı yaptığımız yer. Burada Pattern uygulayabiliriz.Uyguladığınızda temel nesneleri oluşturmanızı bekliyor bu sayede standartta uygun tasarım yapmış olursunuz.

Resim-3

Ben Apply pattern -> Simple List seçtim. Listede birçok Pattern var.

Resim-4

Simple List için gerekli olan nesneler kırmızı ile gösteriliyor. Her nesneyi eklediğinizde burası düzelecek.

Resim-5

Bazı nesneler kendi tasarımına ihtiyaç duyabilir. Şimdi 3 tane gerekli olan nesneyi ekliyorum.

Resim-6

Action Pane Filter grup ve Grid ekledim. İstenenler bunlardı. Burada veriyi gridde göstereceğiz.

Resim-7

Bir nesnenin doğru veri kaynağından veri gösterebilmesi için Data Source’un seçilmesi gerekiyor.

Resim-8

Veri kaynağından istediğim anaları gride bıraktım ve kaydettim. Artık formum hazır sayılır.

Resim-9

Derleyip formumu başlangıç nesnesi olarak seçip projemi çalıştırdığımda formum açılacak. Veri girişi veya diğer  işlemleri yapabilirim.

Resim-10

Bu yazıda Form nedir nasıl oluşturulur anlatmaya çalıştım. Tabi Form çok geniş bir konu çok farklı tipte formlar yapılabiliyor. En kolay öğrenme yöntemi standartta olan formları incelemek. Ayrıca farklı formlar yapıp kendinizi geliştirebilirsiniz. Formlar için en önemli konu veri kaynağı mantığını anlamak. Formlarda aslında Query kullanılıyor eğer Query mantığında eksikleriniz varsa öncelikle onları halledin.

Selamlar.

www.fatihdemirci.net

TAGs: X++,Form, Azure, Azure DevOps, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

X++ :7- Views Nedir?

Bu yazıda Dynamics 365 Finance and Operations View’lerinden bahsedeceğim. View aslında SQL View’leriyle aynı. Burada oluşturduğunuz View direk SQL de oluşuyor. SQL de birçok özellikle var hepsi X++ ne yazık ki yok. Ama birçoğunu yapabiliyoruz. Bir tane örnek View yapalım.

Resim-1

Yeni bir nesne oluşturma ekranından View seçiyoruz.

Resim-2

Oluşan View’e veri Data Source olarak FDBookTable ekledim. DataSource Fields kısmında tümünü seç demelisiniz. Sonra Fields kısmına View’de olmasını isteyen alanları ekledim. Tabi bu bir sorgu çok karmaşık sorgular yapmak isterseniz Query kullanmalısınız. Derleme ve eşitlemeden sonra hazır olacak.

Resim-3

Açıp alanlara bakabiliriz.

Resim-4

Tablo gibi kullanabilirsiniz. Tabi View sadece veri okumak için kullanılır. Insert Update Delete için kullanamazsınız.  

Resim-5

Bu yazıda View nedir, nasıl oluşturulur ve nerelerde kullanılır anlatmaya çalıştım. View çok önemli ve hayat kurtaran bir özellik temellerini iyi kavrayıp oluşturduğunuz View’leri SQL den kontrol edip kodlarını anlamaya çalışırsanız çok şey öğrenirsiniz.

Selamlar.

www.fatihdemirci.net

TAGs: X++,View, Azure, Azure DevOps, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

X++ :6- Tables Nedir?

Bu yazıda Dynamics 365 Finance and Operations tablolarından bahsedeceğim. Tablo sistemin en önemli nesnesi desek yanlış olmaz. Öncelikle Tablolar gerçek SQL tabloların XRecord sınıfından türeyen sınıf karşılıklarıdır.

Tabloların birçok özelliği var sırayla hepsinden bahsetmeye çalışacağım. Standartta 12000’in üzerinde tablo var.

Resim-1

Yeni bir tablo oluşturalım. FDBookTable bizim temel tablomuz olacak.

Resim-2

Fields alanına önceki yazılarımızda oluşturduğumuz EDT ve Enum’ları kullanarak alanları oluşturdum. Bunu sürükleyip bırakıp yapabilirsiniz.

Fields: Tablonun biz tarafından yönetilen alanlarıdır. SQL’de otomatik alanlar oluşur.

Field groups: SQL de olmayan bir özelliktir. Aynı tipte olan alanları bir araya getirip grup oluşturabilir ve bunları formlarda kullanabilirsiniz. Sonrasında eğer yeni bir alan ekler ve bunu da bir gruba dâhil ederseniz kullanılan tüm formlara otomatik eklenir.

Indexes: Aslında SQL indeksleridir. Burada oluşturulan indeksler otomatik SQL de oluşturulur. Performans için en önemli özelliklerden biri budur. Tabloya göre uygun indeksler belirlenmelidir.

Full Text Indexes: Çok uzun metinlerin içiren kelime aramaları hızlandırmak için oluşturulan indekslerdir. SQL de bire bir oluşur.

Relation: Tabloların birbiriyle olan ilişkilerini tutar. SQL’e yazmaz.

Delete Actions: Bu tablodan kayıt silinmeye çalışıldığında ilişkili tablolarda kayıt varsa nasıl davranması gerektiğine karar verir. X++ ta olan bir özelliktir.

State Machines: İş akışı durumları için kullanılır.

Mappings: Tablolar mapları buradan görüntülenebilir.

Methods: Bir sınıf olduğu için birçok metodu vardır ve bizde ekleyebiliriz.

Events: Tablo üzerinde olan olayları gösterir. Biz X++ yazılımcıları metot kullanmaya daha alışkınız ama yeni versiyonla bunlar biraz değişti.

En temel tablo özelliklerini işaretledim. İleriki yazılarımda tek tek anlatacağım

Resim-3

Modified By ve Modified Date Time özelliklerini açıyorum. Bu sayede otomatik olarak kaydı kim hangi zamanda açmış tutabileceğiz.

Resim-4

Bir tane index oluşturuyorum. En temel anahtar BookId olduğu için onu ekledim. Bu indexi özelliklerden birincil anahtar olarak seçiyorum.

Resim-5

Alanlarında birçok özelliği mevcut. Yine ne temel özelikleri işaretledim.

Resim-6

Tablomu kaydettikten sonra derleme ve eşitleme yapıyorum artık Table Browser ile kontrol edebiliriz.

Resim-7

Bir tane örnek kayıt girdim. Bizim açmadığımız sistemin otomatik açtığı alanlar var onlardan bahsedeyim.

DataAreaId: Şirket kodu eğer tablonuz şirketler üstü değilse bu alan otomatik hangi şirkette işlem yaparsanız o şirket kodu ile dolar.

RecVersion: Kısaca aynı anda iki kullanıcının aynı kaydı güncellemesini engellemek için tutulan rasgele bir sayıdır. Her güncellemede değişir.

Partition: Şirketler üstü bir gruplamanız varsa örneğin finans şirketleri veya üretim şirketleri gibi bunları ayırmak için kullanılır. Şu anda çok aktif kullanılmıyor.

RecId: Tablo bazında tekil int64 tipinde bir anahtardır.

Resim-8

Bu yazıda tabloları size tanıtmaya çalıştım. Bu yazıda ancak kapıyı araladım diyebilirim. Çok fazla ayrıntı mevcut farklı yazılarla tabloları anlatmaya devam edeceğim.

Selamlar.

www.fatihdemirci.net

TAGs: X++,Tables, Azure, Azure DevOps, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

How to Set Up Azure DevOps Connection via Visual Studio in Dynamics 365 Finance and Operations Development Environment?

In this article, I will talk about what needs to be done after creating a new development environment. The first step is to log into Visual Studio. Then, I will explain how to connect to the Azure DevOps project. I intend to summarize the steps to be taken before starting development in a few articles.

In these installations, I will use the development environment we built on Azure. I explained how to deploy a development environment in my previous articles. Once the machine is deployed, you can download and connect Remote Desktop connection information via LCS. Currently Visual Studio 2015 comes installed, but there will be a migration to new versions of Visual Studio soon. Visual Studio must be opened with Run as administrator. For convenience, right click on Visual Studio and click Pin to taskbar.

Image-1

Right click on the Visual Studio icon in the task bar and click Properties

Image-2

Click Advanced from the screen that opens. Check Run as administrator and click OK. This eliminates the need to do this every time you open it. Also, if you forget this, some functions do not work, and you will waste time.

Image-3

We need to Sign in with an account authorized for Visual Studio.

Image-4

I use an account created for this project.

Image-5

Software developers like to use Dark themes, but I use the classic theme because I have difficulty reading on dark screen.

Image-6

If there is no problem with your user’s authorization, your login will be completed. Dynamics 365 menu is available. I will talk about the menus here in my next articles. Now open the Team Explorer screen.

Image-7

Open the connection page with the Manage Connections link.

Image-8

Nothing appears in the Select a Team Foundation Server section. The reason for this is that the user login I used to connect to Visual Studio is not authorized for the Azure DevOps project that we connect to LCS.

Image-9

Open the Azure DevOps project and invite the user to the project by clicking Invite.  Of course, you must log in with an authorized user in Azure DevOps. Since I have the information of the Admin account, I logged in with it.

Image-10

When I type my username from the search, it automatically appears. I select and add it.

Image-11

Also, since I want to have Admin rights in this project, I add my user to the Administrators section as shown in the picture.

Image-12

When I looked back to Visual Studio, I could see my project. To do this, you need to restart Visual Studio. Refreshing doesn’t work.

Image-13

When you click Connect, you will be connected to your Azure DevOps project. You will see the link under Visual Studio Team Services as shown below.

Image-14

In this article, I talked about the initial settings required for a new Devbox. First of all, it is very important to open Visual Studio with admin rights. It is often forgotten, so I explained how to make a definition to automate it. Then, we established the connection to our Azure DevOps project, which is required for the version control of our application. Now we can move on to the other settings. I will talk about Model, Package and Branch setups in my next articles.

Regards.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Dynamics 365 Insights Power BI, Power Automate, Power Apps, Power Virtual Agents, what is Dynamics 365, Dynamics 365 ERP, Dynamics 365 CRM

X++ :5- Maps Nedir?

Bu yazıda Maps’lerden bahsedeceğim. Map ve Maps karıştırılır genelde ama tamamen farklı nesnelerdir. Maps temelde birbiriyle çok ortak yönü olan tablolar için ortak kod yazma imkânı sunan bir yapıdır. Çok uzun zamandır X++ ile geliştirme yapıyorum ama şimdiye kadar sıfırdan Maps oluşturmadım ama olan ve kullanılan Maps’lere yeni alanlar eklemem gerekti.

Resim-1

En Çok kullanılan Maps’ler genelde CustVend’lerdir. Mappings ile hangi tabloların bağlanacağı seçilir. Filed kısmında ortak alanlar belirlenir. Bu işlemler tamamlandıktan sonra artık buraya kod yazılabilir. Yazılan kod hem Cust hem de Vend için ortak kullanılır.

Resim-2

Data Model->Map ile yeni Map oluşturabilirsiniz.

Resim-3

Bu yazıda Maps’lerden bahsettim. Maps’leri hep nesne tabanlı yazılım geliştirmede işi biraz abartmak olarak gördüm. İşi basitleştirme ve kod çoğaltmamak için yapılan bir yapı ama birçok durumda işi daha zorlaştırıyor.

Selamlar.

www.fatihdemirci.net

TAGs: X++,Container, Azure, Azure DevOps, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

How to set up the Dynamics 365 Finance and Operations Help system?

In this article, I will explain how to set up and use the Help system for Dynamics 365 Finance and Operations. We usually perform this set up for test and live environments. I’ll show it on a test environment.

First, log into the test environment and open the System Management->Settings->System parameters screen.

Image-1

Open the help window. If you are opening it for the first time, a warning window appears and tells you to connect to the LCS project. If you have opened it before and you have not established the connection like me, you can choose it as follows. You may have more than one project, but it is useful to choose the project which you created this environment on.

Image-2

After selecting it, standard Task guide libraries will appear. You can add via LCS and choose from here. Select the LCS project for support as well.

Image-3

After these steps, the help setup is ready. Now you can click ? And open the help screen.

Image-4

If you are not in a form, a screen like the one below will open.

Image-5

Since our environment is in Turkish, help is displayed in Turkish. You can also set it to be displayed in different languages.

Image-6

If you open it from a form, related topics will appear. Since I opened the Help screen through the all customers form, the related topics were listed.

Image-7

In this article, I explained how to setup help. Help is a vast resource. It is useful to look into it. You can learn many details here. In addition, thanks to this setup you can create support requests. I will also talk about support requests in another article.

Regards.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Help, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Dynamics 365 Insights Power BI, Power Automate, Power Apss, Power Virtual Agents, what is Dynamics 365, Dynamics 365 ERP, Dynamics 365 CRM