Alfasith AX

Alfasith AX
اللَّهُمَّ انْفَعْنِي بِمَا عَلَّمْتَنِي، وَعَلِّمْنِي مَا يَنْفَعُنِي، وَزِدْنِي عِلْمًا

Monday, April 3, 2023

Iterate form Datasource in AX2012 /D365 FO

 Hi,

I used the event hander onClicked button to select all the records of lines in datasources 

   public static void Demo_DeleteButton_OnClicked(FormControl sender, FormControlEventArgs e)
    {
        FormButtonControl  callerButton = sender as FormButtonControl;
        FormRun form = callerButton.formRun();
        FormDataSource forecastSales_ds =  form.dataSource(formdatasourcestr(Demo, ForecastSales))  as FormDataSource;
        ForecastSales forecastSalesExpand;
        ttsBegin;
        for(forecastSalesExpand = forecastSales_ds.getFirst(true) ? forecastSales_ds.getFirst(true) : forecastSales_ds.cursor();
forecastSalesExpand; 
forecastSalesExpand = forecastSales_ds.getNext())
        {
            //Perform your operation in forecastSalesExpand;
        }
        forecastSales_ds.executeQuery();
        ttsCommit;
    }

Regards,

Thursday, December 29, 2022

Adding filter to tablix using in """ XYZ""","""LMN""" in SSRS

 Hello,


When we add ranges values to tablix filters will auto updates the values to """.


This can be fixed by 

=CStr("03. Lines,04. Lines Total").Split(",")


Regards,

Wednesday, September 28, 2022

Display method in D365

 /// <summary>

/// <MAI 09282022>

/// FDD details

/// </MAI>

/// </summary>

[ExtensionOf(tablestr(PurchLine))]

public final class PurchLine_XXYYX_Extension

{

    public display NoYes isXYZ()

    {

        return InventTable::find(this.ItemId).XYZ;

    }

}

NOTE: In the coming days extensions will be recessive, so avoid static the display method.

Wednesday, June 22, 2022

Orig() in AX / D365

 Hi,


Orig() is to get the last saved values. This method is used to compare the new values with last saved values.


if(purchTable.orig().DlvTerm != purchTable.DlvTerm)
    {
        //element.updateDlvTerm();
        //Your custom code
}


Regards,

Tuesday, June 21, 2022

Overlayer/Override a methods in D365

 Hi,


Overlayer of standard code to execute your methods is not possible literally, whereas there are several other ways to override.

Procedure.

1. Class to register the override you created.

2. Call the registered call on the eventHander.

Registering Override method.

/// <summary>
/// Custom class created by MAI on 6/21/2022
/// to register the <c>Purchtable</c> form.
/// </summary>
public class PurchTableEventHandler
{
    /// <summary>
    /// Post event handler for <c>Purchtable</c> Initialized event.
    /// </summary>
    /// <param name=“_sender”></param>
    /// <param name=“_e”></param>
    [FormDataSourceEventHandler(formDataSourceStr(PurchTable, PurchTable), FormDataSourceEventType::Initialized)]
    public static void PurchTable_OnInitialized(FormDataSource _sender, FormDataSourceEventArgs _e)
    {
        var overrides = PurchTableFormExtensionOverrides::construct();
 
        _sender.object(fieldNum(PurchTable, CashDisc)).registerOverrideMethod(methodStr(FormDataObject, validate),
            methodStr(PurchTableFormExtensionOverrides, CashDisc_OnValidate), overrides);
    }
}

Calling the Registered methods.

/// <summary>
/// Calling override classes <c>PurchTable</c> data source field methods.
/// </summary>
public class PurchTableFormExtensionOverrides
{
    protected void new()
    {
    }
 
    /// <summary>
    /// Constructs a new instance of <c>PurchTableFormExtensionOverrides</c> .
    /// </summary>
    /// <returns>
    /// new of  <c>PurchTableFormExtensionOverrides</c> class.
    /// </returns>
    public static PurchTableFormExtensionOverrides construct()
    {
        return new PurchTableFormExtensionOverrides();
    }
 
 
    /// <summary>
    /// Checks whether <c>CashDisc</c> is valid.
    /// </summary>
    /// <param name = "_targetField"> The <c>FormDataObject</c> where the Validate is triggered.</param>
    public boolean CashDisc_OnValidate(FormDataObject _targetField)
    {

        boolean ret = _targetField.validate();
 
        if (ret)
        {
            //Your code
        }
 
        return ret;
    }
}

Regards,



Calling custom method of other layer objects created in form level in D365

 Hi,


Using an event handler, we cannot call the custom methods created in another later / model/ ISV object. 

On calling formRun.CreateDeliveryNote()  throws the error ‘FormRun doesn't have the method CreateDeliveryNote.

FormDataSource purchTable_ds = sender.datasource();
FormRun formRun = purchTable_ds.formRun();
formRun.CreateDeliveryNote() ;

Conclusion is to use only COC not eventhandler

[ExtensionOf(formDataFieldStr(PurchTable, PurchTable, DeliveryDate))]
final class PurchTableDeliveryDateField_Extension
{
    public void modified()
    {
         next modified();
         element.CreateDeliveryNote(); // Custom method from Other Later / Model 
    }
}


Regards

Get a table ID in SQL / table browser - D365

Hi select ID from SysTableIdView where  SysTableIdView .Name = 'CustTable' <URL>/?cmp=<CompanyID>&mi=sysTableBrowser...