Вход | Регистрация



Вопрос про управляемую блокировку

Вопрос про управляемую блокировку
Я
   GurinDoku
 
05.09.16 - 18:30
Делаю движения:

Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
Движение.Количество = ТекСтрокаТовары.Количество;

Движения.ОстаткиТоваров.БлокироватьДляИзменения = Истина;
Движения.ОстаткиТоваров.Записывать = Истина;
Движения.ОстаткиТоваров.Записать(Истина);

Ставлю точку останова после Записать(истина). То есть транзакция еще не закончилась и регистр заблокирован. Под другим сеансом через консоль запросов запускаю запрос по остаткам на ОстаткиТоваров по ВСЕМ измерениям и периодам. Блокировки нет. Так и должно быть?  СУБД MSSQL 2005. 1c 8.3
 
 
   GurinDoku
 
1 - 05.09.16 - 18:34
Если перепровожу другой документ с такими же значениями ключевых полей регистров, то блокировка срабатывает.
   kinsm
 
2 - 05.09.16 - 18:35
Да. Значит запрос выполняется вне транзакции
   GurinDoku
 
3 - 05.09.16 - 18:41
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |    ОстаткиТоваровОстатки.Склад,
        |    ОстаткиТоваровОстатки.Номенклатура,
        |    ОстаткиТоваровОстатки.КоличествоОстаток
        |ИЗ
        |    РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки"
    );
    Запрос.Выполнить();
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "work!";
    Сообщение.Сообщить();
    ЗафиксироватьТранзакцию();
   GurinDoku
 
4 - 05.09.16 - 18:42
Ошибся. Когда параллельно провожу документ с такими же значениями свойств регистров, то блокировки НЕТ!!
   GurinDoku
 
5 - 05.09.16 - 18:44
Даже если запускаю запрос под транзакцией, то блокировки все равно не происходит. Блокировка также не происходит, если пытаюсь перепровести документ такого же типа и с такими же записываемыми движениями....
   GurinDoku
 
6 - 05.09.16 - 18:48
Разделение итогов по регистру включено. Режим блокировок "Управляемая" и у документа и регистра...
   xafavute
 
7 - 05.09.16 - 18:52
это блокировка на запись, а не на чтение
   saaken
 
8 - 05.09.16 - 18:52
(0) так и должно быть
   GurinDoku
 
9 - 05.09.16 - 18:57
(7) Я и записываю. То есть блокировка не работает ни на чтение, ни на запись.
   GurinDoku
 
10 - 05.09.16 - 19:02
Запускаю первый документ, перепровожу и останавливаюсь на точке останова после "Записать". Затем под другим пользователем запускаю на перепроведение другой документ с такими же значениями полей набора записей движений. Блокировки нет. Такая ситуация именно когда использую "БлокироватьДляИзменения". При использовании явной блокировки через объект "блокировка данных", блокировка срабатывает! Также блокировка срабатывает после записи набора, если использовать "Автоматический" режим блокировки, но только когда я ПЕРЕПРОВОЖУ документ. На чтение в автоматическом варианте блокировки при выполнении запроса как в транзакции, так и без нее блокировка не происходит.
 
 Рекламное место пустует
   H A D G E H O G s
 
11 - 05.09.16 - 19:02
а в свойствах самой конфы?
   H A D G E H O G s
 
12 - 05.09.16 - 19:07
фух, вспомнил.
Когда перепроводишь первый док - измени его ТЧ.
   H A D G E H O G s
 
13 - 05.09.16 - 19:07
или проводи его из непроведенного состояния. Короче, записи в регистре должны поменяться.
   GurinDoku
 
14 - 05.09.16 - 19:12
В свойствах конфы "Автоматическая и управляемый"
   GurinDoku
 
15 - 05.09.16 - 19:12
(13) Все равно не работает....
   H A D G E H O G s
 
16 - 05.09.16 - 19:16
(15) Скинь конфу или постучись в скайп
   H A D G E H O G s
 
17 - 05.09.16 - 19:16
vasiliy--ivanovich
   GurinDoku
 
18 - 05.09.16 - 19:16
Если у кого будет время, посмотрите:
https://yadi.sk/d/h_Jj3KhyuoWY3
Документ "Приходная накладная", ОбработкаПроведения.
   H A D G E H O G s
 
19 - 05.09.16 - 19:21
Все блокируется.
   Tateossian
 
20 - 05.09.16 - 19:22
(0) А зачем вот это:

Движения.ОстаткиТоваров.Записывать = Истина;

???
   H A D G E H O G s
 
21 - 05.09.16 - 19:24
Нормальная SQL блокировка вылетает. Ибо clastered index scan на запросе всех остатков.
   Tateossian
 
22 - 05.09.16 - 19:27
(10) Поставь точку останова в модуле набора записей.
   H A D G E H O G s
 
23 - 05.09.16 - 19:27
   GurinDoku
 
24 - 05.09.16 - 19:28
(19) Если я провожу первый документ, ставлю точку останова после записи, то если начну проводить второй документ, то он должен "подвиснуть" пока я выйду из отладки в первом документе (первой транзакции) ? (20) От безысходности....
   H A D G E H O G s
 
25 - 05.09.16 - 19:28
(24) Да. Так и есть. 20 секунд висит (по дефолту), потом (23)
   GurinDoku
 
26 - 05.09.16 - 19:45
(25) Спасибо большое. Буду копаться, смотреть... У товарища попробую запустить.
   H A D G E H O G s
 
27 - 05.09.16 - 20:26
Скорее всего у тебя стоит snapshot.
Он даст прочитать остатки.
Чтобы вызвать блокировку, в первом сеансе открой 2 документ , измени количество, и остановись после Движения.ОстаткиТоваров.Записать(Истина);

Во втором сеансе открой 3 документ, выбери тот же склад и номенклатуру, установи галочку "ОУ" и будет тебе управляемая блокировка.
   disvix
 
28 - 05.09.16 - 20:28
включен режим разделения итогов, в таблицу итогов добавляется еще одно поле "Разделитель" , данные пишутся параллельно/
   H A D G E H O G s
 
29 - 05.09.16 - 20:36
(28) выключен
   H A D G E H O G s
 
30 - 05.09.16 - 20:37
БлокироватьДляИзменения=истина выключает разделение


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует