Axapta 工作区上的D365FO过滤
我正在使用D365FO(更新28)。需要根据自定义创建的工作区上的负责人进行筛选。表PMCContract包含HCMWORKERRECID列。过滤器正在正确打开人员列表,但不管选择了哪个人员。另外,当加载工作区时,默认情况下它总是加载列表中的第一个人,但它应该是空的Axapta 工作区上的D365FO过滤,axapta,microsoft-dynamics,x++,dynamics-365-operations,Axapta,Microsoft Dynamics,X++,Dynamics 365 Operations,我正在使用D365FO(更新28)。需要根据自定义创建的工作区上的负责人进行筛选。表PMCContract包含HCMWORKERRECID列。过滤器正在正确打开人员列表,但不管选择了哪个人员。另外,当加载工作区时,默认情况下它总是加载列表中的第一个人,但它应该是空的 [Form] public class PMCContractManagementWorkspace extends FormRun implements SysIFilterProvider { SysFilte
[Form]
public class PMCContractManagementWorkspace extends FormRun implements SysIFilterProvider
{
SysFilterChangeEvent changeEvent;
public void close()
{
super();
SysFilterLastValueHelper::saveLastValue(worker);
}
public void initParmDefault()
{
if (!Worker.value())
{
HcmWorker hcmWorker;
PMCContract personUser;
select firstonly RecId from hcmWorker
exists join personUser
where hcmWorker.RecId == personUser.HCMWORKERRECID;
&& personUser.HCMWORKERRECID == curUserId();
Worker.value(hcmWorker.recId);
}
}
public void init()
{
super();
SysFilterLastValueHelper::getLastValue(worker);
changeEvent = SysFilterChangeEvent::newFromFormControl(worker);
this.initParmDefault();
}
public SysIFilter parmFilter()
{
SysIFilter filter = SysFilterFactory::createEmptyFilter();
UserInfo currentUser;
HcmWorker hcmWorker;
PMCContract personUser;
SysFilterValueResolutionMethod filterValueResolutionMethod = SysFilterValueResolutionMethod::All;
select HCMWORKERRECID from personUser
//exists join hcmWorker
where hcmWorker.RecId == personUser.HCMWORKERRECID;
//&& hcmWorker.RecId == Worker.value();
SysIFilterValue filterValue = SysFilterValueFactory::createFilterValueForBuffer(currentuser);
if (currentUser)
{
filterValueResolutionMethod = SysFilterValueResolutionMethod::None;
}
filter.addItem(filterValue, SysFilterOperator::Equal, filterValueResolutionMethod);
return filter;
}
public SysFilterChangeEvent parmChangeEvent()
{
return changeEvent;
}
}
parmFilter
方法中的逻辑看起来很奇怪。它从personUser
中进行选择,并在hcmWorker.RecId
上添加一个条件,但hcmWorker
未加入到语句中。但是它不使用personUser
。相反,使用的是currentUser
,它似乎没有初始化。您能在代码中添加一些注释来解释您认为代码在做什么吗?我使用了SalesOrderProcessing工作区中的逻辑。我需要根据负责人过滤工作区中的所有数据,在本例中为(hcmworkerrecId)。parmFilter方法中的逻辑看起来很奇怪。它从personUser
中进行选择,并在hcmWorker.RecId
上添加一个条件,但hcmWorker
未加入到语句中。但是它不使用personUser
。相反,使用的是currentUser
,它似乎没有初始化。您能在代码中添加一些注释来解释您认为代码在做什么吗?我使用了SalesOrderProcessing工作区中的逻辑。我需要根据负责人筛选工作区中的所有数据,在本例中为(hcmworkerrecId)。