Auto Discovery Mechanism Of Acumatica Extensibility Framework

Auto discovery mechanism of Acumatica Extensibility Framework

Hello everybody,

another interesting notice today. 

Imagine following situation.

1. You have base class. Let it is called GraphX. 

2. In your library you created extentions of this grap: GraphXExt1, GraphXExt2 at the same level. For example like this:

public class GraphXExt1 : PXGraphExtension<GraphX>
{
   protected virtual void ARTran_USRProjectID_FieldDefaulting(PXCache sender, 
PXFieldDefaultingEventArgs e) { } } public class GraphXExt2 : PXGraphExtension<GraphX> { protected virtual void ARTran_USRProjectID_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e) { } }

3. Then question, if page will be loaded, which ARTran_USRProjectID_FieldDefaulting will be executed? From GraphXExt1 or from GraphXExt2?

The answer is the last loaded ( !!!!! ). If last loaded by framework will be GraphXExt2 then GraphXExt2 will be the winner. If last loaded will be GraphXExt1 then page will execute ARTran_USRProjectID_FieldDefaulting of GraphXExt1. Acumatica doesn't have any way to configure loading sequence of graphs. It means that it is crazy idea to make changes of the same member in two different graphs.

No Comments

Add a Comment

Deleteddatabaserecord In Acumatica

DeletedDatabaseRecord in Acumatica

Hello everybody,

today I want to share notice about DeletedDatabaseRecord database field. Sometime in db you can notice DeletedDatabaseRecord field. For example there is DAC Sub. You can even wonder what is this if it is not visible for users? It is purposed Acumatica for monitoring is record deleted, and presented. 

Another area of usage DeletedDatabaseRecord is extension tables. If you want to use extension table, and basic table has DeletedDatabaseRecord, then you should add it to extension table as well.

No Comments

Add a Comment

Extentsion Table In Acumatica With Isoptional

Extentsion table in Acumatica with IsOptional

Hello everybody,

today I want to notice few words about attribute IsOptional. DAC extension can be mapped by inner join, or by left join statement. 

[PXTable(IsOptional = value)] // default is false, or Inner join
public class DACTableExtension : PXCacheExtension<BaseDACTable>
{
 ... 
}

As far as I understand idea behind name, IsOptional means are there additional items from left join. And if set to true, means yes, there are, and if set to false ( default way ) there are not.

The left join way ( IsOptional = true ) can be used for

  • not synched tables
  • creates extension record when record in base table created or updated
  • calculates default field values if no extension table record is found.
  • can be used as separated DAC ( this is shocking for me from viewpoint why to make extension, which can have separated life).

The inner join ( default ) way:

  • always synched
  • extension records automatically created with connection to base record
  • copies key column values to each extension table
  • removes from original db table record when there is not corresponding extension table record
  • can be used as separated DAC ( for me again this was another surprise )

If to summarise, both ways you can use as separeted DAC

No Comments

Add a Comment

What Is Companyid In Acumatica

What is companyid in Acumatica

Hello everybody,

today I want to notice few words about companyid field. What is it's purpose. Initially Acumatica provides two !!!! companyid. 1 and 2. Why two? The first is for some Acumatica internal usage, and then your company will get id 2. Even if you believe that your company deserve to be 1, you'll get 2 or more. It means that first active company will have id 2 or bigger. So, if you have some DAC which should be used by few companies, then you just add companyid field, make it as key, and that's it, Acumatica will track to which company your entity should belong.

No Comments

Add a Comment

Why Columnwidth Can Be Ignored Or Another Gotcha

Why ColumnWidth can be ignored or another gotcha

I discovered recently another gotcha in Acumatica.

The ColumnWidthproperty value is never applied to the UI controls if the Merge property is set to True for the same PSLayoutRule component.

No Comments

Add a Comment

Grid Toolbar Buttons In Acumatica

Grid toolbar buttons in Acumatica

Hello everybody,

have you ever wondered, that SkinID property may regulate grid toolbar set of buttons? For me it was unknown untill today. Here it is list of id's and buttons according to T200:

  • Primary: Adds the Add, Delete, Fit to Screen, and Exportbuttons to the toolbar. This value is typically used for a grid on a simple edit page that consists of the single grid.
  • Details or DetailsInTab: Adds the Refresh, Add, Delete, Fit to Screen, and Export buttons to the toolbar. This value is typically used for a grid that displays the detail data on a master-detail page
  • Inquire: Adds the Refresh, Fit to Screen, and Export buttons to the toolbar. This value is typically used for grids on inquiry and processing pages
  • Selector: Adds the Refresh and Fit to Screen buttons to the toolbar
  • Attributes or ShortList: Hides the toolbar.

Now I know how to configure buttons of grid

No Comments

Add a Comment

Debugging Learning Algorithm

Debugging learning algorithm

Few notes of how to debug machine learning algorithm:

  1. Get more training examples
  2. Try smaller sets of features
  3. Try getting additional features
  4. Try adding polinomial features
  5. Try increasing lambda
  6. Try decreasing lambda

What those trys can achieve:

  1. fixes high variance
  2. fixes high variance
  3. fixes high bias
  4. fixes high bias
  5. fixes high bias
  6. fixes high variance

1 Comment

  • Alex Turok said

    Hi Yuriy,

    I've just stumbled upon your blog. A cool mix of machine learning and Acumatica development insights! That's really great, keep it up!

Add a Comment

How To Make Efficient Usage Of Neural Networks

How to make efficient usage of Neural Networks

Small note of how to use more effective of Neural Networks:

1. Use different numbers of hidden layers

2. Different numbers of units per layer

3. Different types of unit

4. Different types of strengths of weight penalty

5. Different learning algorithms

No Comments

Add a Comment

Merged And Read Only Modes In Acumatica

Merged and read-only modes in Acumatica

Hello everybody,

today another notice. Acumatica can provide values in two modes: merged and read-only.

So, what is merged? Imagine that user worked about the form, and made some changes at grid. Will changes apper in DB? Untill will be executed Persist, not. Data will be only in cache. Some time it is useful to compare data in cache with data in db. In order to get merged data you can use PXSelectReadOnly type or PXSelectGroupBy. For merged results you can use PXSelect or PXSelectJoin.

No Comments

Add a Comment

Order Columns In Grid In Acumatica

Order columns in Grid in Acumatica

Hello everybody,

Today I want to share with you interesting trick of how to order data in grid by default. The simplest way is to organize IsKey = true value. If you do this, then Acumatica will add Order by clause for each key field of the DAC.

No Comments

Add a Comment