Имя: Пароль:
1C
1С v8
Передача ссылки в фоновое задание в транзации
0 N-S-B
 
13.12.18
15:10
В транзакции создается два документа, каждый, после создания, отправляется в фоновое задание на проведение. Почему-то от первого в фоновое задание приходит вместо ссылки <Объект не найден>, второй документ приходит нормально.
В чем может быть проблема, куда копать?
Отправляю так:

Процедура ПровестиФоново(ДокументОбъект)
    
    МассивДокумент = Новый Массив;
    МассивДокумент.Добавить(Новый Структура("Документ", ДокументОбъект.Ссылка));
    ФоновыеЗадания.Выполнить("НСБ_ОбщегоНазначения.ПровестиДокументВФоне", МассивДокумент);    
    
КонецПроцедуры
1 N-S-B
 
13.12.18
15:13
(0) Документ, естественно, перед этим записывается. И перед отправкой в фоновое ссылка есть.
2 бомболюк
 
13.12.18
15:16
Фоновое задание работает в контексте другого сеанса. Поэтому имеет смысл перед отправкой ссылки закоммитить транзакцию.
3 N-S-B
 
13.12.18
15:19
(2) Поэтому и странно, что второй то документ нормально приходит в фоновое.
4 H A D G E H O G s
 
13.12.18
15:20
(3) Успевает записаться
5 N-S-B
 
13.12.18
15:23
(4) Так и первый успевает, я же ссылку на записанный документ отправляю в фоновое, а не объект.
Даже точку останова поставил, выждал минуту, в фоновом битая ссылка пришла.
6 N-S-B
 
13.12.18
15:26
Что еще интересней, во втором документе есть ссылка на первый. И когда второй документ приходит в фоновое, там активна эта ссылка на первый документ.
7 H A D G E H O G s
 
13.12.18
15:29
(5) Документ записался, а транзакция не зафиксировалась
8 N-S-B
 
13.12.18
15:40
(7) Да, действительно) После отправки второго документа фиксируется транзакция и, пока ссылка передается в фоновое, она успевает зафиксироваться
9 mikecool
 
13.12.18
16:21
(8) ПолучитьСсылкуНового может поможет
10 Eiffil123
 
13.12.18
16:50
(9) в фоновом задании проведение идет. Тут получить ссылку нового не зачем, если документа нет в базе данных (он не проведется всё равно)