17.09.2010, 20:38 | #1 |
Участник
|
Дыра в запрете редактирования шапок заказов на продажу/покупку
Стандартный подход к тому, как регулировать доступ к полям записи, состоит в том, чтобы на обработчик formDS.active() повесить некую логику, которая, скажем, будет управлять свойством formDS.allowEdit(). Примерно так же сделано в заказах на продажу и покупку, скажем, в SalesTable_DS.active() вызывается
X++: element.editSales(salesTableForm.editHeaderAllowed()); X++: void create(boolean append = true) { SalesTable newSalesTable; ; salesTableForm.interCompanyAutoCreateOrders(); element.editSales(true); if (salesTableForm.create()) { newSalesTable = SalesTable::find(salesTableForm.newSalesId()); if (newSalesTable) { super(append); salesTable.data(newSalesTable); salesTable_ds.reread(); tabLineOverview.setFocus(); } } else { element.editSales(salesTableForm.editHeaderAllowed(), salesTableForm.deleteHeaderAllowed()); } } Решение у проблемы весьма простое: нужно в create() перенести вызов element.editSales(true) внутрь if непосредственно перед super() и аналогично поступить с вызовом element.editPurch(true) в форме PurchTable. |
|
|
За это сообщение автора поблагодарили: mazzy (2), KiselevSA (2), Logger (3), aidsua (2), MikeR (2), Sergey Petrov (1). |
19.09.2010, 01:28 | #2 |
Гость
|
а что, service request в Microsoft автоматом с форума создается для исправления багов?
|
|
19.09.2010, 14:01 | #3 |
NavAx
|
Мы эту проблему решили просто - сделав окно создания заказа SalesCreateOrder немодальной с параметром TopMost. В результате, переключиться никуда не выйдет. Кстати, описанная проблема - не единичная, в кач-ве направления раскопок могу привести форму сопоставления платежей - там тоже есть дырка наподобие. Да и вообще, разработчики часто забывают о том, что текущее окно - м.б. не единственным в системе.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... |
|
19.09.2010, 14:21 | #4 |
Участник
|
Цитата:
|
|
20.09.2010, 11:21 | #5 |
NavAx
|
Цитата:
Т.е. вы решили закрыть дыру за счет того, что форма создания заказа закрывает собой другие формы? А если у меня монитор с очень большим разрешением, и я могу просто сдвинуть форму создания заказа вбок, чтоб ничего не заслоняла?
Ключевое слово - "модальное". Т.е. фокус с него переместить на другое окно невозможно (за исключением окон, открытых уже после текущего). Не знаю, будет ли работать в 2009, думаю, если аккуратно написать, то будет. Впрочем, согласен, это в общем случае - не выход, надо править сам функционал. Но как решение для конкретной местной проблемы, не требующее много ресурсов - вполне пригодно.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... Последний раз редактировалось Maximin; 20.09.2010 в 12:41. |
|
20.09.2010, 12:20 | #6 |
Microsoft Dynamics
|
Всю жизнь считал, что с модального окна нельзя увести фокус... А тут вот как оказывается...
|
|
20.09.2010, 12:40 | #7 |
NavAx
|
Уел , сейчас исправлю, писал одно - думал другое.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... |
|
Теги |
баг, заказ на покупку, заказ на продажу, ошибка, форма |
|
|