我不明白为什么在if块中使用正逻辑是最佳实践
http://msdn.microsoft.com/en-US/library/aa629483.aspx
首选:
if (true)
{
...
}
else
{
...
}
Run Code Online (Sandbox Code Playgroud)
为什么在if块中具有正逻辑是最佳实践?
RecId Common在AX 2012中跨表唯一吗?我读到这是取决于版本的,但是我没有找到关于AX 2012的任何信息。
如果不是,这是否会打破AX中所有表从扩展的表的多态设计Common?并Common声明RecId...
是否有方法检查是否从数据库中检索字段?我创建了一些从不同位置调用的逻辑.但是从某些位置,使用字段列表选择表缓冲区.我想只在没有检索到字段的情况下再次执行查询.获取正确记录的查询非常繁重,在大多数情况下,该字段将为空.
Common o;
o = args.caller();
if(!isFieldRetrievedFromDatabase(o.(fieldId)))
{
o = refetch(o);
}
//execute logic for o
Run Code Online (Sandbox Code Playgroud) 我有一个AX2012R2 CU6(构建和客户端6.2.1000.1437,内核6.2.1000.5268),有以下问题:
在AP>日记帐>发票>发票日记帐>行(表单LedgerJournalTransVendInvoice)中,当我选择供应商作为帐户类型然后在帐户字段上激活查找时,AX会冻结几分钟,当它恢复时,查找将关闭/从不打开.每当帐户类型供应商,其他帐户类型工作正常时,就会发生这种情况.
我把它调试到LedgerJournalEngine.accountNumLookup() - > VendTable.lookupVendor line
formSegmentedEntryControl.performFormLookup(formRun);
上述过程占用了时间.
在聘请驱魔人之前有任何想法吗?
我需要找到一种方法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) 我需要通过代码调用控件Ctrl+ S,这可能吗?
看起来像Ctrl+的element.task(2839)F5。
谢谢大家
请享用!
我正在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对象来做,但我无法实现它.为什么它不起作用?
我正在寻找一种方法来为某些表启用日志记录更改.
我已经尝试并测试过以编程方式将表添加到数据库日志中,但到目前为止取得了各种成功 - 有时它有时它不起作用(大多数情况下它没有) - 似乎只是将行插入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) 我有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)