Имя: Пароль:
1C
1С v8
Блокировка документов при работе обработки
,
0 Wefast
 
08.10.19
13:21
Есть обработка которая создает документы пачкой.
Мне нужно что бы последовательность этих документов не была нарушена, если к примеру кто то еще запустит эту обработку.

Т.е. по факту мне нужно запретить пользователям только создавать новые документы

Пишу:

    НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);    
    
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("Документ.КА_НарядНаСдельнуюРаботу");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    Блокировка.Заблокировать();
    
    Для каждого СтрокаТехОперции из КакаяТаблица цикл
    
    
    КонецЦикла;
    
    Попытка
        ЗафиксироватьТранзакцию();
    Исключение
        ОтменитьТранзакцию();
    КонецПопытки;
1 Wefast
 
08.10.19
13:21
В цикле я создаю документ
2 Wefast
 
08.10.19
13:23
В итоге не работает блокировка, и документы создаются не через 1 к примеру. А идет часть документов первой обработки. Потом часть(почти все) второй обработки, потом опять первой и в какой то момент еще 1 второй обработки где то вклинивается
3 Мимохожий Однако
 
08.10.19
13:26
Запрети запуск второго экземпляра обработки.
4 Wefast
 
08.10.19
13:26
да база серверная
5 Wefast
 
08.10.19
13:27
(3) и как это отследить?
6 Tonik992
 
08.10.19
13:29
Блокировку поставь на диапозон даты.
7 H A D G E H O G s
 
08.10.19
13:29
(5) Служебный справочник с предопределенными элементами на все случаи жизни, например

Справочник.АСФОбъектыВариантовОбменаДляБлокировки

и элементы:

ОбменСWMS
ОбменСOmobus

И при начале обработки

Попытка
ЗаблокироватьДанныеДляРедактирования(Ссылка);
Исключение
КонецПопытки
8 Мимохожий Однако
 
08.10.19
13:29
(5) Лобовой вариант: при открытии или запуске проверять наличие запущенного фонового задания.
9 H A D G E H O G s
 
08.10.19
13:31
В Исключении тебе даже покажет пользователя, который уже работает с обработкой


Но вообще, странно, что блокировка не срабатывает.
10 Wefast
 
08.10.19
13:38
Да кажется я не там ее вызвал. Да, спасибо за варианты