|
Режим управления блокировкой данных в транзакции по умолчанию | ☑ | ||
---|---|---|---|---|
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)Это как так правильно?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |