标签: x++

我为什么要在if块中使用正逻辑?

我不明白为什么在if块中使用正逻辑是最佳实践

http://msdn.microsoft.com/en-US/library/aa629483.aspx

首选:

if (true) 
{ 
   ... 
} 
else 
{ 
   ... 
} 
Run Code Online (Sandbox Code Playgroud)

为什么在if块中具有正逻辑是最佳实践?

microsoft-dynamics x++ axapta dynamics-ax-2009

2
推荐指数
1
解决办法
410
查看次数

Microsoft Dynamics AX 2012 AIF QueryCriteria中的布尔AND逻辑

根据文件:

系统使用布尔OR逻辑连接所有标签.

这是否意味着构造一个在多个CriteriaElements之间执行布尔AND运算的QueryCriteria是完全不可能的?

x++ axapta dynamics-ax-2012

2
推荐指数
1
解决办法
1598
查看次数

RecId在Dynamics AX 2012中的通用表中是否唯一?

RecId Common在AX 2012中跨表唯一吗?我读到这是取决于版本的,但是我没有找到关于AX 2012的任何信息。

如果不是,这是否会打破AX中所有表从扩展的表的多态设计Common?并Common声明RecId...

x++ axapta

2
推荐指数
1
解决办法
4374
查看次数

Ax - 检查是否从数据库中选择了字段

是否有方法检查是否从数据库中检索字段?我创建了一些从不同位置调用的逻辑.但是从某些位置,使用字段列表选择表缓冲区.我想只在没有检索到字段的情况下再次执行查询.获取正确记录的查询非常繁重,在大多数情况下,该字段将为空.

Common o;
o = args.caller();
if(!isFieldRetrievedFromDatabase(o.(fieldId)))
{
    o = refetch(o);
}
//execute logic for o
Run Code Online (Sandbox Code Playgroud)

microsoft-dynamics x++ axapta

2
推荐指数
1
解决办法
607
查看次数

AX 2012R2:查找查询花费的时间太长,查找永远不会打开

我有一个AX2012R2 CU6(构建和客户端6.2.1000.1437,内核6.2.1000.5268),有以下问题:

在AP>日记帐>发票>发票日记帐>行(表单LedgerJournalTransVendInvoice)中,当我选择供应商作为帐户类型然后在帐户字段上激活查找时,AX会冻结几分钟,当它恢复时,查找将关闭/从不打开.每当帐户类型供应商,其他帐户类型工作正常时,就会发生这种情况.

我把它调试到LedgerJournalEngine.accountNumLookup() - > VendTable.lookupVendor line

formSegmentedEntryControl.performFormLookup(formRun);

上述过程占用了时间.

在聘请驱魔人之前有任何想法吗?

x++ axapta dynamics-ax-2012 dynamics-ax-2012-r2

2
推荐指数
1
解决办法
1077
查看次数

将SSRSReport打印到文件(.PDF)

我需要找到一种方法SrsReport,在我的情况下SalesInvoice,将.PDF(或任何类型的文件)"打印" 到特定位置.

为此我修改了SRSPrintDestinationSettings输出SalesInvoice-Report作为.PDF:

settings = controller.parmReportContract().parmPrintSettings();
settings.printMediumType(SRSPrintMediumType::File);
settings.fileFormat(SRSReportFileFormat::PDF);
settings.overwriteFile(true);
settings.fileName(@'\\AXDEV\Bottomline\Test\test.pdf');
Run Code Online (Sandbox Code Playgroud)

不知怎的,这被忽略了,我收到了一封电子邮件,报告为.PDF附件.

例如,这将在ax 2012上运行,但不会为我打印到PDF.

SRSPrintDestinationSettings     settings;
CustInvoiceJour         custInvoiceJour;
SrsReportRunController          controller = new SrsReportRunController();
PurchPurchaseOrderContract  rdpContract = new PurchPurchaseOrderContract();
SalesInvoiceContract    salesInvoiceContract = new SalesInvoiceContract();

select firstOnly1 * from custInvoiceJour where custInvoiceJour.SalesId != "";

// Define report and report design to use
controller.parmReportName(ssrsReportStr(SalesInvoice,Report));
// Use execution mode appropriate to your situation
controller.parmExecutionMode(SysOperationExecutionMode::Synchronous);


rdpContract.parmRecordId(custInvoiceJour.RecId);
controller.parmReportContract().parmRdpContract(rdpContract);

// Explicitly provide all required parameters
salesInvoiceContract.parmRecordId(custInvoiceJour.RecId); // Record id must be passed …
Run Code Online (Sandbox Code Playgroud)

printing pdf x++ axapta dynamics-ax-2012

2
推荐指数
1
解决办法
2513
查看次数

如何通过表单中的代码调用Ctrl + S?

我需要通过代码调用控件Ctrl+ S,这可能吗?

看起来像Ctrl+的element.task(2839)F5

谢谢大家

请享用!

save x++ axapta dynamics-ax-2012

2
推荐指数
1
解决办法
1535
查看次数

在Excel文件中设置表格的范围

我正在Microsoft Dynamics AX 2009中生成Excel文件.我想从第9行在Excel中创建一个表.即使我设置了一个范围,表格总是显示在单元格A1上.

SysExcelRange           xlsRange;
SysExcelListObject      listObj;
#define.ListObjectName("xlGuess")
Run Code Online (Sandbox Code Playgroud)

...

xlsRange = xlsWorkSheet.range("A9");
listObj = xlsWorkSheet.listObjects().add(xlsRange, #ListObjectName);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我也尝试设置全范围如"A9:E13"和"A9:A13",但它也没有用.也许,它可以用COM对象来做,但我无法实现它.为什么它不起作用?

excel x++ axapta excel-interop dynamics-ax-2009

2
推荐指数
1
解决办法
549
查看次数

Dynamics AX - 在AX 2009中以编程方式将表添加到DatabaseLog

我正在寻找一种方法来为某些表启用日志记录更改.
我已经尝试并测试过以编程方式将表添加到数据库日志中,但到目前为止取得了各种成功 - 有时它有时它不起作用(大多数情况下它没有) - 似乎只是将行插入DatabaseLog表中并不是很有效.

我尝试过:
使用正确的tableId,fieldId,logType和添加行.
域名已被指定为"管理员",主要公司,空白场和子公司,结果相同.
我创建了处理插入的类,主要的两个函数是:

public static void InsertBase(STR tableName, domainId _domain='Admin')
{
    //base logging for insert, delete, uptade on fieldid=0
    DatabaseLog DBDict;
    TableId _tableId;
    DatabaseLogType _logType;
    fieldId _fieldId =0;
    List logTypes;
    int i;
    ListEnumerator enumerator;
    ;

    _tableId= tableName2id(tableName);

    logTypes = new List(Types::Enum);

    logTypes.addEnd(DatabaseLogType::Insert);
    logTypes.addEnd(DatabaseLogType::Update);
    logTypes.addEnd(DatabaseLogType::Delete);
    logTypes.addEnd(DatabaseLogType::EventInsert);
    logTypes.addEnd(DatabaseLogType::EventUpdate);
    logTypes.addEnd(DatabaseLogType::EventDelete);

    enumerator = logTypes.getEnumerator();
    while(enumerator.moveNext())
    {
        _logType = enumerator.current();

        select * from dbdict where
                dbdict.logTable==_tableId && dbdict.logField==_fieldId
                && dbdict.logType==_logType;
        if(!dbDict) //that means it doesnt exist …
Run Code Online (Sandbox Code Playgroud)

microsoft-dynamics x++ axapta dynamics-ax-2009

2
推荐指数
1
解决办法
223
查看次数

尝试从FormRun检索数据源时获取null

我有2个表单,让我们调用表单A和B.在表单A中,我有一个按钮(空白按钮),当单击该按钮时,它将重定向到带有参数的表单B,该参数将注入表单B的数据源我无法检索表单B的数据源,它总是返回null.

[FormControlEventHandler(formControlStr(htVehicleListPage, FormCommandButtonControl1), FormControlEventType::Clicked)]
    public static void FormCommandButtonControl1_OnClicked(FormControl sender, FormControlEventArgs e)
    {
        FormDataSource htVehicleTable= sender.formRun().dataSource(formDataSourceStr(htVehicleListPage,htVehicleTable));
        htVehicleTable record=htVehicleTable.cursor();
        info(int2Str(record.htVehicleID)); //result: some legit ID.
        Args argsObj=new Args();
        argsObj.name(formStr(htVehicleMaintenanceDetails));
        FormRun formRunObj=new FormRun(argsObj);
        FormDataSource openningFormDataSource =formRunObj.dataSource(formDataSourceStr(htVehicleMaintenanceDetails,htVehicleMaintenance)); //result: openningFormDataSource is null, however, formRunObj is not null.
        Query queryObj=new Query();
        openningFormDataSource.query(queryObj);
        QueryBuildDataSource queryBuildDataSourceObj=queryObj.addDataSource(tableNum(htVehicleMaintenance));
        queryBuildDataSourceObj.addRange(fieldNum(htVehicleMaintenance,htVehicleID)).value(strFmt("htVehicleMaintenance.htVehicleID=%1",record.htVehicleID));
        formRunObj.init();
        formRunObj.run(); //if we inorge the null error it will show a form here
        formRunObj.wait();
    }
Run Code Online (Sandbox Code Playgroud)

x++ axapta

2
推荐指数
1
解决办法
67
查看次数