Как заблокировать регистр накопления при записи набора? #713211


#0 by Gorr
Здравствуйте! В моей обработке выполняется запись довольно большого набора записей в транзакции. Как правильно заблокировать регистр от чтения другими сеансами на время выполнения записи? Пробовал так: Ставил бряк в отладчике после вызова Заблокировать, запускал дополнительный сеанс из него консолью запросов без труда прочитал записи блокируемого регистра. Как заблокировать регистр чтобы у других сеансов вообще доступа не было?
#1 by Fragster
а режим блокировки у базы какой?
#2 by Fragster
и у самого регистра и у транзакции стартованной
#3 by Spieluhr
все правильно, только вне транзакции (консолью запросов) читать всегда можно
#4 by Gorr
у конфигурации режим автоматический
#5 by Fragster
Выбрать * из Регистр ДЛЯ ИЗМЕНЕНИЯ
#6 by Жан Пердежон
от зряного чтения - НИКАК
#7 by floody
от грязного чтения как раз и спасает режим блокировки "исключительный"
#8 by Maxus43
> Ну раз автоматический, то о каких Новый БлокировкаДанных; мы вообще говорим
#9 by Maxus43
тут надо , причем в транзакции явной или неявной
#10 by Жан Пердежон
"исключительный" не дает ставить на ресурс другие блокировки, но никто не мешает читать вообще без установки блокировок, так что не поможет ни разу
#11 by Maxus43
а, я чот топик то не прочитал, от чтения надо заблокировать...
#12 by Gorr
остается только УстановитьМонопольныйРежим(Истина);
#13 by Fragster
а чем мешает чтение? ну почитают... документы-то все равно не смогут делать...
#14 by Gorr
существует вероятность получения неверных данных и запись на основании этих неверных данных уже в другие регистры. почему не смогут?
#15 by Spieluhr
Если у вас автоматический режим блокировок в конфигурации, то пытаться наложить управляемую смысла нет, этот код игнорируется. в последних версиях платформы сделали на этот случай ругалку, т.к. люди путаются в транзакции нужно получать данные, если на их основе принимаются решения
#16 by Gorr
таким образом, работу типовых документов моя обработка не заденет?
#17 by Gorr
поскольку запись обработкой выполняется в транзакции и анализ остатков документами неявно тоже выполняется в транзакции.
#18 by Fragster
если сделаешь - типовые документы не смогут проводиться, пока твоя обработка работает
#19 by Gorr
мне не понятно мне что предлагается в ? Это предлагается в ?
#20 by Gorr
а вы что думаете относительно ?
#21 by Spieluhr
да, это
#22 by Fragster
типа того. но как только конфа станет управляемой - код превратится в тыкву
#23 by Spieluhr
в и в прав. Но это справедливо, пока конфа в автоматическом режиме блокировок работает
#24 by Fragster
т.е. я прав еще и в
#25 by Spieluhr
конечно
#26 by Gorr
пожалуйста без эмоций. Довайте подведем итог. Конструкция "Для изменения" запроса внутри транзакции блокирует всю таблицу не только для записи, но и для чтения другими сессиями при использовании автоматического режима блокировки.
#27 by Fragster
вот что пишет справка: Конфигуратор 1С:Предприятие 8 Предложение ДЛЯ ИЗМЕНЕНИЯ Предложение ДЛЯ ИЗМЕНЕНИЯ предназначено для указания необходимости блокировки считываемых в транзакции данных. Считанные данные становятся недоступными для чтения в других сессиях. Для файлового варианта блокируются указанные таблицы, а для клиент-серверного варианта — только выбранные записи. Блокировка снимается после завершения транзакции.
#28 by Gorr
думаю, если бы в справке додумались написать "ДЛЯ ЧТЕНИЯ" вопросов было бы куда меньше
#29 by Gorr
в итоге исправил код на
#30 by Жан Пердежон
не совсем, прочитать не блокирую данные все равно можно
#31 by Spieluhr
в итоге я так и не понял зачем вам блокировать на чтение весь регистр? Вне транзакции , т.е. из консоли запросов или в любом отчете данные будут прочитаны независимо от установленных блокировок, а параллельные транзакции и так не смогут прочитать те данные, которые вы измените в своей (ваш набор записей). на выходе получите избыточную блокировку и никакой пользы.
#32 by Gorr
вот я же вас спрашивал в и постах, но вы промолчали. вот я и подумал что все же нужно блокировать принудительно
#33 by Spieluhr
ответьте все же на вопрос: зачем вам блокировать на чтение весь регистр?
#34 by Gorr
давно уже ответил см
#35 by Gorr
еще непонятно как проверить режим блокировки конфигурации: если Метаданные.РежимУправленияБлокировкойДанных = РежимУправленияБлокировкойДанныхПоУмолчанию.автоматический выдает ошибку переменная РежимУправленияБлокировкойДанныхПоУмолчанию не определена
#36 by Fragster
смотри в СП вмнимательнее
#37 by Gorr
РежимУправленияБлокировкойДанных (DataLockControlMode) Использование: Только чтение. Описание: Тип: РежимУправленияБлокировкойДанныхПоУмолчанию. Содержит варианты режимов управления блокировкой данных, устанавливаемых по умолчанию. Доступность: Сервер, толстый клиент, внешнее соединение.
#38 by Gorr
я так понимаю РежимУправленияБлокировкойДанныхПоУмолчанию должно быть системное перечисление?
#39 by Gorr
не вижу нифига
#40 by Gorr
UP!
#41 by Spieluhr
#42 by Gorr
некрасиво. На случай если кто еще сталкнется с необходимостью проверки объектов метаданных на перечислимое свойство, доступ этим "перечислимым" перечислениям можно получить через "Метаданные.СвойстваОбъектов.ПеоечислимоеСвойство.ЗначениеСвойства"
#43 by Fragster
ПеречислимыеСвойстваОбъектовМетаданных (MetadataObjectEnumeratedProperties) Свойства: .... РежимУправленияБлокировкойДанныхПоУмолчанию (DefaultDataLockControlMode) ..... Описание: Предоставляет доступ к системным перечислениям, выступающим в качестве значений свойств объектов метаданных. Состав и описание системных перечислений объектов метаданных описан в разделе "Системные перечисления свойств объектов метаданных". Доступность: Сервер, толстый клиент, внешнее соединение. См. также: ОбъектМетаданныхКонфигурация, свойство СвойстваОбъектов
#44 by Fragster
в общем метаданные.свойстваобъектов.РежимУправленияБлокировкойДанныхПоУмолчанию.Управляемый
#45 by Fragster
а вообще - просто код од другого режима блокировки будет проигнорирован будет
#46 by Gorr
я сделал так, что в одном случае осуществляется выборка, в другом используется объект блокировка. таким образом получилось универсально.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С