03.11.2011, 15:39 | #1 |
Участник
|
SysSetupFormRun и ValidateWrite
Коллеги, возможно ли как-то в Аксапте реализовать универсальную валидацию сохранения записи для произвольной формы ?
Например, есть метод SysSetupFormRun.Task() с его можно ловить произвольное событие или нажатие комбинации клавиш. Есть SysSetupFormRun.selectControl() с его можно ловить получение фокуса произвольным элементом управления. Есть Info.formNotify() можно ловить события на форме. Я не нашел как можно было бы поймать вызов ValidateWrite на произвольном датасорсе любой формы. Возможно это сделать в Аксапте ? |
|
03.11.2011, 18:26 | #2 |
Участник
|
Теоретически вызов методов датасурсов Write и ValidateWrite может быть иницирован непостредственно из кода. Например часто Write принудительно дёргается из modifiedField. Т.е., вообще говоря, вызовы методов датасурса не обязаны быть связаны с событиями дизайна формы.
|
|
03.11.2011, 18:35 | #3 |
Участник
|
Не обязаны конечно.
Но и метод task() можно из кода дернуть и setFocus() на контроле из кода тоже можно дернуть, но тем не менее все эти методы есть на sysSetupformRun. Хотя, чего мы к нему (sysSetupformRun) привязались, может это можно как-то по другому сделать ? |
|
03.11.2011, 19:34 | #4 |
Участник
|
А как иначе, если говорить об универсальности?
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
04.11.2011, 00:11 | #5 |
Боец
|
А что, через task не ловится? Еще стоит заглянуть в форму sysTaskRecorder (AX2009) - функционал для автоматизации написания пользовательский инструкций (кстати, очень полезная вещь), отлавливает наверное любое телодвижение пользователя, вплоть до переходов по главному меню. Возможно, там что- то подходящее найдется.
|
|
|
За это сообщение автора поблагодарили: Pustik (2). |
04.11.2011, 19:55 | #6 |
Участник
|
Цитата:
|
|
|
За это сообщение автора поблагодарили: Logger (3). |
05.11.2011, 01:41 | #7 |
Участник
|
Да, все верно.
Я понимаю что для вызова ValidateWrite() нет соответсвующего task. Упомянул про task(), selectControl(), formNotify() чисто для примера. |
|
22.02.2013, 05:13 | #8 |
Участник
|
Аналогичный вопрос про метод Active() на датасорсе.
В принципе он решен, но обработчик на SysSetupFormRun всегда принимает один дефолтный датасорс. Непонятно как при вызове понять текущий датасорс, на котором дернулся Active(), если датасорсов несколько. |
|
25.02.2013, 08:20 | #9 |
Участник
|
На каждый DS цепляется отдельный active(). Все остальные DS цепляются к дефолтному в иерархической структуре.
__________________
// no comments |
|
25.02.2013, 13:54 | #10 |
Участник
|
|
|
25.02.2013, 17:11 | #11 |
Участник
|
Мда, засада... в голову приходит только анализ стека вызовов и сопоставление найденных там строк "*XX_DS\active" с названиями DS в дизайне формы, хотя это совсем какой-то извратный способ
|
|
|
За это сообщение автора поблагодарили: Logger (3). |
25.02.2013, 18:29 | #12 |
Участник
|
Изврат, да.
Но нас этим не испугаешь Спасибо за идею. |
|