Добрый день! Задача такая: нужно в лукапе вывести только тех сотрудников, которые работают в определенном подразделении. Написан такой код
X++:
EmplTable tempEmplTableLookup, employees;
DirPartyTable emplNames;
RpayHrmOrganization HrmOrganization;
SysTableLookup sysTableLookup;
Query query = new Query();
QueryBuildDataSource queryBDS;
;
//Делаем таблицу временной
tempEmplTableLookup.setTmp();
//Выбираем из таблицы рейсов
sysTableLookup = SysTableLookup::newParameters(tablenum(EmplTable), this);
//Добавляем столбцы
sysTableLookup.addLookupfield(fieldnum(EmplTable, EmplId));
sysTableLookup.addLookupfield(fieldnum(EmplTable, Del_Name));
sysTableLookup.addLookupfield(fieldnum(EmplTable, Title));
//Перебираем сотрудников и ищем там тех, кто в ЛО. При этом, они должны быть не уволенными
ttsbegin;
while select * from employees join emplNames join HrmOrganization
where employees.PartyId == emplNames.PartyId
&& HrmOrganization.hrmOrganizationId == employees.PayHRMOrganizationId_RU
&& !employees.PayResignedDate_RU
{
if (HrmOrganization.parentOrganizationId like 'ЛО*')
{
tempEmplTableLookup.clear();
tempEmplTableLookup.data(employees);
tempEmplTableLookup.DEL_Name = employees.name();
tempEmplTableLookup.insert();
}
}
ttscommit;
//Добавляем сотрировку
queryBDS = query.addDataSource(tablenum(EmplTable));
queryBDS.addSortField(fieldnum(EmplTable, DEL_Name), SortOrder::Ascending);
sysTableLookup.parmQuery(query);
//BP Deviation Documented
sysTableLookup.parmTmpBuffer(tempEmplTableLookup);
sysTableLookup.performFormLookup();
При выполнении дает ошибку:
Невозможно создать запись в Окружение (RHRMVirtualNetworkTable). Респондент: 6666, 6666.
Запись уже существует.
Что это значит? Может как-то по-другому можно реализовать данную операцию
MS DAX 2009