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