Dynamics AX Blog - Page 12

These posts are machine-translated.

How to create a AX<Table>-Class II

If you need a so called AX-class can use the class AxGenerateAxBCClass.

 

Simply call this class in the AOT by right clicking and follow the wizard or use following job:


static void generateAXTableClass(Args _args)
{
    AxGenerateAxBCClass axGenerateAxBCClass;
    
    axGenerateAxBCClass = new AxGenerateAxBCClass();
    axGenerateAxBCClass.parmTableId(tableNum(MyNewTable));
    axGenerateAxBCClass.run();
}


A that way generated class must be modified sometimes, but using the wizard is much faster than creating the class manually.

If the table changes, for example when adding new fields, you simply call that AxGenerateAxBCClass again and the AX

-class will be extended accordingly.

 

How to use such AX

-classes, i've described here.

 


 
 

Add contact information for entity

Here is an example of how you can add contact information data to an existing entry in the global address book.

static void createPartyContactInfo(Args _args)
{
    DirPartyTable dirPartyTable = DirPartyTable::findByNum(??"100000");
    DirParty dirParty;
    DirPartyContactInfoView dirPartyContactInfoView;

    // Edit Global address book
    dirParty = DirParty::constructFromCommon(dirPartyTable, DirUtility::getCurrentDateTime(), DirPartyType::Organization);

    // Create contact info
    dirPartyContactInfoView.LocationName    ='Office';
    dirPartyContactInfoView.Locator         ='+43 1 4654646';
    dirPartyContactInfoView.Type            = LogisticsElectronicAddressMethodType::Phone;
    dirPartyContactInfoView.IsPrimary       = NoYes::Yes;

    dirParty.createOrUpdateContactInfo(dirPartyContactInfoView);
}

Such a created entry will look like this:

Screenshot


 
 

List all modified objects from current layer

To browse the AOT for particular objects, you can use the TreeNode class. I've already posted some examples in the past.

In Dynamics AX 2012, a new option has been added, and although there are now some tables that begin with SysModel*. You can also use these tables to browse the AOT objects/properties.

An example of such a query is the following job, which returns (unsorted) all objects that have been modified in the current layer.


 
 

Create BOM through code

Using the following code you will be able to create a BOM through code.

static void createBomTableVersion(Args _args)
{
    AxBOMTable axBOMTable;
    AxBOMVersion axBOMVersion;
    AxBOM axBOM;
    InventTable inventTable = InventTable::find("100160");
    InventDim inventDim;

    try
    {
        ttsbegin;

        // BOM Table
        axBOMTable = AxBOMTable::construct();
        axBOMTable.validateInput(true);
        axBOMTable.continueOnError(false);
        axBomTable.parmBOMId(BOMTable::numberSeq().num());   
        axBOMTable.parmItemGroupId(inventTable.itemGroupId());
        axBOMTable.parmApprover(HcmWorker::userId2Worker(curUserId()));
        axBOMTable.parmApproved(NoYes::Yes);
        axBOMTable.parmName("Name of BOM");
        axBOMTable.parmSiteId("GF");

        axBOMTable.save();

        // BOM Version
        inventDim.clear();
        inventDim.InventSiteId = axBOMTable.parmSiteId();
        inventDim = InventDim::findOrCreate(inventDim);

        axBOMVersion = AxBOMVersion::construct();
        axBOMVersion.validateInput(true);
        axBOMVersion.continueOnError(false);
        axBOMVersion.parmBOMId(axBOMTable.parmBOMId());
        axBOMVersion.parmItemId(inventTable.ItemId);
        axBOMVersion.parmApprover(HcmWorker::userId2Worker(curUserId()));
        axBOMVersion.parmApproved(NoYes::Yes);
        axBOMVersion.parmActive(NoYes::Yes);
        axBOMVersion.parmInventDimId(inventDim.InventDimId);
        axBOMVersion.save();

        // BOM
        inventDim.clear();
        inventDim.InventSiteId = axBOMTable.parmSiteId();
        inventDim.ConfigId = "RoundNeck";
        inventDim.InventSizeId = "XS";
        inventDim.InventStyleId = "SlimFit";
        inventDim.InventColorId = "Blue";
        inventDim.InventLocationId = "902";
        inventDim = InventDim::findOrCreate(inventDim);

        axBOM = AxBOM::construct();
        axBOM.validateInput(true);
        axBOM.continueOnError(false);
        axBOM.parmBOMId(axBOMTable.parmBOMId());
        axBOM.parmItemId("100158");
        axBOM.parmInventDimId(inventDim.InventDimId);
        axBOM.parmBOMQty(17);
        axBOM.save();

        ttscommit;
    }
    catch
    {
        throw error("BOM creation failed");
    }
}

 
 

Congratulations on the Microsoft MVP Award 2015!

...was the subject of the e-mail which reached me yesterday and informed me that I was awarded for the Microsoft MVP Award.

I am very happy and only want to say: Thank you!


 
 

AX 2012: SysOperation-Framework: Use your own form as a dialog

In have already described how you can integrate your own form as a dialog within the SysOperation framework. Meanwhile, I've encountered a much simpler version:

  • Create a copy of form SysOperationTemplateForm
  • Overwrite method templateForm() like the following snippet shows
protected FormName templateForm()
{
    FormName ret;

    ret = formStr(CopyOfSysOperationTemplateForm);

    return ret;
}

 
 

Check access rights for MenuItem by code

If you need to check the access rights of the current user for a MenuItem, the following snippet can give you an example.

static void getMenuItemAccessRights(Args _args)
{
    AccessRight accessRight = AccessRight::NoAccess;

    accessRight = SecurityRights::construct().menuItemAccessRight(SecurableType::MenuItemDisplay, menuitemDisplayStr(CustGroup));

    info(strFmt("%1", accessRight));
}

 
 
Pages « 1 ... 9 10 11 12 13 14 15 ... 24 » 

 

 
 
 
Posts of the actual month
Mai 2024
MoTuWeThFrSaSu
 12345
6789101112
13141516171819
20212223242526
2728293031 
 
© 2006-2024 Heinz Schweda | Imprint | Contact | German version | Desktop version
In order to provide you with better service, this site uses cookies. By continuing to browse the site, you are agreeing to our use of cookies.