Имя: Пароль:
1C
1С v8
Режим управления блокировкой данных в транзакции по умолчанию
,
0 Darklight
 
25.07.13
12:33
Может вопрос будет тупой, но меня терзают смутные сомнения.

У меня в корне конфигурации указанный параметр установлен в "Управляемый" при этом во всех объектах метаданных конфигурации данный режим стоит "Автоматический". Так какой же режим используется реально?

И зачем тогда наличие режима "Автоматический и управляемый" в корне?

А сточки зрения сочетания начинаемых транзакций Управляемый транзакция верхнего уровня не совместима с автоматической транзакцией нижнего уровня.

Специально слазил в типовую конфигурацию (1.3 УПП) - там та же фигня!
Тогда зачем вообще эта опция у корня конфигурации?

Или она влияет на вручную начинаемые транзакции методом НачатьТранзакцию() без параметров. И с таким значением - все такие транзакции становятся управляемыми (если конечно начаты не в контексте вышестоящей автоматической транзакции - если конечно она есть).
Но тогда такие транзакции начинаются вообще без блокировок (если это не вложенная транзакция в автоматическую) - ведь почти в 100% код их начавший не задумывается о формировании управляемых блокировок (раз не прописывает и соответствующую опцию при начале транзакции).

Прошу прояснить данную ситуацию.
1 hhhh
 
25.07.13
12:45
а транзакции бывают управляемые разве?
2 Darklight
 
25.07.13
12:48
(1)Да, подразумевается в каком режиме будут происходить блокировки указанной транзакции
3 Asmody
 
25.07.13
12:52
4 Darklight
 
25.07.13
12:55
(3)Только что читал это в соответствующей книге. Не помогло :(
5 exwill
 
25.07.13
13:00
(0) Попробуй создать элементарную конфигурацию с 0.
И все поймешь.
6 Darklight
 
25.07.13
13:14
(5)нееее.....
7 Darklight
 
25.07.13
14:09
Собственно говоря нашёл ответ на свой вопрос в описании процедуры

НачатьТранзакцию(<РежимБлокировок>)

Если для свойства конфигурации "Режим управления блокировкой данных" выбрано значение "Управляемый", то значение параметра по умолчанию Управляемый.
ИНАЧЕ Значение по умолчанию: Автоматический

Тогда, установка у корне режима "Автоматический" получается вообще не позволяет использоватьу правляемые блокировки (они всегда будут автоматическими, без ошибок)
А если режим будет "Автоматический и управляемый", то для всех транзакций и объектов, в которых НЕ БУДЕТ специально установлен режим управляемых блокировок - тоже всегда будет автоматическое управление блокировками. Только начатые транзакции (автоматически в объекте с режимом управления блокировками "Управляемые" или вручную, с явным указанием этого режима в указанной функции), не являющиеся вложенными в другую автоматическую транзакцию, будут являться управляемыми.
А вот режим "Управляемый" получается - тоже самое, что "Автоматический и управляемый", разница лишь работе функции
НачатьТранзакцию(<РежимБлокировок>), которая по умолчанию в этом режиме начинает транзакцию с управляемыми блокировками (если нет верхней транзакции с автоматическим управлением).
Но это очень странный режим. Так как явно начатые транзакции, написанные в старом стиле будут использовать управляемые блокировки, но их алгоритм, 99% случаев не будет на это рассчитан, и не будет настраивать управляемые блокировки.
8 Darklight
 
25.07.13
14:11
(7)Зачем тогда нужен устанавливать это режим "Управляемый" в корне конфигурации "ПО УМОЛЧАНИЮ" в типовых конфигурациях, которые практически полностью Не управляемые (рассматриваем данный класс решений). Всё же правильнее было ставить "Автоматические и управляемые" - если решение всё же где-то (но не в 100% случаев) использует управляемые блокировки.
9 Darklight
 
25.07.13
15:37
(7)Но тогда я не понимаю, почему не вызовет ошибки такой код (когда в корне конфигурации будет стоить режим "Управляемый")написанный просто в обработке (без внешних транзакций):

НачатьТранзакцию() //Получается, что она будет идти в режиме управляемых блокировок

Док = Документы.КакойТоДокумент.Создать(); //У которого режим блокировок "Автоматический"

Док.КактоЗаполнить();

Док.Записать(РежимЗаписиДокумента.Провести); //Будет инициирована автоматическая транзакция проведения документа (+ в движениях будут регистры так же с автоматическим управлением блокировок)

ЗафиксироватьТранзакцию()


Ведь нельзя начать транзакцию с автоматическими блокировками внутри транзакции с управляемыми блокировками?

Но данный код будет нормально работать! Так в чём же дело?
10 Darklight
 
30.07.13
12:45
а тут никто подсказать пока больше не желает?
11 Fragster
 
модератор
30.07.13
12:57
РежимУправленияБлокировкойДанныхПоУмолчанию.Управляемый (DefaultDataLockControlMode.Managed)
РежимУправленияБлокировкойДанныхПоУмолчанию (DefaultDataLockControlMode)
Управляемый (Managed)
Описание:

Если в свойстве установлен режим управления блокировкой данных конфигурации, то все транзакции, вне зависимости от установок данного свойства для объектов и параметра вызова метода НачатьТранзакцию, будут выполняться в управляемом режиме.
Если установлен у любого другого объекта метаданных, а у конфигурации установлено АвтоматическийИУправляемый, транзакции, создаваемые автоматически системой, будут выполняться в управляемом режиме.

(c) встроенная справка
12 Darklight
 
30.07.13
15:23
(11)Какая-то лажа написана.
Если говорит о конфигурациязх, не разработанных как полностью на типовых В типовых конфигурациях установлено данное свойство в корне конфигурации в значение "Управляемый", но в самих объектах метаданных таких конфигураций установлено "Автоматический". Так что - это  "автоматически" игнорируется и используются управляемые блокировки? Учитывая что в коде этих объектов метаданных нет алгоритмов использующих управляемые блокировки!
13 Fragster
 
модератор
30.07.13
15:32
(12) прочитайте еще раз (11)
14 Fragster
 
модератор
30.07.13
15:33
кстати, если правильно писать - то объект Блокировка - не нужен
15 Darklight
 
30.07.13
15:33
(13)Если говорить о конфигурациях, не разработанных как полностью на управляемых формах, то в таких типовых конфигурациях данное свойство в корне конфигурации установлено в значение "Управляемый", но в самих объектах метаданных таких конфигураций установлено "Автоматический". Так что - это  режим "Автоматический" в объектах игнорируется, и при работе с ними используются управляемые блокировки? Учитывая, что в программном коде этих объектов метаданных нет алгоритмов использующих управляемые блокировки! То есть такой документ будет, скажем, всё равно проводиться без установки автоматических блокировок. И в такой конфигурации вообще будет невозможно установить автоматические блокировки?
Я всё прочитал.
16 Darklight
 
30.07.13
15:33
(14)Это как так правильно?