|
Правильно ли сделан код на Блокировку регистра Б24_ТаблицаИзменений? | ☑ | ||
---|---|---|---|---|
0
ИС-2
naïve
03.01.25
✎
15:52
|
Разбираюсь с проблемами блокировки.
Нашел в обмене с Битрексом такой код БлокировкаДанных = Новый БлокировкаДанных; ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрСведений.Б24_ТаблицаИзменений"); НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый); Попытка БлокировкаДанных.Заблокировать(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("НастройкаСинхронизации" , НастройкаСинхронизации); Запрос.УстановитьПараметр("ВремяЗаписиВМиллисекундах" , ВремяЗапускаВМиллисекундах); Запрос.Текст = "ВЫБРАТЬ | Б24_ТаблицаИзменений.НастройкаСинхронизации КАК НастройкаСинхронизации, | Б24_ТаблицаИзменений.ТипДанных КАК ТипДанных, | Б24_ТаблицаИзменений.Объект КАК Объект, | Б24_ТаблицаИзменений.ПодчиненныйОбъект КАК ПодчиненныйОбъект, | Б24_ТаблицаИзменений.ВремяЗаписиВМиллисекундах КАК ВремяЗаписиВМиллисекундах |ИЗ | РегистрСведений.Б24_ТаблицаИзменений КАК Б24_ТаблицаИзменений |ГДЕ | Б24_ТаблицаИзменений.НастройкаСинхронизации = &НастройкаСинхронизации | И Б24_ТаблицаИзменений.ВремяЗаписиВМиллисекундах > &ВремяЗаписиВМиллисекундах"; ТзнИзменений = Запрос.Выполнить().Выгрузить(); НаборЗаписей = РегистрыСведений.Б24_ТаблицаИзменений.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.НастройкаСинхронизации.Установить(НастройкаСинхронизации); НаборЗаписей.Загрузить(ТзнИзменений); НаборЗаписей.Записать(Истина); ЗафиксироватьТранзакцию(); Из него следует, что на время выполнения кода блокируется ВСЯ таблица Б24_ТаблицаИзменений. Хотя можно блокировать только по измерения НастройкаСинхронизации. По моим мыслям (может и не прав). Пока выполняет этот код к регистру нельзя обратиться. Верно рассуждаю ? А с учетом того, что код выполняется в транзакции, то могут блокируются другие объекты для записи. Или тут не прав ? |
|||
1
Конструктор1С
03.01.25
✎
16:10
|
Тут ужасно всё. Какая-то наркоманская логика
|
|||
2
Конструктор1С
03.01.25
✎
16:13
|
Другие сеансы не смогут писать в этот регистр
Нет, другие объекты не заблокируются. Хотя могут быть нюансы |
|||
3
ИС-2
naïve
03.01.25
✎
16:57
|
А вот в WMS часть блокировок почистили внедренцы...
Получается, что один и тот же код который должен был выполнятся 1 раз последовательнно выполняется у внедренцев несколько раз... И приводит к блокировкам. // Убрал блокировки для параллельной работы //БлокировкаДанных = Новый БлокировкаДанных; //ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрСведений.axЗаписываемыеИдентификаторыОбъектов"); //ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; //ЭлементБлокировки.УстановитьЗначение("Идентификатор", Object.ID); //БлокировкаДанных.Заблокировать(); |
|||
4
ИС-2
naïve
03.01.25
✎
16:58
|
интересная статья про поиск блокировок
Как посмотреть, какие данные заблокированы в СУБД MS SQL Server https://infostart.ru/1c/articles/707333/ |
|||
5
breezee
04.01.25
✎
08:49
|
А с какой именно проблемой разбираетесь?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |