Цитата:
Сообщение от
S.Kuskov
Ну как же? В оригинале вызов numberSeqFormHandler().formMethodDataSourceCreatePre() выполняется в самом начале метода Create(), т.е. до данных обработок. Другое дело, что это всего-лишь CreatePre, в котором по идее не должно быть критических операций.
По факту, вызов методов leaveRecord(), validateWrite(), write() для старой записи происходит внутри super() в методе create().
А это значит, что, с одной стороны, недопустимо в CreatePre() выполнять контроль факта завершения процесса сохранения записи (поскольку он просто еще не начался), а, с другой стороны, бессмысленно изменять значений флагов, которые как раз и устанавливаются внутри методов контроля и сохранения записи.
В результате, метод numberSeqFormHandler().formMethodDataSourceCreatePre() в существующем наполнении - не просто не имеет смысла (занимается не своим делом), но приводит к описанной проблеме.
Другими словами, вызов данного метода следует вообще исключить из процедуры create() на DataSource формы. В идеале,
удалить этот метод из класса NumberSeqFormHandler, поскольку в существующей реализации он вводит в заблуждение разработчика. Ведь по факту, этот метод выполняется не перед созданием новой записи, а перед сохранением текущей записи. Что совсем не одно и то же...
Хотя, конечно, есть вероятность того, что новое значение номерной серии было создано вне стандартного функционала создания записей. Например, через программный вызов. Но контролировать эту ситуацию в методе CreatePre() явно избыточно. Избыточный контроль, который добавляет проблем, а не решает их...