|
08.12.2023, 14:24 | #1 |
Участник
|
Закрыть окно диалога из Validate
dax2012
Функционал на основе RunBase или SysOperation предполагает, что если Validate() вернет false, то происходит возврат в форму диалога Есть ли штатная возможность не вернуться в диалог, а отменить дальнейшую работу? Симулировать нажатие кнопки "Отмена" Т.е. при проверке в validate() обнаружили ошибку, которую невозможно исправить изменяя реквизиты на форме диалога. Нет смысла возвращаться в окно диалога. Надо отменить обработку. PS: Для простоты, считаем, что программного вызова этой функции нет. Всегда только вызов вручную через диалог
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
08.12.2023, 14:29 | #2 |
Участник
|
Не делайте проверки в validate, которые не относятся к вводимым параметрам. Проверки корректности других данных перенесите в метод check, который вызовите в run
|
|
08.12.2023, 14:51 | #3 |
Участник
|
Давайте будем считать, что все проверки зависят от вводимых реквизитов
Т.е. нельзя разделить проверки на безусловные и зависящие от введенных реквизитов. Ну, или по каким-то причинам желательно делать все проверки именно в validate()
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
08.12.2023, 15:28 | #4 |
Участник
|
в validate есть параметр тот самый FormRun
|
|
|
За это сообщение автора поблагодарили: Владимир Максимов (5). |
08.12.2023, 16:18 | #5 |
Участник
|
Да, спасибо. Про параметр я забыл.
Но параметр - это для RunBase. А для SysOperation как?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
08.12.2023, 17:37 | #6 |
Участник
|
throw error?
|
|
08.12.2023, 22:27 | #7 |
Участник
|
Не работает. Т.е. validate(), конечно, прерывается. Но окно диалога не закрывается
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
10.12.2023, 13:43 | #8 |
Участник
|
Не знаю помогу ли как-то, но есть метод checkCloseDialog() быть может тут его использовать взамен validate
|
|
13.12.2023, 10:16 | #9 |
Участник
|
Цитата:
X++: this.getFromDialog();
ret = this.validate();
return ret; Пока сделал "костыль" 1. В самом контракте данных добавил метод parmIsBreak() 2. В методе validate() контракта данных X++: if (...) { this.parmIsBreak(true); } При этом сам validate() возвращает true, чтобы закрыть окно диалога 3. В стартовом методе SysOperation X++: if (!this.validate || _contract.parmIsBreak()) { return; }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: Player1 (1). |
08.12.2023, 20:50 | #10 |
Участник
|
SysOperationDialog.close() ?
|
|
08.12.2023, 22:22 | #11 |
Участник
|
Из метода validate() контракта данных? Как?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
Теги |
runbase, sysoperation framework, validate |
|
|