Имя: Пароль:
1C
1С v8
Отказ=Истина откатывает модификации в независимом регистре
0 AvlChe
 
13.05.20
12:33
Добрый день! Не подскажет кто-нибудь, а то уже всю голову сломал:
Есть независимый, непериодический регистр сведений. Документ при проведении модифицирует запись в нём. При Отказ=Истина модификации, сделанные документом, откатываются. Почему?
Буквально вот такой код:


Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    
    Запись = РегистрыСведений.артДанныеОПроведенииДокументов.СоздатьМенеджерЗаписи();
    Запись.Объект = Ссылка;
    Запись.Прочитать();
    
    Запись.ДатаПервойПопыткиПроведения      = ТекущаяДата();
    Запись.ПервыйКтоПыталсяПровестиДокумент = ПараметрыСеанса.ТекущийПользователь;
    
    Запись.Записать(Истина);
    
    
    Отказ = Истина;
    
КонецПроцедуры


Ставлю брейкпоинт на строчке "Отказ = Истина", смотрю в регистр: "ПервыйКтоПыталсяПровестиДокумент" - заполнен. После выхода из процедуры - опять не заполнен! Изменения - откатились. Регистр - независимый. Что за чушь?
1 ДенисЧ
 
13.05.20
12:34
Потому что транзакция откатывается. А с ней и все изменения, сделанные в БД.
2 AvlChe
 
13.05.20
12:37
Круто. А обойти это можно как-нибудь? В отдельную транакцию завернуть код этот, или как?
3 AvlChe
 
13.05.20
12:39
(1) Событий, связанных с записью, но происходящих до начала транзакции, нет никаких?
4 Галахад
 
гуру
13.05.20
12:44
(2) Запусти фоновое задание.
5 runoff_runoff
 
13.05.20
12:45
ПослеЗаписи
6 AvlChe
 
13.05.20
12:48
(5) ПослеЗаписи - событие формы. У объектов его нет.
7 AvlChe
 
13.05.20
12:49
(4) Отлично, попробую.
8 mistеr
 
13.05.20
13:09
(2) Для аудита действий пользователей есть ЖР. Туда пишется вне транзакции.
9 fisher
 
13.05.20
13:15
Фоновыми заданиями по каждой записи - как-то сурово.
Я бы в ЖР писал. А если нужно в БД - тогда отдельным бы регламентом переносил из ЖР в регистр.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.