Имя: Пароль:
1C
1С v8
Установка значения реквизита справочника в модуле объекта "ПриЗаписи"
0 elian_hunter
 
04.09.15
22:47
У справочника один реквизит типа булево.
В модуле объекта пишу обработчик:

Процедура ПриЗаписи(Отказ)
    
    Реквизит1 = Истина;
    
КонецПроцедуры

Если открыть форму объекта и нажать кнопку "Записать и закрыть" - эффекта никакого. То есть Реквизит1 остаетеся в значении "Ложь".

Но если на форме нажать кнопку "Записать", то всё работает как надо!

ЭТО ПОЧЕМУ ТАК?
Почему при записи объекта такой алгоритм не даёт эффекта?
1 Armando
 
04.09.15
22:53
Почитай описание, когда возникает событие "ПриЗаписи"
2 elian_hunter
 
04.09.15
23:02
(1) ну а кроме "умников" есть нормальные люди?
3 elian_hunter
 
04.09.15
23:03
(1) Событие возникает всегда. Отладчиком я ловлю отработку этой строки в любом случае, но в первом варианте это не даёт нужного эффекта.
4 Armando
 
04.09.15
23:03
5 elian_hunter
 
04.09.15
23:06
(4) вот теперь понял... спасибо
6 palsergeich
 
04.09.15
23:07
ПРИзаписи - Транзакция еще идет, Объект уже записан в ИБ. Изменять реквизиты объекта в ПРИЗаписи - бесполезно, он сделан для другого.
Если хотите изменять реквизит в транзакции - делайте это в событии перед записью. Тогда объект еще не записан.
7 elian_hunter
 
04.09.15
23:08
(6) Спасибо! Понял.
8 palsergeich
 
04.09.15
23:26
Немного теории, на будущее пригодится.
У вас его кусок памяти с которым вы работаете - объект.
Событие ПередЗаписью Начата транзакция Запись еще нет. Все изменения внесенные в объект запишутся.
Событие ПриЗаписи - Кусок памяти УЖЕ записан в ИБ. Вы можете внести изменения в кусок памяти , но в ИБ они не попадут, потому что запись уже состоялась. и этот кусок памяти после события ПриЗаписи будет уничтожен.
В ПриЗаписи единственное что можно сделать с объектом - откатить транзакцию (отказ = Истина), те отменить запись.
9 palsergeich
 
04.09.15
23:28
http://catalog.mista.ru/public/153748/ тут достаточно подробно все описано, рекомендую к прочтению.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.