0
kkar
22.03.18
✎
15:28
|
Всем привет!
Есть следующая задача - нужно наложить упр.блокировку на выгружаемый документ в момент перед выгрузкой в ПКО, и снять ее после выгрузки.
Пишу в обработчике Перед выгрузкой ПКО:
НачатьТранзакцию();
Блокировка = Новый БлокировкаДанных;
Элемент = Блокировка.Добавить("Документ.МойДокумент");
Элемент.Режим = РежимБлокировкиДанных.Разделяемый;
Элемент.УстановитьЗначение("Ссылка", Источник);
Блокировка.Заблокировать();
а в обработчике После выгрузки ПКО:
ЗафиксироватьТранзакцию();
Но блокировка не снимается до самого окончания работы обработки универсальной выгрузки-загрузки. Что не так или как по-другому решить эту задачу?
|
|
3
1sanekmaloi1
22.03.18
✎
16:15
|
(2)Кому она должна?
ИТС:
9.2.3. Вложенный вызов транзакций
В рамках уже выполняемой транзакции можно обращаться к процедурам НачатьТранзакцию(), ЗафиксироватьТранзакцию() и ОтменитьТранзакцию(). Например, может использоваться следующая схема вызовов:
НачатьТранзакцию();
…
// Вложенный вызов транзакции
НачатьТранзакцию();
…
ЗафиксироватьТранзакцию();
…
// Вложенный вызов транзакции
НачатьТранзакцию();
…
ЗафиксироватьТранзакцию();
…
ЗафиксироватьТранзакцию();
Однако подобное обращение не означает начала новой транзакции в рамках уже выполняющейся.
|
|
4
kkar
22.03.18
✎
16:18
|
(3)Из ИТС: отмена изменений, выполняемая во вложенной транзакции, будет приводить в конечном счете не к отмене изменений самой вложенной транзакции, а к отмене всех изменений транзакции верхнего уровня. В то же время фиксация изменений, выполненная во вложенной транзакции, игнорируется.
А я что-то думал, что и фиксация во вложенной транзакции, зафиксирует и верхнюю транзакцию. Может, действительно тут и зарыта собака. Буду копать еще, спасибо.
|
|