|
18.02.2014, 07:01 | #1 |
Участник
|
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(); Запись уже существует. Что это значит? Может как-то по-другому можно реализовать данную операцию MS DAX 2009 |
|
18.02.2014, 08:01 | #2 |
Участник
|
Попробуйте не insert(), а doInsert(). Возможно метод insert перекрыт на таблице и несмотря на то что таблица временная все равно что-то делает.
|
|
|
За это сообщение автора поблагодарили: Vasiliusis (1). |
18.02.2014, 08:20 | #3 |
Участник
|
Не понимаю почему нельзя использовать стандартную lookup форму? Добавьте DS по DirPartyTable и возьмите от туда наименование, ну и свои условия дополнительные какие необходимы, и не нужно никаких временных таблиц и транзакций и работать будет быстрее.
__________________
Sergey Nefedov |
|
18.02.2014, 08:51 | #4 |
Участник
|
вы имеете ввиду Query? А как мне вытащить должность человека? и подразделение? они то идут из EmplTable... если бы в DirPartyTable наподобие метода name были бы методы для извлечения подразделения и должности... тогда да возможно, можно было бы и через фильтр сделать
|
|
18.02.2014, 09:01 | #5 |
Участник
|
Цитата:
В крайнем случае можете сделать свою лукап форму.
__________________
Sergey Nefedov |
|
18.02.2014, 10:18 | #6 |
Участник
|
Цитата:
Сообщение от SRF
Я имею ввиду lookup форму EmplTableLookup, которая привязана к EDT EmplId, там в стандарте один DS подвешан EmplTable, добавьте к нему DirPartyTable ну и свои DS если нужны еще какие то данные из других таблиц(хотя из вопроса достаточно будет и exists join), ваш запрос рисуется минут за тридцать.
В крайнем случае можете сделать свою лукап форму. |
|
18.02.2014, 08:51 | #7 |
Участник
|
|
|
18.02.2014, 09:44 | #8 |
NavAx
|
Ну хотя бы like в запрос запихайте. И код отформатируйте по человечески. Глаза режет.
__________________
Isn't it nice when things just work? Последний раз редактировалось macklakov; 18.02.2014 в 09:46. |
|
18.02.2014, 10:16 | #9 |
Участник
|
|
|