Имя: Пароль:
1C
1С v8
Вопрос по Автоматический И Управляемый режим конфигурации
0 Очкарик
 
07.06.13
20:43
Есть справочник, в конфе установлен Автоматический режим блокировок.
Есть регистр, Управляемый режим блокировок
Есть процедура модуля объекта справочника ПриЗаписи()

В ПриЗаписи() осуществляется запись в регистр.

Т.к. справочник - это не документ и регистр ему не подчинен, то запись в регистр осуществляется в Автоматическом режиме блокировок.

Потому, что конфигурация не знает, что там дальше будет по коду и по умолчанию включает Автоматический?
1 ChAlex
 
07.06.13
20:48
Ну и в чем собственно вопрос?
2 Очкарик
 
07.06.13
20:54
(1) в справочнике в процедуре ПриЗаписи() надо писать
НачатьТранзакцию(Управляемый), чтобы записать в регистр в режиме управляемых блокировок?

По умолчанию, система запишет в автоматическом режиме?
3 Очкарик
 
07.06.13
21:08
ап
4 Fragster
 
гуру
07.06.13
21:11
самая верхняя транзакция у тебя в автоматическом режиме -> все вложенные - в автоматическом.

самая верхняя в управляемом -> при попытке вложенной автоматической будет ошибка, все вложенные должны быть в управляемом
5 Очкарик
 
07.06.13
21:17
(4) а вот тут вопросик интересный...
Если регистр привязан к движениям документа, то да. Так смело можно говорить.

А каким образом транзакция ПриЗаписи() справочника относиться к записи в регистр?
6 Очкарик
 
07.06.13
21:37
+(0)
В каком режиме блокировок осущестляется запись в регистр, если в модуле объекта справочника написано следующее:


Процедура ПриЗаписи(Отказ)
   
   
   НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
   НЗ = РегистрыСведений.РегистрСведений1.СоздатьНаборЗаписей();
   НЗ.Прочитать();
   ЗАпись = НЗ.Добавить();
   ЗАпись.Период = ТекущаяДата();
   ЗАпись.Измерение1 = Ссылка;
   ЗАпись.Ресурс1 = Наименование;
   НЗ.Записать();
   ЗафиксироватьТранзакцию();
   
КонецПроцедуры
7 Очкарик
 
07.06.13
21:39
Самое прикольное, что перевожу регистр в Автоматический.
Платформа это хавает и записывает.
8 Очкарик
 
07.06.13
21:43
пля, БД в файловом режиме. Мать её, ей пофиг на управляемые блокировки, все на автоматических делается.
9 Очкарик
 
07.06.13
21:44
никак дома не проверить и не посмотреть
10 Очкарик
 
07.06.13
21:53
При работе в режиме управления блокировками "Автоматический и управляемый" следует учитывать две особенности:
· независимо от режима, указанного для данной транзакции, система будет устанавливать соответствующие управляемые блокировки;
· режим управления блокировками определяется транзакцией самого «верхнего» уровня.

Другими словами, если к моменту начала транзакции была начата другая транзакция, то начинаемая транзакция может быть выполнена только в том в режиме, который установлен
для уже выполняющейся транзакции.

Вопрос: в ПриЗаписи() в модуле объекта справочника осуществляется запись в регистр.

Какая транзакция возникнет к регистру, автоматическая или управляемая?
11 Очкарик
 
07.06.13
21:57
+(10) вроде ПриЗаписи() справочника не является транзакционной процедурой для регистра. Соответственно, исходя из логики, запись в регистр будет осуществлена исходя из того режима блокировок, который установлен на регистре?
12 Очкарик
 
07.06.13
22:00
заипался говорить сам с собой, заплачу 50 $м за аргументированный ответ.
13 GROOVY
 
07.06.13
22:01
(6) Нафуя тебе там транзакция?
14 Очкарик
 
07.06.13
22:03
Думаю так:
Процедура ПриЗаписи() объекта справочника выполнится в автоматическом режиме блокировок - в части, касающейся записи в справочник.

По части, касающейся записи в регистр, будет выполняться транзакция с блокировками, в зависимости от режима блокировок, установленном на регистре.

(13) конфигурация такая, от этого никуда не деться
15 Очкарик
 
07.06.13
22:04
(13) с документом все понятно, если у него регистр подчиненный
16 GROOVY
 
07.06.13
22:05
(14) У тебя транзакция записи активна, она управляет всеми вложенными.
17 Очкарик
 
07.06.13
22:05
Думаю, что транзация, возникаюшая до ПриЗаписи() объекта справочника, никоим образом не относится к регистру. Так?
18 Очкарик
 
07.06.13
22:07
(16) то есть, на SQL БД должна возникнуть ошибка исполнения, если справочник будет в Управляемом режиме, а Регистр в Автоматическом?
19 Очкарик
 
07.06.13
22:07
+(18) пробовал смоделировать это на файловой базе - ей пофигу
20 GROOVY
 
07.06.13
22:08
(17) нет. Транзакция активна, не важно какая. То что ты в этой транзакции делаешь полностью ей подчинено.
21 Очкарик
 
07.06.13
22:09
(20) тогда на (18) можешь ответить?
22 GROOVY
 
07.06.13
22:10
(21) проверь, у меня дома тоже нет сервака.
23 Очкарик
 
07.06.13
22:12
(22) а можно усеченную SQL версию где скачать?
24 Очкарик
 
07.06.13
22:15
(22) то есть, пофигу, привязан регистр к документу как к регистратору или не привязан, в какой режим блокировок у документа стоит в конфигурации, в том режиме блокировок и будет осуществлена запись в регистр?
25 Очкарик
 
07.06.13
22:16
+(24) и то же самое со справочником?
26 Очкарик
 
07.06.13
22:21
(22) всю жизнь работал либо на полностью автоматическом режиме работы конфигурации либо на полностью управляемом.

Столкнулся с конфигурацией в смешанном режиме и произошел разрыв шаблона с последующим снижением чсв :)
27 GROOVY
 
07.06.13
22:23
Ты хоть понимаешь что в (6) у тебя бред написан?
28 Очкарик
 
07.06.13
22:25
(27) Бред по части НачатьТранзакцию?
29 Reaper_1c
 
07.06.13
22:26
(6) Очень куевом.
30 Очкарик
 
07.06.13
22:27
(27) НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый) согласно руководству разработчика будет тупо проигнорен системой, в случае, если режим работы конфигурации "Автоматический и управляемый".
Если верить тому, что ПриЗаписи() является транзакцией для записываемого регистра.
31 Очкарик
 
07.06.13
22:29
+(30)
Вторая особенность заключается в том, что режим управления блокировками, указываемый
для объекта метаданных в конфигурации или указываемый при начале транзакции в явном
виде (как параметр метода НачатьТранзакцию()), является лишь «желаемым» режимом.
32 GROOVY
 
07.06.13
22:30
(28) Да. Объясни мне, зачем там транзакция?
33 Очкарик
 
07.06.13
22:30
(32) хотел вызвать ошибку исполнения.
34 Очкарик
 
07.06.13
22:32
(32) ты на (24) ответь, не игнорь, как платформа 8.2 игнорит  НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый) :)
35 GROOVY
 
07.06.13
22:37
Тебе все уже ответили в (4).
36 Очкарик
 
07.06.13
22:37
пля, с 2000-го года занимаюсь 1С и все больше понимаю, что чем глубже пытаешься вникнуть в механизмы системы - тем больший взрыв мозга наступает.
37 Очкарик
 
07.06.13
22:38
(35) завтра проверю на SQL. Файловой БД это утверждение монопенисуально.
38 Очкарик
 
07.06.13
22:39
(35) Еще убивает фраза из РР:
независимо от режима, указанного для данной транзакции, система будет устанавливать
соответствующие управляемые блокировки;
39 Очкарик
 
07.06.13
22:40
(35) И еще вот это:

даже если для транзакции используется
автоматический режим управления блокировками, система установит дополнительно и
соответствующие управляемые блокировки при записи данных в этой транзакции. Из этого
следует, что транзакции, исполняющиеся в режиме управляемых блокировок, могут
конфликтовать с транзакциями, исполняющимися в режиме автоматического управления
блокировками.
40 Очкарик
 
07.06.13
22:41
+(39) из этой фразы следует, что справочник запишется в автоматическом режиме, а регистр в управляемом. Если соответствующие режимы на них установлены. ТАК?
41 Очкарик
 
07.06.13
22:51
+(40) Режим
существующей
транзакции
Режим
начинаемой
транзакции
Результат
Автоматический Автоматический Начинаемая транзакция будет выполнена в
автоматическом режиме
Автоматический Управляемый Начинаемая транзакция будет выполнена в
автоматическом режиме
Управляемый Автоматический Будет вызвана исключительная ситуация
Управляемый Управляемый Начинаемая транзакция будет выполнена в
управляемом режиме
42 Очкарик
 
07.06.13
22:54
(4) тоже так всю жизнь думал и начинаю думать опять. Спасибо.
43 Fragster
 
гуру
08.06.13
11:26
(12) с тебя 50 смартмани за (4)
Ошибка? Это не ошибка, это системная функция.