![]() |
#1 |
Участник
|
![]()
Коллеги, возможно ли как-то в Аксапте реализовать универсальную валидацию сохранения записи для произвольной формы ?
Например, есть метод SysSetupFormRun.Task() с его можно ловить произвольное событие или нажатие комбинации клавиш. Есть SysSetupFormRun.selectControl() с его можно ловить получение фокуса произвольным элементом управления. Есть Info.formNotify() можно ловить события на форме. Я не нашел как можно было бы поймать вызов ValidateWrite на произвольном датасорсе любой формы. Возможно это сделать в Аксапте ? |
|
![]() |
#2 |
Участник
|
Теоретически вызов методов датасурсов Write и ValidateWrite может быть иницирован непостредственно из кода. Например часто Write принудительно дёргается из modifiedField. Т.е., вообще говоря, вызовы методов датасурса не обязаны быть связаны с событиями дизайна формы.
|
|
![]() |
#3 |
Участник
|
Не обязаны конечно.
Но и метод task() можно из кода дернуть и setFocus() на контроле из кода тоже можно дернуть, но тем не менее все эти методы есть на sysSetupformRun. Хотя, чего мы к нему (sysSetupformRun) привязались, может это можно как-то по другому сделать ? |
|
![]() |
#4 |
Участник
|
А как иначе, если говорить об универсальности?
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
![]() |
#5 |
Боец
|
А что, через task не ловится? Еще стоит заглянуть в форму sysTaskRecorder (AX2009) - функционал для автоматизации написания пользовательский инструкций (кстати, очень полезная вещь), отлавливает наверное любое телодвижение пользователя, вплоть до переходов по главному меню. Возможно, там что- то подходящее найдется.
|
|
|
За это сообщение автора поблагодарили: Pustik (2). |
![]() |
#6 |
Участник
|
Цитата:
|
|
|
За это сообщение автора поблагодарили: Logger (3). |
![]() |
#7 |
Участник
|
Да, все верно.
Я понимаю что для вызова ValidateWrite() нет соответсвующего task. Упомянул про task(), selectControl(), formNotify() чисто для примера. |
|
![]() |
#8 |
Участник
|
Аналогичный вопрос про метод Active() на датасорсе.
В принципе он решен, но обработчик на SysSetupFormRun всегда принимает один дефолтный датасорс. Непонятно как при вызове понять текущий датасорс, на котором дернулся Active(), если датасорсов несколько. |
|
![]() |
#9 |
Участник
|
На каждый DS цепляется отдельный active(). Все остальные DS цепляются к дефолтному в иерархической структуре.
__________________
// no comments |
|
![]() |
#10 |
Участник
|
|
|
![]() |
#11 |
Участник
|
Мда, засада... в голову приходит только анализ стека вызовов и сопоставление найденных там строк "*XX_DS\active" с названиями DS в дизайне формы, хотя это совсем какой-то извратный способ
![]() |
|
|
За это сообщение автора поблагодарили: Logger (3). |
![]() |
#12 |
Участник
|
Изврат, да.
Но нас этим не испугаешь ![]() Спасибо за идею. |
|