Archive for Ocak, 2020

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

X++ :4- Map Nedir?

Map bir veri yapısı aslında Set’lere benzer bir yapısı var. Bir anahtar ve bir değerden oluşuyor. Uygulamada çok fazla kullanılıyor. Bir örnekle açıklığa kavuşturalım.

Bir Job oluşturuyorum.

Resim-1

Yeni bir değişken oluşturup key ve value tiplerini belirlemek lazım.

class FDMap

{

public static void main(Args _args)

{

Map             map = new Map(Types::Integer, Types::String);

MapEnumerator   mapEnumerator;

map.insert(1, “M001″);

map.insert(2, “M002″);

map.insert(3, “M003″);

map.insert(4, “M004″);

mapEnumerator = map.getEnumerator();

while (mapEnumerator.moveNext())

{

info(strFmt(“Key: %1, Value: %2″,mapEnumerator.currentKey(), mapEnumerator.currentValue()));

}

info(strFmt(“Key: 3, Value: %1″,map.exists(3) ? map.lookup(3) : “not found” ));

map.insert(3, “M023″);

info(strFmt(“Key: 3, Value: %1″,map.exists(3) ? map.lookup(3) : “not found” ));

}

}

Job çıktısı böyle olacaktır.

Resim-2

Bu yazıda Map sınıfının kullanımıyla ilgili bir örnek yaptım. Özellikle küçük ve boyutu belli olmayan veriler için kullanılır. Çok büyük verileri tutmak için uygun değildir.

Selamlar.

www.fatihdemirci.net

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

How to Create a Dynamics 365 Finance and Operations Support Case?

In this article, I will show you how you can open a support case via Dynamics 365 Finance and Operations and access automatically-generated support records via LCS and Azure DevOps.

First, some basic setups need to be made. In my previous articles, I explained how to setup Help. If you follow the setups there, you can create a support case without having to do anything else. When you click the question mark and click Support, if you have not installed, the LCS connection screen will appear.

Image-1

You can click the link and establish the connection. It will be connected without entering any information here.

Image-2

When the connection is successful, the following screen will appear. You can now create a support case.

Image-3

Click on the question mark again and click Support.

Image-4

On the screen that opens, you can enter many details about your support case. First, enter the title and description of the issue.  You can create a task record and add it here. If there is a file log, you can add it. You can indicate if the issue prevents you from working. The more details provided here, the easier the solution will be.

Image-5

For Send to be active, you have to click Yes for the email notification. Then, when you click Send, the following screen will appear.

Image-6

The support case you created will be sent as follows.

Image-7

To view the support request you created on LCS, open your project and click Support.

Image-8

The support case you created appears in the support issues section. You can follow the actions from here. Also, a Work Item has been created in Azure DevOps. You can open Azure DevOps Work Item record by clicking directly on the support case name.

Image-9

You can also see the support case you created in Azure DevOps. From here, you can follow the necessary steps to solve it.

In this article, I tried to explain how to enter a new support case and view it via LCS and Azure DevOps. Support has always been a painful process for business applications. It’s not easy to get users who just take a screenshot of the error and post it to enter detailed support cases. However, this mechanism will reduce the IT workload and make it easier to track. For this reason, it’s best to encourage business units to use this place. For example, support cases entered here can be prioritized and resolved quickly.

Regards.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Support Case, 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++ :2- Base Enums Nedir?

X ++ sabitleri desteklemez ancak sabit değerlerin bir listesi olan numaralandırılabilir bir tür olan Base Enum sahiptir. Enum değerleri tabloda tamsayı olarak tutulur. İlk element 0 rakamı, bir sonraki 1 ve sırayla devam eder. Standart uygulamada yüzlerce Enum vardır. Örneğin, NoYes gibi. Şimdi bir örnek oluşturalım.

Resim-1

MonthsOfYear Enum için en iyi örneklerden birdir.

Resim-2

Şimdi kendi örneğimizi oluşturalım.

Resim-3

Kitap kapak tipi adında bir Enum oluşturdum. 3 tane Element ekleyeceğim.

Resim-4

Element eklerken İlk elementi None bırakmak genel yaklaşım. Değeri sıfır olduğu için varsayılan olarak geliyor. Elementlerin adı değeri ve etiketi en önemli özellikleridir.

Resim-5

Karton kapak elementi ekliyoruz.

Resim-6

Bu yazıda Enum nedir ve nasıl kullanılır anlatmaya çalıştım. Veri yönetimi acısından çok önemli bir araç. Kodda kullanımı çok fazla olan bir özelliktir. En çok düşülen ikilem ne zaman tablo ne zaman Enum yapmak gerektiğidir. Burada İki şeyden bahsedebilirim. Eğer değerler herhangi bir şekilde ayrılması gerekiyorsa veya son kullanıcı tarafından tanımlanması gereken bir veriyse tablo olmalıdır. Kodda değerlere göre kod yazılacaksa Enum olmalıdır.

Selamlar.

www.fatihdemirci.net

TAGs: X++, Base Enum, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Dynamics 365 nedir, Dynamics 365 ERP, Dynamics 365 CRM

How to make new mobile forms on Dynamics 365 Finance and Operations web forms?

In this article, I will try to explain how to generate new mobile forms from Dynamics 365 Finance and Operations forms. In my previous article, I explained how to publish standard mobile screens and how to install Dynamics 365 Mobile App on mobile devices.

In this example, we will make a very simple listing screen. I selected the all products form as an example. Open the Product information managment -> All products and product master form.

Image-1

Click on the Mobile app from the settings icon.

Image-2

Click the ellipsis icon from the form that opens and click Create.

Image-3

Enter the information of the mobile form you want to create. Then add a page by clicking Add page.

Image-4

When you click Done, the page creation screen opens.  Here, click Select fields to open the screen where you can select the fields you want.

Image-5

Select the fields by clicking the + icons.

Image-6

I added two fields. After finishing the process, click Back and return to the first page.

Image-7

You see the page you created on this screen. You can create multiple pages.  Continue the process by clicking Done.

Image-8

Id is created here. Complete your mobile worksheet by clicking Save.

Image-9

You can now see it in the list. Publish it by clicking Publish. You will now be able to see the product list form from the application on your phone.

Image-10

Open the application on your phone and log in.

Image-11

Check I understand and tap Connect.

Image-12

My Products appears on the page that opens. If you entered before, you need to refresh.

Image-13

Once you enter, you see the list form you created.

Image-14

When you click and enter, your products are listed. We added two fields, and they are one under the other.

Image-15

In this article, I tried to explain how you can create mobile forms from any form. I exemplified it with a very simple form, but you can do it with forms with more complex data entries. I will also refer to more advanced examples in my next articles. Preparing such easy mobile forms will be very useful in projects. Thanks to this, many simple needs can be solved at no cost. Application consultants should learn the capabilities of this thoroughly and direct the emerging needs to this.

Regards.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Mobile app, 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++ :3- Container Nedir?

X ++ Temel veri tiplerinden biri olan Container farklı tipteki verileri içinde barındırabilir. Tablolara açılan alanlar Container tipinde olabilir. Birçok fonksiyon ile veri yüklenip alınabilir. Özellikle farklı tipteki verileri bir yere göndermek ve çekmek için kullanılır.

Yeni bir Job oluşturup bir örnek kod yazalım.

Resim-1

class FDContainer

{

public static void main(Args _args)

{

int             number1;

str             name;

AccountNum      AccountNum;

CustTable       custTable, custTable2;

container       c;

Gender          gender;

utcDateTime     dateTime;

;

name        = “Fatih Demirci”; // Değişken ataması

custTable   = custTable::find(“M000017″);// Değişken ataması

c = conins(c, 1, name); // Contianer Insert işlemi

c = conins(c, 2, custTable);

c = conins(c, 3, 12321);

[name,  custtable, number1] = c; // Container’daki değerleri değişkenlere alma.

c = ["fatih", 12, custtable, Gender::Male]; // Tek seferde çoklu değişken atama

dateTime = dateTimeUtil::newDateTime(systemdateget(), timeNow());

name        = conpeek(c, 1); // tek bir değişken seçme

custTable   = conpeek(c, 3);

c           = conins(c, 4, dateTime);

info(“OK”);

}

}

Bu yazıda Container’ı size tanıtmaya çalıştım. Çok kullanışlı bir veri tipi çok sık kullanıldığını göreceksiniz. Bende bunu basit işler için kullanıyorum. Çok büyük veriler için uygun bir yapı değil. Dizi gibi düşünün.

Selamlar.

www.fatihdemirci.net

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