Показать сообщение отдельно
Старый 18.02.2014, 07:01   #1  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Lookup с сотрудниками конкретного подразделения
Добрый день! Задача такая: нужно в лукапе вывести только тех сотрудников, которые работают в определенном подразделении. Написан такой код

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