Управляемые блокировки. Не работают.

1. alexmobile 69 07.03.17 08:24 Сейчас в теме
Есть оборотный регистр - рег1.
Есть документ который пишет в этот регистр свою табличную часть - тч1

В процедуре припроведении добавил код:
Движения.Рег1.Записывать = Истина;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = "РегистрНакопления.рег1";
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = тч1;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Объект", "Объект");
Блокировка.Заблокировать();


При проведении Ставлю точку останова после Блокировка.Заблокировать();, Провожу док1. Останавливаюсь на точке.
В параллельной сесии провожу док2. Объекты в табличной части различны.

Получаю сообщение:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 11.0: Превышено время ожидания запроса на блокировку.
HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, state=33, Severity=10, native=1222, line=1
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. kolya_tlt 86 07.03.17 08:32 Сейчас в теме
(1) вы накладываете блокировку в сервере 1С, ошибка вам пишет про блокировку СУБД. по этому сообщению можно было догадаться что дело НЕ в том коде который вы написали. конфликт в другом объекте
4. alexmobile 69 07.03.17 08:36 Сейчас в теме
Можно подробнее. Не понимаю.(3)
5. alexmobile 69 07.03.17 08:39 Сейчас в теме
(3) Как решить-то проблему?
8. kolya_tlt 86 07.03.17 09:03 Сейчас в теме
(5) у вас проблема в другом регистре. можете полностью закомментировать ваш код и убедиться.
9. alexmobile 69 07.03.17 09:24 Сейчас в теме
(8) Если в регистр ничего не пишу, то параллельный документ проводится.
11. kolya_tlt 86 07.03.17 09:37 Сейчас в теме
(9) и что? вы можете блокировать мух, а записывать в регистр слонов.
12. alexmobile 69 07.03.17 09:39 Сейчас в теме
(11) Документ делает движения только по одному регистру.
6. spacecraft 07.03.17 08:39 Сейчас в теме
(1) а в свойствах регистра и документа указана автоматическая блокировка?
7. alexmobile 69 07.03.17 08:40 Сейчас в теме
10. spacecraft 07.03.17 09:33 Сейчас в теме
(1)
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Объект", "Объект");

У регистра есть измерение Объект?
В тч есть колонка Объект?
13. alexmobile 69 07.03.17 09:40 Сейчас в теме
16. spacecraft 07.03.17 09:53 Сейчас в теме
(13) не очень оптимальные имена для измерения и колонки ТЧ.
Тогда вместо приведенного кода попробуйте этот:
// предварительно подготовить движения
Движения.Рег1.БлокироватьДляИзменения = Истина;
Движения.Рег1.Записать();

Тоже есть блокировка?
17. kolya_tlt 86 07.03.17 10:57 Сейчас в теме
(16) вы вообще понимаете что написали?
18. spacecraft 07.03.17 15:04 Сейчас в теме
(17) конечно понимаю. На всякий случай, жду сообщение об ошибке :)
19. kolya_tlt 86 07.03.17 17:39 Сейчас в теме
(18) 1. флаг БлокироватьДляИзменения тут вообще не при делах
2. что вы хоть записали в регистр методом Записать() ?

ps вы в курсе что при записи накладываются блокировки или пишете код наугад? :)
20. spacecraft 07.03.17 17:56 Сейчас в теме
(19) я конечно понимаю, что без подробного объяснения цепочки рассуждения можно не понять результат...
Так вот, просто хочу удостовериться, что блокировка регистра не автоматическая. При выполнении приведенного кода для автоматической блокировки выбросит исключение.
Не стоит осуждать не зная всех данных.
21. kolya_tlt 86 07.03.17 18:00 Сейчас в теме
14. kolya_tlt 86 07.03.17 09:41 Сейчас в теме
(10) будем надеяться, что у ТС крайняя версия платформы, которая выплёвывает ошибку, если блокировка задана не верно
2. alexmobile 69 07.03.17 08:27 Сейчас в теме
Измерений у ресурса несколько. Ставлю блокировку не по всем.
15. kolya_tlt 86 07.03.17 09:47 Сейчас в теме
без полного текста кода и полного описания метаданных тут можно долго гадать на кофейной гуще
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот