Здравствуйте. Имеется простая задачка — нужно при записи в форме проверить, какие меняются допреквизиты, и, в некоторых случаях, выставлять Отказ.
Эта проверка делается в обработчике ПередЗаписьюНаСервере, и, если не пользоваться расширениями, то проблем нет.
Однако если использовать расширение конфигурации, возникает трудность.
Если я свой обработчик размещу Перед, то в табличную часть ДополнительныеРеквизиты ТекущегоОбъекта почему-то не попадают новые значения из формы.
А если я обработчик размещу После, то возникает проблема с изменением параметра Отказ. Его можно менять только если разместить Перед.
Ясно, что можно в ПараметрыЗаписи запихнуть информацию и Отказ выставить в ПередЗаписью модуля объекта. Но это кривой вариант.
Как можно сделать правильно и красиво? И почему всё же Перед обработчиком не заполнена табличная часть Допреквизиты объекта?
(3) Кривой это вариант потому что мы начинаем транзакцию записи и уже внутри неё ставим отказ. А зачем вообще начинать транзакцию, ставить блокировки, если мы уже сразу знаем, что Отказ = Истина?
Нашёл решение.
ПередЗаписьюНаСервереПеред - не подходит, ТЧ ТекущегоОбъекта ещё не заполнена
ПередЗаписьюНаСервереПосле - не подходит, нельзя изменять параметр Отказ
&После("ПередЗаписьюНаСервере")
Процедура Расш1_ПередЗаписьюНаСервере - то, что надо. И ТЧ заполнена, и Отказ менять можно.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший