Есть форма, на ней есть поле, в кот человек пишет значение, аксапта должна отформатировать значение и оставить уже отформатированное в этом поле.
Функция F, которая форматирует и возвращает отформатированную строку при некоторых условиях выкидывает ошибку.
Вызов F происходит на modified контрола формы.
Но, не смотря на ошибку, значение остается в поле и пользователь может сохранить по Ctrl+F неверное значение.
То есть, упрощенно, происходит то, что после выполнения кода, например, приведенного ниже, можно нажать кнопку Save и сохранится Table1.A = '22'. Такой же эффект, если modified на поле на DS формы.
X++:
public boolean modified() // modified контрола , привязанного к Table1.A
{
boolean ret;
;
Table1.A = '22';
throw error('tratata');
ret = super();
return ret;
}
Как это обойти? Понятно, что лучше :
1) переприсваивать значение на modifiedField таблицы,но на форме уже есть код на этом контроле и лучше пересчет вставить именно сюда.
2) лучше отдельно вызывать проверки в validate (до modified), но код класса вызывается из нескольких мест + в общем случае на modified могут же выбрасываться ошибки и хотелось бы узнать, как их обрабатывать.
Получается достигнуть желаемого(= не дать ввести и, уж тем более,сохранить запись с неправильным значением), написав try/catch в modified(), но это как-то не оч стандартный подход.
Как в идеале нужно решать подобную задачу?
AX2009