01.09.2006, 09:16 | #1 |
Участник
|
AddRange не фильтрует
Ситуация:
Есть отчет PurchVariancesVendorSPR (может, такое есть далеко не у всех), предназначен для анализа процента количественного исполнения заявок поставщиками. В связи с тем, что данные в этот отчет берутся из таблицы VendPurchOrderJour, а сами заявки хранятся в таблице PurchOrder, при отмене заявок поле статуса заявки в PurchOrder проставляется, а в VendPurchOrderJour - нет. В результате имеем отчет, в котором отмененные нашим предприятием заявки влияют на процент исполнения поставщиком, за счет чего ему назначаются штрафы. Может быть, журнал VendPurchOrderJour используется еще неким хитрым образом, поэтому я боюсь в нем ковыряться и проставлять отмену. Я хотел бы при составлении отчета пользоваться связью таблиц по полю идентификатора заявки и фильтровать заявки в зависимости от поля статуса заявки в таблице PurchOrder. Что, как понятно из заголовка, у меня почему-то не получается сделать. Код: public void init() { ... qbds = this.query().dataSourceTable(tableNum(VendPurchOrderJour)).addDataSource(tableNum(PurchTable)); qbds.addLink(fieldNum(VendPurchOrderJour, PurchId),fieldNum(PurchTable, PurchId)); qbr = qbds.addRange(fieldNum(PurchTable, PurchId)); qbr.value(SysQuery::valueNot(PurchStatus::Canceled)); ... } Дополнительные сведения: 1. Попытки фильтровать по полям таблицы VendPurchOrderJour, в отличие от приведенного кода, дают положительный результат. 2. В этом же методе есть код, написанный не мною, в работоспособности которого я уже начал сомневаться: ... qbds = this.query().dataSourceTable(tableNum(VendPurchOrderJour)).addDataSource(tableNum(UserRightsVend)); qbds.addLink(fieldNum(VendPurchOrderJour, OrderAccount), fieldNum(UserRightsVend, AccountNum)); qbr = qbds.addRange(fieldNum(UserRightsVend, UserId)); qbr.value(queryValue(curUserId())); qbr.status(QueryStatus::Hide); qbds.addRange(fieldNum(UserRightsVend, UserId)).value(queryValue(curUserId())); ... Резюме: HELPPP!!!! |
|
01.09.2006, 10:43 | #2 |
Участник
|
Цитата:
Сообщение от Ихъ бин программикеер
Ситуация:
qbr = qbds.addRange(fieldNum(PurchTable, PurchId)); qbr.value(SysQuery::valueNot(PurchStatus::Canceled)); |
|
01.09.2006, 11:38 | #3 |
Участник
|
Да не, на самом деле, ему пофигу. Я менял всякие способы фильтрации - исключение, перечисление и пр., и все равно не фильтрует. Т.е. я, к примеру, составлял код, который не должен ни одной записи выводить, а он все равно их выводит. Или код, который не должен выводить только определенные записи - тоже не работает. В том виде, который тут приведен, понятное дело, должны выводиться все записи, но если убрать SysQuery::valueNot(), то они все равно выводятся все, несмотря на то, что идентификаторов "Отмена", как вы понимаете, не существует....
В общем - почему-то просто НЕ РАБОТАЕТ фильтрация по внутреннему запросу (по крайней мере, в этом месте) и все тут... |
|
01.09.2006, 12:25 | #4 |
Участник
|
У вас есть еще подключенные датасоурсы к VendPurchOrderJour?
__________________
Axapta v.3.0 sp5 kr2 |
|
01.09.2006, 12:29 | #5 |
Участник
|
Конечно, есть. VendTable и VendPurchOrderTrans
|
|
01.09.2006, 12:36 | #6 |
Axapta
|
qbds.fetchMode(QueryFetchMode::One2One) случайно не спасет?
|
|
|
За это сообщение автора поблагодарили: Ихъ бин программикеер (1). |
01.09.2006, 14:27 | #7 |
Участник
|
На первый взгляд, замечательно работает благодарствую, oip!
|
|