Автор Тема: Вопрос по блокировке  (Прочитано 1523 раз)

0 Пользователей и 1 Гость просматривают эту тему.

GloryToGod

  • Пользователь
  • **
  • Сообщений: 15
Вопрос по блокировке
« : Сентябрь 05, 2016, 06:54:09 pm »
Делаю движения:

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

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

Ставлю точку останова после Записать(истина). То есть транзакция еще не закончилась и регистр заблокирован. Под другим сеансом  запускаю запрос по остаткам на ОстаткиТоваров  в ТРАНЗАКЦИИ по ВСЕМ измерениям и периодам. Блокировки нет.

НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |    ОстаткиТоваровОстатки.Склад,
        |    ОстаткиТоваровОстатки.Номенклатура,
        |    ОстаткиТоваровОстатки.КоличествоОстаток
        |ИЗ
        |    РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки"
    );
    Запрос.Выполнить();
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "work!";
    Сообщение.Сообщить();
    ЗафиксироватьТранзакцию();

Блокировка также не происходит, если перепровожу другой документ такого же типа с такими же значениями полей наборов данных движений.

Так и должно быть?  СУБД MSSQL 2005. 1c 8.3