Режим блокировок при выполнении транзакции #620957


#0 by pavig
Камрады, подкиньте инфу: как узнать в каком режиме выполняется текущая транзакция: автоматический или управляемый? например, есть некая процедура в общем модуле, и я знаю что она может вызываться из нескольких документов, причем эти документы имеют разный режим блокировок, и мне надо в этой процедуре установить или не установить управлемую блокировку в зависимости от режима выполнения текущей транзакции? или хотя бы вообще узнать, выполняется ли в данный момент транзакция записи?
#1 by gosn1ck
флажочек = истина передавай из документов с упр блокировками
#2 by pavig
это уже костыли, согласись меня интересуют методы платформы
#3 by gosn1ck
имхо, костыли сейчас у вас и вы их прибавляете. упр блокировки обычно устанавливается в самом документе обработкой проведения результатом запроса к самому документу.
#4 by pavig
вопрос в это не раскрывает
#5 by Jstunner
Попробуй начать транзакцию с управляемым режимом блокировок, думаю, если транзакция  в автоматическом режиме, то кинет исключение
#6 by Jstunner
А вообще верно,  смысл управляемых блокировок в том, что надо заблокировать все и сразу, иначе могут быть жертвы :)
#7 by pavig
блокировать все и сразу надо только для контроля остатков чтобы после их чтения и перед записью остатки по набору измерений не изменились, да и то не все и далеко не сразу, а именно ПЕРЕД чтением чтобы не лочить записи до последнего момента чтобы другие транзакции могли и читать и изменять записи а в - опять костыли, причем куда более жесткие чем в
#8 by Jstunner
ты, видимо, не совсем понимаешь принцип блокировки. Скажем, ты блокируешь ресурсы двумя порциями. Первая порция - свободна и спокойно блокируется. Ты что-то делаешь. В это же время начинается другая транзакция, которая блокирует первую порцию, но других данных. Все хорошо пока. Но вторая порция в обеих транзакциях пытается заблокировать одни и те же данные. Возникает, правильно, взаимная блокировка. Отсюда правило, нужно сначала заблокировать все и сразу, а потом работать дальше. В этом случае все проходит гладко, вторая транзакция со своими блокировками просто встанет в очередь, и продолжится лишь тогда, когда первая транзакция отработает.
#9 by zladenuw
а если нет ? то 2 транзакция вылетит ?
#10 by zladenuw
и это еще может зависит от сервера базы мс или постгрес? мс блокируют строку записи,а постгрес таблицу. то по твоим словам лучше юзать постгрес или я заблуждаюсь ?
#11 by zladenuw
или тут все 1с думает как и куда ?
#12 by Jolly Roger
а если ставить УБ в любом случае?
#13 by gosn1ck
приведите пример своего кода и поучимся у вас не костыликодить если открыть упр транзакцию, а попадётся док или регистр и автоматическим управлением то транзакция перейдет в автоматический режим
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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