1. Add a new method in hcmWorker table, and add this script :
public static client void lookupWorkerByLegalEntity (FormStringControl _lookupctrl, Int64 _LegalEntity) { SysTableLookup sysTableLookup; Query query = new Query(); QueryBuildDataSource queryBuildDataSource, queryBuildDataSource1; ; SysTableLookup = SysTableLookup::newParameters(tableNum(HcmWorker), _lookupctrl); sysTableLookup.addLookupfield(fieldNum(HcmWorker, PersonnelNumber)); sysTableLookup.addLookupfield(fieldNum(HcmWorker, Person)); sysTableLookup.addLookupMethod(tableMethodStr(HcmWorker,workerRelationType)); queryBuildDataSource = query.addDataSource(tableNum(HcmWorker)); queryBuildDataSource1 = queryBuildDataSource.addDataSource(tableNum(HcmEmployment)); queryBuildDataSource1.joinMode(JoinMode::ExistsJoin); queryBuildDataSource1.relations(true); queryBuildDataSource1.addRange(fieldNum(HcmEmployment, LegalEntity)) .value(SysQuery::value(_LegalEntity)); sysTableLookup.parmQuery(query); sysTableLookup.performFormLookup(); }
2. Overide method Lookup in datasource field in form which lookup to worker with this script :
public void lookup(FormControl _formControl, str _filterStr) { HcmWorker::lookupWorkerByLegalEntity(_formControl, CompanyInfo::find().RecId); }