![]() |
#6 |
Участник
|
Цитата:
Сообщение от Gustav
Причем, когда я делаю подобное под своим логином, мне позволено добавлять и удалять эти "Складские проводки". И у меня слева на этих "Проводках" присутствует "стрелочка" - как знак ярлыка. У пользователя такой "стрелочки" нет, и при щелчке правой кнопкой у него отсутствует пункт "Удаление", а присутствют только пункты "1:n" и "n:1".
Подкачала реализация работы с queryRun в классе RAssetProposal Проблема в том, что форма SysQueryForm не может отделить датасоурсы, добавленные пользователем, от "оригинальных", т.е. добавленных в дизайне или программно. Если посмотреть метод Init() класса SysQueryEdit, то видно, что для выделения этих датасоурсов используется queryNextUniqueId = Query().nextUniqueId(). При этом Query() берется у текущего QueryRun, т.е. при загрузке из SysLastValue получится, что добавленные датасоурсы стали "оригинальными". Для того, чтобы эту ситуацию исправить, надо сохранить "оригинальный" запрос - а для этого необходимо использовать класс SysQueryRun (замечу, что в ClassDeclaration класса RAssetProposal queryRun определен как объект класса QueryRun, а при распаковке queryRun присваивается уже new SysQueryRun()). Что необходимо сделать в классе RAssetProposal 1. Переопределить в Class Declaration queryRun как SysQueryRun X++: SysQueryRun queryRun; X++: // поменять queryRun = new QueryRun(querystr(RassetTable)); // на queryRun = new SysQueryRun(querystr(RassetTable)); queryRun.origQueryPack(queryRun.query().pack()); X++: Query q; ; ... if (queryIsPackedOk(packedQuery)) { q = new Query(packedQuery); QueryRun.Query(q); } ...
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 22.06.2006 в 23:11. |
|
|
За это сообщение автора поблагодарили: NataLee (1), Lemming (2), Hammer (1). |