|
![]() |
#1 |
Боец
|
Приходилось решать такую задачу.
- Делаете View custTransDisputeView на базе Query, в которой линкуете custTrans и CustDispute по outerJoin. [У view будут поля CustTransRecId, Status] - В форму где нужен фильтр добавляете custTransDisputeView как дополнительный датасорс и джоините его с custTrans по innerJoin. [линкуете по полям CustTrans.RecId == custTransDisputeView.CustTransRecId]. Вот вкратце и всё. Последний раз редактировалось DSPIC; 02.10.2014 в 19:56. |
|
|
За это сообщение автора поблагодарили: Logger (3), IKA (1). |
![]() |
#2 |
Участник
|
Спасибище, попробую
|
|
![]() |
#3 |
Участник
|
А в случае outer join какое значение в аксаптовском View будет иметь поле Status для несуществующих строк CustDispute? Это будет значение по умолчанию соответствующего типа? Т.е. в случае enum (int) - это будет ноль? Тогда принципиально (ну и это на самом деле логично) чтобы custVendDisputeStatus::None имел именно такое значение. Так?
|
|
![]() |
#4 |
Боец
|
Да, скорее всего так и будет.
Цитата:
Вообще, в AX2012 появилась возможность во вьюхи добавлять вычисляемые поля. Таким образом, можно расширить поле статус, в зависимости от того, есть запись или нет - скажем [-1, 1, 0], а потом фильтровать по желанию. |
|
|
За это сообщение автора поблагодарили: AndyD (2). |
![]() |
#5 |
Участник
|
Цитата:
Можно использовать такую функцию на View X++: public static server str isNullExpression(str _expression) { return strFmt('COALESCE(T2.STATUS, %1)', int2str(CustVendDisputeStatus::None)); }
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
![]() |
#6 |
Участник
|
Цитата:
Сообщение от DSPIC
![]() Приходилось решать такую задачу.
- Делаете View custTransDisputeView на базе Query, в которой линкуете custTrans и CustDispute по outerJoin. [У view будут поля CustTransRecId, Status] - В форму где нужен фильтр добавляете custTransDisputeView как дополнительный датасорс и джоините его с custTrans по innerJoin. [линкуете по полям CustTrans.RecId == custTransDisputeView.CustTransRecId]. Вот вкратце и всё. А рейнж по Status точно преобразовывает значение 0 в NULL?
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#7 |
Участник
|
Цитата:
Сообщение от DSPIC
![]() Приходилось решать такую задачу.
- Делаете View custTransDisputeView на базе Query, в которой линкуете custTrans и CustDispute по outerJoin. [У view будут поля CustTransRecId, Status] - В форму где нужен фильтр добавляете custTransDisputeView как дополнительный датасорс и джоините его с custTrans по innerJoin. [линкуете по полям CustTrans.RecId == custTransDisputeView.CustTransRecId]. Вот вкратце и всё. Если этот VIew открыть, то оно отображает данные правильно. Но вот накладывать фильтр - по "Not disputed" (отображаемое значение, соответствующее Enum 0, т.е те строки View, где поля из custDispute отсутствуют) не позволяет. При этом, пробовала 0, null - тоже не получается, т.е возвращается просто пустая выборка. |
|
|
![]() |
||||
Тема | Ответов | |||
Добавить хитрый фильтр в Query | 5 | |||
Фильтр. Как сделать? | 9 | |||
Как сделать фильтр по группе пользователей? | 12 | |||
Как сделать хитрый лукап | 11 | |||
Как сделать фильтр с "ИЛИ"? | 8 |
|