public void lookup()
{
super();
OMUserRoleOrganization omOrg;
boolean hasOrgAccess = false;
// Check if the current user has any organization access records
select firstonly RecId from omOrg
where omOrg.User == curUserId();
hasOrgAccess = (omOrg.RecId != 0);
Query query = new Query();
QueryBuildDataSource qbdsCompany = query.addDataSource(tablenum(CompanyInfo));
qbdsCompany.addSelectionField(fieldNum(CompanyInfo, DataArea));
qbdsCompany.addSelectionField(fieldNum(CompanyInfo, Name));
if (hasOrgAccess)
{
QueryBuildDataSource qbdsOrg = qbdsCompany.addDataSource(tablenum(OMUserRoleOrganization));
qbdsOrg.relations(false);
qbdsOrg.joinMode(JoinMode::InnerJoin);
qbdsOrg.addLink(
fieldnum(OMUserRoleOrganization, omInternalOrganization),
fieldnum(CompanyInfo, RecId));
qbdsOrg.addRange(fieldnum(OMUserRoleOrganization, User)).value(queryValue(curUserId()));
}
msLookupCtrl = SysLookupMultiSelectCtrl::constructWithQuery(this.formRun(), this, query);
msLookupCtrl.set(msLookupCtrl.getSelectedFieldValues());
}