Alfasith AX

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

Tuesday, April 12, 2022

Iterate the Error/ info log using Enumerator in AX 2012/ D365 F&O

Hi,


 SysInfologEnumerator sysInfologEnumerator;

    SysInfologMessageStruct sysInfologMessageStruct;

    Exception exception;

    checkFailed("Warning Msg");

    error("Error MSG");

    info("Info Msg");

    sysInfologEnumerator = SysInfologEnumerator::newData(infolog.cut());

    

    while (sysInfologEnumerator.moveNext())

    {

    sysInfologMessageStruct = new SysInfologMessageStruct(sysInfologEnumerator.currentMessage());

    exception = sysInfologEnumerator.currentException();

    info(strFmt("Msg type: %1; Message: %2",

        exception,

        sysInfologMessageStruct.message()));

    } 


Regards,

MAI

Sunday, August 29, 2021

SQL error description: [Microsoft][SQL Server Native Client 11.0][SQL Server]Cannot drop the index [table Name.Index] because it does not exist or you do not have permission.

 Hi,

Error: 

SQL error description: [Microsoft][SQL Server Native Client 11.0][SQL Server]Cannot drop the index 'WORKFLOWTRACKINGTABLE.IX_WORKFLOWTRACKINGTABLE_WORKFLOWTRACKINGSTATUSTABLE_PARTITION_TRACKINGCONTEXT_TRACKINGT', because it does not exist or you do not have permission.

Impact:

Results in synhronization failure.

Resolution :

1. Table a backup of the DB.

2. Delete the particular index from SQL side and synchronize the respective table in application.


Regards,

Sunday, August 22, 2021

How to add ranges in SSRS in design level

 Hi,

In the Tablix property of the grid we add the filter in any rages.

NOTE: 

1. All the operator are common and except  < > . This < > for != Not equals to ranges.

2. We cant add multiple ranges of same filed in same expression values whereas we need to create n number of filters against the expression to add ranges accordingly.

3. Working on Row visibiliy expression is not recomended to achiew this ranges.

4. To have AND condition in the value needs to add between Value1 and Value2



Regards,

Wednesday, July 14, 2021

Alternative row colors with different scope in SSRS

 Hi,


Alternative colors without any scope or condiction.

=iif(RowNumber(Nothing) Mod 2, "#ffffff", "#f0f0f0") 


Alternative colors with scope or condiction.

=IIF(RunningValue(Fields!CustId.Value, CountDistinct, Nothing) MOD 2 = 1, "#ffffff", "#f0f0f0") 


We can display alternative colors based on distinct running values or by parent groups or specific condition like

=IIF(Fields!Amount.Value > 35000 , "#ffffff", "#f0f0f0") 


Even we can achive group with in group cases and Matrix cases by selecting particular cells.


Regards

Wednesday, July 7, 2021

Jobs to export CSV from D365

 Hi,


class DpayExportCSV

{        

     /// <summary>

    /// Runs the class with the specified arguments.

    /// </summary>

    /// <param name = "_args">The specified arguments.</param>

    public static void main(Args _args)

    {

        CommaStreamIo commaStreamIo = CommaStreamIo::constructForWrite();

        SalesTable       SalesTable;

        SalesLine       SalesLine;

        FilePath  tempDir = "C:\\Temp\\SalesTable.csv";

       // #define.filename(@'C:\Temp\SalesTable.csv')

        ;

 

        const str fileName = 'SalesTable.csv';

        commaStreamIo.writeExp(['Level', 'SalesId', 'CustAccount','DlvTerm']); // Header

        while select * from SalesTable

        {

            commaStreamIo.writeExp(['OH', SalesTable.SalesId, SalesTable.CustAccount,SalesTable.DlvTerm]);

            while select SalesLine where SalesLine.SalesId ==  SalesTable.SalesId

            {

                commaStreamIo.writeExp(['OL', SalesLine.ItemId, SalesLine.SalesQty, SalesLine.InventDimId]);

                //// You may further add your componbenets table below to this within this loop

            }

        }

        System.IO.Stream stream = commaStreamIo.getStream();

        stream.Position = 0;

 

        FileUploadTemporaryStorageResult result = File::SendFileToTempStore_GetResult(stream, fileName);

       // System.IO.File::Move(result.getFileName(),tempDir);

        System.IO.StreamReader sReader = new System.IO.StreamReader(result.openResult());


        // Set file contentn string

        str  fileContent = sReader.ReadToEnd();

        //System.IO.File::Move(fileContent,tempDir);

        // Save file

        File::SendStringAsFileToUser(fileContent, tempDir);

        

      //  File::SendFileToTempStore(stream,"\\C:\\Temp\\SalesTable.csv");

        info(result.getDownloadUrl());

        Message::Add(MessageSeverity::Informational, result.getDownloadUrl());

        

    }

}


Regards,

REST Vs SOAP in AX 2012/D365

Hi,

The integration between 2 application/platform to perform the action of integration is termed as API (Application programming interface).

Integration will be in the forms of URL that contains service address with hosted location (server).

REST and SOAP are the 2 API services.

The REST and SOAP has its own unique properties and behaviour.

SOAP will support only XML structure of data format.

REST supports all the structure of data format viz JSON.

WSDL (Web Services Description Language) based call services are SOAP API.

AX 2012 cannot be integrated directly from any API, for that we have to create serviceReference in Visual Studio and to be deploy the project in AOT to consume the functions and object present in that services.

AX2012 supports only SOAP web services.

 D365 can be integrated by custom web services or ODATA. It creates 2 endpoints one for REST and other of SOAP.

Regards,

Get a table ID in SQL / table browser - D365

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