1

我正在使用 D365FO(更新 28)。需要根据自定义创建的工作区上的负责人进行过滤。表 PMCContract 包含 HCMWORKERRECID 列。过滤器正在正确打开人员列表,但无论选择了哪个人。此外,当工作空间加载时,默认情况下它总是加载列表中的第一个人,但它应该是空的。

    [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;
    }

}
4

0 回答 0