Sunday, September 10, 2017

Deleting model files in AX 7





Although it is not recommended to delete the model files in AX 7 however there is a way to delete the model files if you are in development environment or learning AX 7. Just follow below path to delete the model files in AX 7.


1.       You need to stop AOS service by going into IIS manager.




2.       Open Command Prompt and change directory to path C:\AOSService\PackagesLocalDirectory\Bin
To check your packages local directory you can also go to IIS Manager and right click and select explore.



3.       Type the below line and press enter
C:\AOSService\PackagesLocalDirectory\Bin>ModelUtil.exe -delete -metadatastorepath=<Path to package directory> -modelname=<Model Name>

Usage:
C:\AOSService\PackagesLocalDirectory\Bin>ModelUtil.exe -delete -metadatastorepath="C:\AOSService\PackagesLocalDirectory" -modelname="Application suite VAR model"

4.       After deletion of the model you need to delete the package as well.
Go to C:\AOSService\PackagesLocalDirectory and delete the folder with the same name as your model.


5.       Just start AOS service from IIS manager and sync the DB.




Wednesday, September 6, 2017

Tutorial example for modifying Records and Infolog in tables in Dynamics 365 for Operations (AX 7)



To manipulate records in Dynamics 365 for operations we need to follow the below steps:

1. Open visual studio 2015, and create a new Operations Project of type Dynamics 365 for        
        Operations


2. Create a new  Model Test_Model if a model does not exists by clicking on Dynamics 365 in VS 
        menu

3. Check the project properties and make sure you have the setup as below and click apply.
-          Model property should reflect the correct model name
-          Startup Object property should be updated with the new runnable class which we will create in steps below.
1
4. Create a new class by right clicking on the project name ->add->NewItem
On the left page under operations artifacts, select code
On the right select Runnable Class and give a name for the class.


5. Write a simple X++ code to fetch data from BankAccountTable in AX and rebuild the project and click on Run


6. When running you might get an error saying “To run you must set a startup object (Such as a class, form, a menu item).Set this in the Startup project.”

This is because we have not mentioned the correct object name to run from a project, so we need to change this.
Go to Project properties and check if the ‘startup object’ is the name of the job you are trying to run.


7. When running an infolog in Dynamics 365 for operations, AX will open the client page in web browser and the data will be displayed  on the ribbon as shown in below screenshot (Bank Accou). 
- If the data is not displayed correctly, then please check the Company at the top right is the one where the data is.


Friday, March 18, 2016

How to get files from path

I am sharing today a method which can help you get files in a particular path.

static container findMatchingFiles(
        str _folderPath
    ,   str _filePattern   = '*.jpg*')
{
    System.IO.DirectoryInfo     directory;
    System.IO.FileInfo[]        files;
    System.IO.FileInfo          file;
    InteropPermission           permission;
    container                   fileTypes;
    Counter                     counter = 1;

    str         fileName;
    counter     filesCount;
    counter     loop;
    container   mathchingFiles;
    ;

    permission  = new InteropPermission(InteropKind::ClrInterop);
    permission.assert();

    directory   = new System.IO.DirectoryInfo(_folderPath);

    files       = directory.GetFiles(_filePattern);
    filesCount  = files.get_Length();

    fileTypes   = ['*.bmp*','*.jpeg*','*.gif*','*.jpg*','*.png*'];
    while(filesCount == 0 &&  counter <= conLen(fileTypes))
    {
        _filePattern = conPeek(fileTypes,counter);
        files       = directory.GetFiles(_filePattern);
        filesCount  = files.get_Length();
        counter++;
    }


    for (loop = 0; loop < filesCount; loop++)
    {
        file            = files.GetValue(loop);
        fileName        = file.get_FullName();
        mathchingFiles  = conins(mathchingFiles, conlen(mathchingFiles) + 1, fileName);
    }

    CodeAccessPermission::revertAssert();

    return mathchingFiles;
}

Monday, January 18, 2016

Reading images and displaying on report

To display images on a SSRS report in AX we can use below code.

Sometimes we need to show images on SSRS reports, for that purpose we can use below code to fetch the image from a table field as assign to the TmpTable used in SSRS report.

Replace <Table.Field> with your  table name and field name

imagePath = conPeek(PackingSlipReportDP::findMatchingFiles(<Table.Field>,'*.jpg*'),1);
            new FileIOPermission(imagePath,'r').assert();
            if ( WinAPI::fileExists(imagePath))
            {
                binData.loadFile(imagePath);
                logoContainer = binData.getData();
           
                <Table.Field>= logoContainer;
            }
            CodeAccessPermission::revertAssert();