Режим управления блокировкой данных в транзакции по умолчанию #674419


#0 by Darklight
Может вопрос будет тупой, но меня терзают смутные сомнения. У меня в корне конфигурации указанный параметр установлен в "Управляемый" при этом во всех объектах метаданных конфигурации данный режим стоит "Автоматический". Так какой же режим используется реально? И зачем тогда наличие режима "Автоматический и управляемый" в корне? А сточки зрения сочетания начинаемых транзакций Управляемый транзакция верхнего уровня не совместима с автоматической транзакцией нижнего уровня. Специально слазил в типовую конфигурацию (1.3 УПП) - там та же фигня! Тогда зачем вообще эта опция у корня конфигурации? Или она влияет на вручную начинаемые транзакции методом НачатьТранзакцию без параметров. И с таким значением - все такие транзакции становятся управляемыми (если конечно начаты не в контексте вышестоящей автоматической транзакции - если конечно она есть). Но тогда такие транзакции начинаются вообще без блокировок (если это не вложенная транзакция в автоматическую) - ведь почти в 100% код их начавший не задумывается о формировании управляемых блокировок (раз не прописывает и соответствующую опцию при начале транзакции). Прошу прояснить данную ситуацию.
#1 by hhhh
а транзакции бывают управляемые разве?
#2 by Darklight
Да, подразумевается в каком режиме будут происходить блокировки указанной транзакции
#3 by Asmody
тут читай
#4 by Darklight
Только что читал это в соответствующей книге. Не помогло :(
#5 by exwill
Попробуй создать элементарную конфигурацию с 0. И все поймешь.
#6 by Darklight
нееее.....
#7 by Darklight
Собственно говоря нашёл ответ на свой вопрос в описании процедуры Если для свойства конфигурации "Режим управления блокировкой данных" выбрано значение "Управляемый", то значение параметра по умолчанию Управляемый. ИНАЧЕ Значение по умолчанию: Автоматический Тогда, установка у корне режима "Автоматический" получается вообще не позволяет использоватьу правляемые блокировки (они всегда будут автоматическими, без ошибок) А если режим будет "Автоматический и управляемый", то для всех транзакций и объектов, в которых НЕ БУДЕТ специально установлен режим управляемых блокировок - тоже всегда будет автоматическое управление блокировками. Только начатые транзакции (автоматически в объекте с режимом управления блокировками "Управляемые" или вручную, с явным указанием этого режима в указанной функции), не являющиеся вложенными в другую автоматическую транзакцию, будут являться управляемыми. А вот режим "Управляемый" получается - тоже самое, что "Автоматический и управляемый", разница лишь работе функции НачатьТранзакцию(<РежимБлокировок>), которая по умолчанию в этом режиме начинает транзакцию с управляемыми блокировками (если нет верхней транзакции с автоматическим управлением). Но это очень странный режим. Так как явно начатые транзакции, написанные в старом стиле будут использовать управляемые блокировки, но их алгоритм, 99% случаев не будет на это рассчитан, и не будет настраивать управляемые блокировки.
#8 by Darklight
Зачем тогда нужен устанавливать это режим "Управляемый" в корне конфигурации "ПО УМОЛЧАНИЮ" в типовых конфигурациях, которые практически полностью Не управляемые (рассматриваем данный класс решений). Всё же правильнее было ставить "Автоматические и управляемые" - если решение всё же где-то (но не в 100% случаев) использует управляемые блокировки.
#9 by Darklight
Но тогда я не понимаю, почему не вызовет ошибки такой код (когда в корне конфигурации будет стоить режим "Управляемый")написанный просто в обработке (без внешних транзакций): Ведь нельзя начать транзакцию с автоматическими блокировками внутри транзакции с управляемыми блокировками? Но данный код будет нормально работать! Так в чём же дело?
#10 by Darklight
а тут никто подсказать пока больше не желает?
#11 by Fragster
Описание: Если в свойстве установлен режим управления блокировкой данных конфигурации, то все транзакции, вне зависимости от установок данного свойства для объектов и параметра вызова метода НачатьТранзакцию, будут выполняться в управляемом режиме. Если установлен у любого другого объекта метаданных, а у конфигурации установлено АвтоматическийИУправляемый, транзакции, создаваемые автоматически системой, будут выполняться в управляемом режиме. (c) встроенная справка
#12 by Darklight
Какая-то лажа написана. Если говорит о конфигурациязх, не разработанных как полностью на типовых В типовых конфигурациях установлено данное свойство в корне конфигурации в значение "Управляемый", но в самих объектах метаданных таких конфигураций установлено "Автоматический". Так что - это  "автоматически" игнорируется и используются управляемые блокировки? Учитывая что в коде этих объектов метаданных нет алгоритмов использующих управляемые блокировки!
#13 by Fragster
прочитайте еще раз
#14 by Fragster
кстати, если правильно писать - то объект Блокировка - не нужен
#15 by Darklight
Если говорить о конфигурациях, не разработанных как полностью на управляемых формах, то в таких типовых конфигурациях данное свойство в корне конфигурации установлено в значение "Управляемый", но в самих объектах метаданных таких конфигураций установлено "Автоматический". Так что - это  режим "Автоматический" в объектах игнорируется, и при работе с ними используются управляемые блокировки? Учитывая, что в программном коде этих объектов метаданных нет алгоритмов использующих управляемые блокировки! То есть такой документ будет, скажем, всё равно проводиться без установки автоматических блокировок. И в такой конфигурации вообще будет невозможно установить автоматические блокировки? Я всё прочитал.
#16 by Darklight
Это как так правильно?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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