Monday, 23 April 2018

Resolve SysQueryableIdentifier invoking method error while refreshing tile count in D365

In D365 in workspace Tile count is a graphical representation of showing a quick status of information. Microsoft has introduced a framework which is Automatic Data Caching by using its Referesh Frequency property we can show count on tiles. This property determines how often the count on the tile is automatically updated along with that it also provides a facility to update count manually by Update now feature on tile as shown in image.

















During my development on workspace tile count I have received an error on getting the tile count which is shown in below image.

Error: (The required parameter SysDataProviderTypeFactory::newFromTypeAndIndentifier has not been provided when invoking method SysQueryableIdentifier).




Error clearly shows SysQueryableIdentifier object is unable to invoked or not provided. So when I debug my code I have found the problem. The reason of error is in Tile data cache configuration setup, Query which is bind with tile has queryable identifer column empty as show in image.








Or you can see in database by querying table SysDataCacheConfigurationTable as shown in image.







So in order to fix this issue all you need to do is to delete your record from Tile data cache configuration setup or from database, restart your IIS Server and re-run your workspace form. Framework will create a new record in SysDataCacheConfigurationTable as shown below.







That's all cheers.!!!

Sunday, 15 April 2018

How to filter workspace list grid / form Part in D365

In workspace filtering form part is quite complex task on which Microsoft has given very least documentation. In workspaces form parts are bound togther with a common datasource so we cannot add ranges for filteration. However by using SysIFilterProvider Interface it is possible to implement a method on each form part that is used on the workspace that would get a filter value from its parent workspace form and trigger those methods each time a modified() method is triggered on a workspace itself.

Step: 1
Make sure your form class implements SysIFilterProvider interface. as shown in image.





Step: 2
On Init method initialize your filter control change event from which you will get the value for filter your records as shown in image.











Step: 3
Write parmFilter method on which you passes the value to your form part as shown in image.












Note: 
In SysFilterValueFactory class there are six types of filters that you can use. In my case I am using RecId filter.
1- createFilterValueForBuffer
2- createFilterValueForRecId
3- createFilterValueForDateTime
4- createFilterValueForDate
5- createFilterValueForInteger
6- createFilterValueForString

Step: 4
Write parmChangeEvent as shown in image.












Step: 5
Implement SysIFilterConsumerForm, SysIFilterEventHandler Interfaces to your form part classes as shown in image.





Step: 6
Write register & fiter events and provide implementation of your datasource as shown in image.







Monday, 9 April 2018

How to add list grid / form part in workspace form in D365

In this tutorial, We will create a new list for a workspace, to show all purchase orders list.

Step 1:
Add a TabPage in your PanoramaBody Tab and apply design pattern as shown in image.



Step 2:
Add an Tab in your TabPage under that add another Tab control.



Step 3:
Create a new form in order show new list in a workspace also apply design pattern and assign style property shown in image.




Step 4:
Now in your form do the following tasks:
1- Add a group and apply pattern.
2- Add a grid and provide datasource to it.
(When you done with point 3, In your grid Default action property assign your Navigation menu Item).
3- Add a menu item button for navigation.
(In my case it is PurchTable Display Menu Item)



Step 5:
Inherit your form class with following interfaces classes as show in image.
1- SysIFilterConsumerForm

2- SysIFilterEventHandler



Step 6:
Now create a display menu item and assign your form (Step: 3 form).

Step 7:
Add a form part (FormContainerControl) in your tabPage (Step: 2) and assign your menu item and set property as shown in image.



















That is all you need to add a grid listing in your workspace. It is shown like this.



Another blog reference related to Workspace:
How to create custom workspace form and add tiles in D365

Friday, 6 April 2018

How to create custom workspace form and add tiles in D365

In Dynamics AX 365 we all must be well aware of the new Workspaces feature which has interactive design to show several business tasks, insights, reporting and dashboards that a business user deals with on a typical work day. In this blog I will tell you how you can create a custom workspace and add tile button in the form.

Step 1:


Create a form and apply "Custom" design pattern and assign highlighted properties show in image.















Step 2:
Add an Action pane to your form.

Step 3:
Add Tab in your design and assign highlighted property show in image.













Step 4:
Add TabPage and apply design pattern "Section Tiles" also assign highlighted property show in image.
















Step 5:
Create a display menu item and assign form (any form that you want to open from tile button) in Object Property.

Step 6:
Create a Tile and assign your display menu item in its Menu item Name property also change the value of Form View Option property to "Grid".






















Step 7:
Now Simply drag and drop your tile button in your tab page control.

That is all you need to do for creating a simple workspace form and tile button.


















Sunday, 1 April 2018

Override form data source field methods in AX7 / D365

In Ax2012 we have commonly customize datasource field methods like jumpRef() or modified(). In AX7 / D365 on extended forms we cannot override datasource field methods. Recommended approach in AX7 / D365 is to avoid overlaying and use extensions as much as possible so for achieving it follow below given steps. In this example I am overriding jumpRef() method on field.

Step: 1
Initialize event handler of the datasource in which you want to override datasource field method. In my case I am using PurchLine_OnInitialized event handler as shown in image.










Step: 2
Then create a method in which you want to give your implementation details and subscribe it to OnInitialized event.















Using this approach we can override any data source field method.

Note: (Custom objects used in this example)

1- EgxPackingInstructionEventHandler (Event handler class)
2- EgxPackingCode_OnJumpRef (Method that provide the jumpRef Implementation)
3- EgxPackingInstructionMenu (Custom form display menu item)

Reference: AX 7. How to override form data source field methods without overlaying.

How to Get Customer Free Text Invoice "Totals" form field value with X++ in D365FO

Customer free text invoices are an essential aspect of financial management in D365FO. In this blog, I have compiled all the code needed to ...