我为客户维护了一些特定配置信息的表格。
此表的标识符是客户帐户CustAccount
EDT。
现在我遇到了一个问题:有时必须在创建客户之前定义此配置信息。
有没有办法创建一个非限制性的EDT,它与CustAccount
(我们可以在现有帐户中选择值)相关,但是它允许其他值而不是现有帐户?
答案 0 :(得分:1)
是。您想查看AOT中使用基本枚举TableGroupAll
的示例。对于您的情况,您可能会创建一个名为TableAll
的新EDT(存在于AX2012中)。
查看\Data Dictionary\Tables\AssetDisposalParameters
的工作原理或使用\Data Dictionary\Base Enums\TableGroupAll
的任何内容。
基本上它就像一个双字段密钥,您Table
+ CustAccount
与CustTable
连接,但All
会只是空白CustAccount
。
编辑: Here is an AX 2009 XPO example that you can quickly see working well.
另外,不要做其他海报建议的内容。即使在AX 2012中,除非你有一些非常特殊的要求,否则你想要做一些类似于我建议的事情。
答案 1 :(得分:0)
您可以将IgnoreEDTRelation
设置为yes
。现在您可以在没有外键约束的情况下使用此EDT。
对于查找部分...您需要覆盖lookup
上datasource
字段上的方法form
。
public void lookup(FormControl _formControl, str _filterStr)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(CustTable), _formControl);
sysTableLookup.addLookupField(fieldNum(CustTable, AccountNum));
sysTableLookup.addLookupField(fieldNum(CustTable, CustGroup));
queryBuildDataSource = query.addDataSource(tableNum(CustTable));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
//super(_formControl, _filterStr);
}
How to: Add a Lookup Form to a Control 此链接显示如何向控件添加自定义查找。但它更多"清洁"覆盖数据源字段方法,以便如果您使用此字段在表单上有多个控件,则所有将具有此查找。