Вобщем сделал. Но всё равно подругому получилось. Пришлось лукапы в форме переопределять. Вот как сдесь
http://erpkb.com/Axapta/lookup
В итоге вот такой код.
X++:
str 5 usrId;
sysCompanyUserInfo emplCompany;// Таблица пользователей
emplTable emplTbl;// Сотрудники
str 15 deportCode;// Подразделения
rpayCalendDeport calendarDep;
str strRange;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(RPayCalendarTable), this);
Query query = new Query();
QueryBuildDatasource queryBuildDatasource = query.addDataSource(tableNum(RPayCalendarTable));
;
//super();
sysTableLookup.addLookupfield(fieldNum(RPayCalendarTable, calendarId));
sysTableLookup.addLookupfield(fieldNum(RPayCalendarTable, name));
// Кусман кода из FormInit'a RPayCalendarTable
usrId = curUserId();
while select emplCompany
where emplCompany.UserId == curUserId()
{
select emplTbl
where emplTbl.EmplId == emplCompany.EmplId;
deportCode = emplTbl.PayHRMOrganizationId_RU;
}
while select calendarDep
where calendarDep.PayHRMOrganizationId_RU == deportCode
{
strRange = strRange+','+calendarDep.RpayCalendatId;
}
queryBuildDatasource.addRange(fieldNum(RPayCalendarTable, calendarId)).value(strRange);
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
Если можно оптимизировать подскажите буду благодарен.