Имя: Пароль:
1C
 
КД - наложить упр.блокировку при выгрузке
0 kkar
 
22.03.18
15:28
Всем привет!
Есть следующая задача - нужно наложить упр.блокировку на выгружаемый документ в момент перед выгрузкой в ПКО, и снять ее после выгрузки.
Пишу в обработчике Перед выгрузкой ПКО:

НачатьТранзакцию();

Блокировка    = Новый БлокировкаДанных;
Элемент        = Блокировка.Добавить("Документ.МойДокумент");
Элемент.Режим    = РежимБлокировкиДанных.Разделяемый;
Элемент.УстановитьЗначение("Ссылка", Источник);
Блокировка.Заблокировать();


а в обработчике После выгрузки ПКО:

ЗафиксироватьТранзакцию();


Но блокировка не снимается до самого окончания работы обработки универсальной выгрузки-загрузки. Что не так или как по-другому решить эту задачу?
1 1sanekmaloi1
 
22.03.18
15:59
Потому что где-то ранее начата транзакция, и следовательно до ее окончания блокировка и висит.
2 kkar
 
22.03.18
16:06
(1) если бы где-то была начата транзакция, то моя строка ЗафиксироватьТранзакцию() должна была бы ее завершить

Да и отладчиком всю обработку прошел, нет других стартов транзакций.
3 1sanekmaloi1
 
22.03.18
16:15
(2)Кому она должна?
ИТС:

9.2.3. Вложенный вызов транзакций
В рамках уже выполняемой транзакции можно обращаться к процедурам НачатьТранзакцию(), ЗафиксироватьТранзакцию() и ОтменитьТранзакцию(). Например, может использоваться следующая схема вызовов:

НачатьТранзакцию();

    // Вложенный вызов транзакции
    НачатьТранзакцию();
    …
    ЗафиксироватьТранзакцию();

    // Вложенный вызов транзакции
    НачатьТранзакцию();
    …
    ЗафиксироватьТранзакцию();

ЗафиксироватьТранзакцию();
Однако подобное обращение не означает начала новой транзакции в рамках уже выполняющейся.
4 kkar
 
22.03.18
16:18
(3)Из ИТС: отмена изменений, выполняемая во вложенной транзакции, будет приводить в конечном счете не к отмене изменений самой вложенной транзакции, а к отмене всех изменений транзакции верхнего уровня. В то же время фиксация изменений, выполненная во вложенной транзакции, игнорируется.

А я что-то думал, что и фиксация во вложенной транзакции, зафиксирует и верхнюю транзакцию. Может, действительно тут и зарыта собака. Буду копать еще, спасибо.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс