Posts

D365F&O - X++ - delete_from in X++ AX2012 and D365 F&O

 delete_from is used to  Delete all records from a table  at once  based on some condition. //declare your table varibale CustTable  custTable ;   ttsbegin ; // Delete all records without any condition delete_from custTable ; //delete records based on some condition delete_from custTable  where custTable.AccountNum == "Cust12345677" ;

D365F&O - X++ - The first parameter of AifCollectionTypeAttribute must match either a parameter of the method it is defined on or "return".

  The value in your attribute calls the parameter in method definition which is  _ TestParm in our case . [DataMemberAttribute ( "TestClass" ), AifCollectionTypeAttribute( '_TestParm' , Types::Class, classStr(CustClass)), AifCollectionTypeAttribute( 'return' , Types::Class, classStr(CustClass))] public List parmTestMethod(List _TestParm = TestParm) {     TestParm = _TestParm;     return TestParm; }    

D365F&O - X++ - Override jumpref on product number datasource field in EcoResProductDetailsExtended form extension

[ExtensionOf(formDataFieldStr(EcoResProductDetailsExtended, EcoResProduct, DisplayProductNumber))] final class EcoResProductDetailsExtended_EcoResProduct_DisplayProductNumber_Extension {     public void jumpRef()     {         FormDataObject formDataObject = any2Object(this) as FormDataObject; FormDataSource formDataSource = formDataObject.datasource(); EcoResProduct ecoResProduct; MenuFunction menuFunction; Args args = new Args(); next jumpRef(); //get current record ecoResProduct = formDataSource.cursor(); if (!EcoResProduct) { return; } args.record(EcoResProduct); menuFunction = new MenuFunction(menuitemDisplayStr(CustEcoResProductDetails),                MenuItemType::Display); menuFunction.openMode(OpenMode::Edit); menuFunction.formViewOption(FormViewOpti...

D365F&O - X++ - Use of JumpRef() method in form extension

Override event handler onPostRun of Form and register JumpRef method.  class MJEcoResProductDetailsExtendedEventHandlers {     [FormEventHandler(formStr(EcoResProductDetailsExtended), FormEventType::PostRun)]     public static void EcoResProductDetailsExtended_OnPostRun(xFormRun sender, FormEventArgs e)     {         FormStringControl   control = sender.design().controlName(formControlStr(             EcoResProductDetailsExtended, InventTable_Product_DisplayProductNumber));         control.registerOverrideMethod(methodStr(FormStringControl, jumpRef),             methodStr(EcoResProductDetailsExtended_Extension, itemid_jumpref), sender);     } } Create a Form extension and write the method definition of jumpRef . [ExtensionOf(formStr(EcoResProductDetailsExtended))] final class EcoResProductDetailsExtended_Extension {     publ...

D365F&O - X++ - Best Practice Warning BP Rule: Suppress nested loop warning

  Add following line of code in your class. public class CustInvoiceJour  {     [SuppressBPWarning('nested loop used','need nested loop to insert 1:n condition')]     public void insert()     {             //your code      } }

D365F&O - X++ - Read data from list using x++ code

List                conList; ListIterator      Iterator;          conList = MJTestTable.getContainerNames(); Iterator = new ListIterator(conList); while(Iterator.more()) {        info(Iterator.value());        Iterator.next(); }

D365F&O - X++ - Insert records in database using recordInsertList

public void insertCustRecords(CustStatementDirTmp _custStatementDirTmp, Query _userQueryPacked) {         CustTable               cust;         QueryBuildDataSource    dataSource;         QueryRun                partyRun;         Query                   Query = new Query(_userQueryPacked);         RecordInsertList        recordInsertList;             partyQuery.allowCrossCompany(false);             dataSource = partyQuery.dataSourceTable(tableNum(CustTable));             partyRun = new QueryRun(partyQuery);             recordInsertList = new RecordInsertList(_custStatementDirTmp.TableId, false, false, false, false, true, _c...