|
30.05.2014, 23:58 | #1 |
Участник
|
SysLookupMultiSelectCtrl и системные таблицы - глюк?
Создала на форме контрол, к нему привязала SysLookupMultiSelectCtrl
И ту обнаружилась волшебная вещь, что если в SysLookupMultiSelectCtrl передавать query, основанный на системной таблице (в моем случае dataArea) , то в списке полей Query обязательно должен быть RecId (и как следствие, к сожалению, он будет виден в динамически создаваемом лукапе). Только в этом случае при повторном открытии лукапа выбранные значения будут отмечены галочками. При этом, я пробовала добавлять RecId только в Range запроса по dataArea, а не списке полей (чтобы скрыть его из лукапа)- не помогает При этом, если query основан на нормальной таблице( попробовала с custTable ). то достаточно добавить в query лишь только те поля, которые нужны(т.е например, только CustAccount) Проблема в том, что в методе SysLookupMultiSelectGrid->getSelected() если RecId отсутствует в списке полей запроса по таблице dataArea, selectedId устанавливатся в 101090 для всех выбранных строк, для custTable приходит реальное значение RecId Есть идеи, как побороть проблему , т.е скрыть recId из лукапа по dataAreaId? |
|
31.05.2014, 23:53 | #2 |
Участник
|
Я бы обратился к дизайну lookup формы и у грида сделал поле невидимым.
Как-то так: X++: formRun.desing().ControlName('Grid').ControlNum(controlIdx).Visible(false); |
|
04.06.2014, 12:57 | #3 |
Участник
|
спасибо. так можно, но там немного все более заковыристо из SysLookupMultiSelectCtrl создается экземпляр SysLookupMultiSelectGrid, в котором уже динамически создаются колонки лукапа. поэтому можно добраться до его design тоже, но некрасиво получается(.
|
|
04.06.2014, 19:23 | #4 |
Дмитрий Ерин
|
Удивительно, но если создать View на основе DataArea, и уже на ней (на вьюшке) построить Query, то всё работает
__________________
|
|
|
За это сообщение автора поблагодарили: IKA (1). |
09.06.2014, 12:50 | #5 |
Участник
|
Гениально! Спасибище! Работает!
|
|
09.06.2014, 13:58 | #6 |
Участник
|
Скорее всего так происходит потому что на датасорсе включен свойстве FetchActive
т.е. движок отбирает из БД только видимые поля. Не пробовали отключить этой свойство ? Тогда аксапта будет отбирать все поля и recId будет отбираться как для обычных лукапов. |
|
|
За это сообщение автора поблагодарили: mau (1). |
09.06.2014, 19:22 | #7 |
Участник
|
На DS query FetchActive свойства нет, есть на формах. Вы предлагаете его динамически устанавливать(если такое вообще возможно)?
|
|
02.12.2014, 14:10 | #8 |
Британский учённый
|
Еще один способ это группировка по всем полям плюс RecId. На R2 работает.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
|
|