Имя: Пароль:
1C
1С v8
Блокировка данных блокирует неправильно?
0 maxipunchik
 
03.02.21
06:20
Серверная база. Установил блокировку на регистр накопления с указанием отборов по номенклатуре и складу и остановил на точке после блокировки, в другом сеансе попытался провести документ с другой номенклатурой и другим складом, но документ не провелся, а завис, ожидая окончания проводки первого документа. Кто знает в чем может быть проблема, почему не провелся второй документ?

Вот код блокировки:

    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиТоваровНаскладах");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
    ЭлементБлокировки.УстановитьЗначение("Склад", СкладОтправитель);
    ЭлементБлокировки.ИсточникДанных = СписокМатериалов ;    
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Товар", "Номенклатура");
    Блокировка.Заблокировать();
1 ДенисЧ
 
03.02.21
06:25
Значит, не всё заблокировал. Есть ещё что-то
2 maxipunchik
 
03.02.21
06:37
(1) В каком смысле не всё? Мне больше и не надо. Наоборот идет избыточное блокирование как-будто
3 maxipunchik
 
03.02.21
06:44
Судя по отладке, во втором документе зависает на строке Блокировка.Заблокировать()
4 maxipunchik
 
03.02.21
06:59
Да, режим ставил и Исключительный и Разделяемый
5 maxipunchik
 
03.02.21
07:07
Пока сам себе отвечал, нашел ответ на свой вопрос. Проблема была в том, что вначале процедуры очищал движения запистю:
Движения.ОстаткиТоваровНаскладах.Записать();
6 maxipunchik
 
03.02.21
07:30
Поторопился, Всё равно блокирует весь регистр
7 TormozIT
 
гуру
03.02.21
07:42
Зачем гадать, когда можно посмотреть явно что блокируется?
http://devtool1c.ucoz.ru/_si/0/71400900.jpg
http://devtool1c.ucoz.ru/index/analiz_tekhnozhurnala/0-16
8 mikecool
 
03.02.21
08:07
(6) какой режим блокировки у регистра и у документа?
9 maxipunchik
 
03.02.21
08:10
В общем, это всё пробелы в теории и невнимательность. Дело в том, что я открывал уже проведенный документ со складом из первого дока, менял склад и перепроводил. При этом в коде очищались движения, а так как они были по старому складу, документ блокировался. Снял документы с проводок и повторил эксперимент, всё заблокировалось как надо.