Есть:
1. 1С SQL 7.70.0.25.
2. Microsoft SQL Server 2000 - 8.00.2055 (Intel X86).
3. В процесе разработки собственного механизма блокировок возникла следующая проблемма. Необходимо при проведении документа который участвует в бух. учете (формирует бух. операции, проводки) разработать механизм исключающий взаимоблокировки.
При проведении документа, при вызове метода
Операция.Записать();
выполняется одна из хран. процедур, а именно "_1sp__1SBKTTLC_ChangeTotal".
В тексте данной процедуры есть
...
Update _1SBKTTLC
set
OB1=OB1+@Ob1,
OB2=OB2+@Ob2,
OB3=OB3+@Ob3,
DTFLAGS=@DtFlags,
KTFLAGS=@KtFlags
where
DATE=@Date and KIND=@Kind and ACCKTID=@AccKtId and ACCDTID=@AccDtId and CURRID=@CurId
...
.
4. Вопрос(ы):
1. Почему при выполнении даной процедуры с параметрами
@Date = Дат1;
@Kind = Вид1;
@AccKtId = СчК1
@AccDtId = СчД1
@CurId = Вал1
следующим запросом
SET LOCK_TIMEOUT 500
DECLARE @РезБло smallint
SELECT @РезБло = 1
FROM _1SBKTTLC AS ТабБло WITH (INDEX(PK__1SBKTTLC), ROWLOCK, XLOCK)
WHERE
(ТабБло.DATE = Дат1) AND (ТабБло.ACCDTID = СчД3) AND (ТабБло.ACCKTID = СчК4)
я не могу наложить необходимую блокировку?
2. Как решить даную задачу?
Спасибо.