Имя: Пароль:
1C
1С v8
Платформенная ошибка 1С, прошу проверить, подтвердить.
0 H A D G E H O G s
 
07.02.23
03:14
Дня доброго. 1С 8.3.20, SQL 2019, MDOP=1, флаг 1211 включен
Есть регистр, подчиненный регистратору, с Итогами среза последних и, допустим, одним измерением.
При попытке записи в него 2-х документов с одинаковым измерением, получаем конфликт блокировок при выполнении транзакции.
Естественно, когда Итоги выключены, ничего такого нет.
Пример вот
https://disk.yandex.ru/d/xk3N9YReFX0xcA

Нужно запустить 2 сеанса 1С, в первом запустить проведение "Установка цен номенклатуры 000000001", во 2-ом - второго документа, не позднее 30 секунд от первого. Естественно на SQL.

Предполагаемая причина: https://reefcentral.ru/forum/uploads/monthly_12_2021/post-9541-0-70123400-1638959533.jpg

Ну а серьезно, эти кедры воот таким запросом просто выпиливают все итоговые записи по набору измерений, но без установки отбора по периоду и регистратору. Поэтому накладывается блокировка на диапазон кластерного индекса по всему значению измерения


DELETE FROM T1
FROM dbo._InfoRgSL147 T1
INNER JOIN dbo._InfoRg143 T2
ON T2._Fld144RRef = T1._Fld144RRef
WHERE (T2._RecorderRRef = P1) AND (T2._Fld144RRef = T1._Fld144RRef)

Скорее всего, достаточно простой советской копеечной...

DELETE FROM T1
FROM dbo._InfoRgSL147 T1
INNER JOIN dbo._InfoRg143 T2
ON T2._Fld144RRef = T1._Fld144RRef

AND T2._Period= T1._Period
AND T2._RecorderRRef= T1._RecorderRRef

WHERE (T2._RecorderRRef = P1) AND (T2._Fld144RRef = T1._Fld144RRef)

но это не точно.

При попытке ручного удаления записей через НаборЗаписей с пересекающимися измерениями вообще можно словить deadlock, но я пока не понял почему, но лениво.

Пишите, жмите...
2 H A D G E H O G s
 
07.02.23
03:24
Хотя, я сейчас подумал, что я туплю. Ведь в итогах у нас все равно будет одна запись, по набору измерений регистра. И от конфликта блокировок никуда не деться, она просто переедет дальше, на запрос вставки в итоговую  таблицу нового значения.
3 mistеr
 
07.02.23
10:10
Конечно, ты тупишь.

Итог среза последних потенциально зависит от любой записи движений. В отличие, например, от итога оборотов.
Тут ничего не поделаешь.

P.S. Что за "отбор по регистратору" в итогах? :)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.