|  25.06.2008, 20:02 | #1 | 
| Участник | edit-методы и validateWrite() на DataSource 
			
			Исходная ситуация: есть таблица (не временная, хотя это не важно), есть форма с grid'ом по этой таблице, и на grid'е есть некоторые поля, представленные edit-методами и к записи таблицы не имеющие непосредственного отношения, т.е. значения, меняемые edit-методами, живут исключительно на форме и к таблице в БД никак не относятся. Также есть перекрытый на DS метод validateWrite(), который проверяет какие-то взаимосвязи между данными, введенными через эти edit-методы. Вариант 1) ни одного поля в grid'е не меняется, нажимается Ctrl-S - метод DS.validateWrite() при этом вызывается. Вариант 2) ни одного табличного поля в grid'е не меняется, но при этом меняются значения полей, представленные edit-методами. Вместо Ctrl-S происходит переход на другую запись с помощью клавиш «стрелка вверх», «стрелка вниз». Метод DS.validateWrite() при этом не вызывается. Внимание, вопрос: правильно ли это? Вопрос 2: если это правильно, то как мне проверять корректность введенных данных для комбинации edit-полей, если поля самой записи не менялись? Потому что ни validateWrite(), ни write() в такой ситуации не вызывается  Проверялось на AX 3.0 KR3 | 
|  | 
|  25.06.2008, 20:15 | #2 | 
| Участник | 
			
			Предварительно остановился на методах prev()/prevPage(), next(), nextPage()
		 | 
|  | 
|  26.06.2008, 11:40 | #3 | 
| Участник | 
			
			Окончательно остановился на методе DataSource.leave()    | 
|  | 
|  30.06.2008, 10:33 | #4 | 
| Administrator | 
			
			А если вызвать DataSource.forceWrite(true) из edit-методов, validateWrite() тоже не вызывается?
		 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | |
| За это сообщение автора поблагодарили: gl00mie (5). | |
|  30.06.2008, 14:46 | #5 | 
| Участник | 
			
			В моем случае дергать validateWrite() в вызове каждого edit-метода не совсем корректно. К примеру, ставится некий крыж, в результате чего определенное поле становится обязательным к заполнению. Кричать, что оно не заполнено, сразу после установки крыжа (опосредованно дергая validateWrite() в edit-методе) imho некорректно - об этом надо заявить лишь в момент, когда по тем или иным причинам сохраняется запись.
		 | 
|  | 
|  30.06.2008, 16:47 | #6 | 
| Administrator | 
			
			Так я и не предлагаю validateWrite() вызывать из каждого edit-метода. Просто в вашем edit-методе поставьте forceWrite(true), если set = true. Тогда, когда придет время сохранять запись (а это, кстати, не только leave(), но и, например, Ctrl+S или нажатие на кнопку, у которой SaveRecord = Yes), вызовется validateWrite() и write(), даже если поля записи не были изменены. Например: X++: edit String30 myEditMethod(boolean _set, MyTable _myTable, String30 _value) { if (_set) { ... MyTable_ds.forceWrite(true); } return ...; } 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me Последний раз редактировалось Maxim Gorbunov; 30.06.2008 в 16:51. | 
|  | |
| За это сообщение автора поблагодарили: aidsua (1). | |
|  30.06.2008, 17:50 | #7 | 
| Участник | |
|  |