Имя: Пароль:
1C
1С v8
А это правда, что ПодпискаНаСобытие....8.2
0 ВалераОшкин
 
21.02.13
22:36
1. Это не правда 80% (4)
2. Возникает автоблокировка 20% (1)
3. Свое мнение 0% (0)
Всего мнений: 5

А это правда, что в 8.2 ПодпискаНаСобытиеЗаписиДокумента вызывает транзакцию в режиме автоматической блокировки таблиц, не смотря на то, что конфигурация находится в управляемом режиме блокировок?

P.S. Мне недавно на одной авторитетной встрече так сказали.

Может кто пояснить эту ситуацию?
2 ВалераОшкин
 
21.02.13
22:42
+(0) и документ тоже находится в режиме управляемых блокировок
3 Armando
 
21.02.13
22:42
>> вызывает транзакцию
ПриЗаписи уже выполняется в транзакции. Какую транзакцию еще вызывает?
4 ВалераОшкин
 
21.02.13
22:44
(3) фиг знает, мне так сказали на одной встрече. Человек меня опрашивал, и так мне сказал...
5 ВалераОшкин
 
21.02.13
22:45
(4) я и удивился, хочу узнать мнения
6 ВалераОшкин
 
21.02.13
22:46
+(5) жаль, я провафлил и в ответ не спросил: "А как ты это узнал"?
7 Tatitutu
 
21.02.13
22:52
(6) провафлил ??? &!&!!!!!
8 ВалераОшкин
 
21.02.13
22:54
(7) это я попытался  так выразить свою раздосадованность... чето перегнул я...
9 ВалераОшкин
 
21.02.13
22:57
кто-нить рискнет первым проголосовать?
10 Armando
 
21.02.13
23:02
(9) чем подтвержден авторитет утверждающего? ты уверен, что все правильно понял?
11 ВалераОшкин
 
21.02.13
23:04
(10) начальник отдела программистов большой и денежной фирмы в сфере медицинских услуг
12 Мимохожий Однако
 
21.02.13
23:05
(0)По отдельности каждое слово понятно. А вот смысла не уловил. Задай вопрос более развёрнуто ))
13 ВалераОшкин
 
21.02.13
23:08
(12) конфигурация:
- управляемые формы
- режим блокировок конфигурации управляемый и распространен на все документы

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

Это понятно? Это правда?
14 ВалераОшкин
 
21.02.13
23:15
Я так понимаю, что по идее транзакцию начинает сам документ, а раз он проводится в управляемом режиме, то этот режим распространяется на всю транзакцию.
И если внутри транзакции появится что-то в автоматическом режиме, то будет ошибка.

По идее, подписка на событие тут вообще не при чем. Или я не прав?
15 Мимохожий Однако
 
21.02.13
23:19
(14)Полагаю не причем.
16 ВалераОшкин
 
21.02.13
23:21
(15) Спасибо за ответ.
Давайте проголосуем?

Это не правда
17 Мимохожий Однако
 
21.02.13
23:26
Добавь в голосовалку. 4. Это не при чём.
Так точнее. Вариант 2 предполагает связь двух понятий, а связи может и не быть.
18 Fragster
 
гуру
21.02.13
23:27
При вызове НачатьТранзакцию(РежимБлокировки.Автоматический) внутри управляемой - вызывается исключение. Все подписки внутри одной транзакции работают.

Это не правда
19 ВалераОшкин
 
21.02.13
23:27
(17) а как это можно определить точно? Как ты думаешь?
20 ВалераОшкин
 
21.02.13
23:30
(18) внутри управляемой конфигурации или управляемого ДокументОбъекта?
21 GANR
 
21.02.13
23:34
Зачем спрашивать? Проведи эксперимент!
Останови код в процедуре подписки на точке останова, а в другом сеансе попробуй записать/изменить данные там, где они, по твоему предположению, заблокированы.
22 ВалераОшкин
 
21.02.13
23:39
(21) тоже вариант, надо будет над ним подумать :)
23 Fragster
 
гуру
21.02.13
23:42
(20) внутри управляеемой транзакции. попробуй в управляемой транзакции записать начать автоматическую транзакцию
24 ВалераОшкин
 
21.02.13
23:45
(23) отказ будет
25 ВалераОшкин
 
22.02.13
01:00
Понятия уровня вложенности транзакций физически в 1С не существует, запускается одна транзакция и проверяет флаги "управляемый или автоматический" у регистров и проводимых документов.

Или я ошибаюсь?
26 GANR
 
22.02.13
01:10
(22) чего тут думать - трясти надо ;)
27 8vC1
 
22.02.13
02:25
Я думаю, что да

Описание:
Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи.


При наступлении события указанного события выполняется следующая последовательность действий:

- сначала отрабатывается событие в самом объекте и вызывается обработчик события, определенный в модуле объекта или набора записей;
- если в процессе выполнения обработчика параметр Отказ установлен в значение Истина или вызвано исключение, действие прерывается;
- затем вызываются в произвольном порядке внешние обработчики, назначенные для данного события;
- в качестве источника в назначенный обработчик передается сам объект (набор записей) вызвавший событие;
- если в процессе выполнения назначенного обработчика параметр Отказ установлен в значение Истина или вызвано исключение, действие прерывается.

Возникает автоблокировка
28 ВалераОшкин
 
22.02.13
08:48
(27) последовательность действий и транзакция - это разные вещи
29 ВалераОшкин
 
22.02.13
09:08
(27) Документ записывается с проведением - начинается ОДНА транзакция в управляемом режиме блокировок. Если внутри этой транзакции встретится регистр или что-то еще у чего стоит признак "автоматическая блокировка", то возникнет отказ в выполнении.
30 ВалераОшкин
 
22.02.13
09:15
Господа, высказывайте свое мнение и голосуйте - это очень важно!
31 ВалераОшкин
 
22.02.13
09:23
upну
32 Fragster
 
гуру
22.02.13
09:25
что, на бутылку поспорил?
33 ВалераОшкин
 
22.02.13
09:26
(32) хочу понимать, зачем такие утверждения говорятся кандидатам на собеседовании?

Чтобы они стали с пеной у рта доказывать, что это не так, или собеседователь действительно так думает?
34 MrStomak
 
22.02.13
09:28
Тут обсуждать нечего - это полный гон. Подписка не начинает транзакцию. Можно сомневаться на счет подписок "перед", но это элементарно в трассировке sql проверить
35 Fragster
 
гуру
22.02.13
09:30
(33) да, ловушки на собеседовании - обычное дело.
36 Fragster
 
гуру
22.02.13
09:30
собеседователь так не думает.
37 ВалераОшкин
 
22.02.13
09:30
(35) а может он действительно так думает и собеседует людей в поисках "настоящего спеца"?
38 Fragster
 
гуру
22.02.13
09:31
(37)-(36)
39 ВалераОшкин
 
22.02.13
09:32
(38) т.е. надо было вступить в полемику и с пеной у рта доказывать, что это не так?

Недостаточно было просто сказать "удивительно, никогда бы не подумал"?
40 Живой Ископаемый
 
22.02.13
09:32
2(37)спроси почему он так думает, и как он проводил повторяемые эксперименты, чтобы убедиться в своем утверждении.
41 ВалераОшкин
 
22.02.13
09:33
(40) такая хорошая мысля пришла мне опосля :)
42 Живой Ископаемый
 
22.02.13
09:34
Если он просто начнет ссылаться на то, что он лично видел, как в 20% случаев что-то такое происходило, то лучше не устраиваться на это место
43 Fragster
 
гуру
22.02.13
09:34
(39) надо было говорить "странно, у меня - не так", а "никогда бы не подумал" говорит о том, что ты этого не знаешь твердоЪ
44 Fragster
 
гуру
22.02.13
09:34
завалили тебя, в общем
45 ВалераОшкин
 
22.02.13
09:35
(44) видимо да
46 Fragster
 
гуру
22.02.13
09:36
самое грамотное "но моя практика/опыт показывает, что это не так"
47 ВалераОшкин
 
22.02.13
09:37
(46) Да, достойный вариант ответа
48 MrStomak
 
22.02.13
09:43
Посмотрел в трассировке - перед записью сначала вызывается отдельная транзакция и в управляемом режиме. Потом обработчик события никакую транзакцию не начинает. Потом транзакция заканчивается и начинается транзакция записи - тоже в управляемом режиме. Подписки также транзакцию не начинают. Заявление твоего "спеца" - либо ложь, либо показатель его неадекватности.
49 ВалераОшкин
 
22.02.13
09:44
(48) тоже так думаю
50 saaken
 
22.02.13
09:48
(0) что значит автоматическая блокировка?
51 ВалераОшкин
 
22.02.13
09:50
(50) режим управления блокировкой данных
52 saaken
 
22.02.13
09:51
(51) а без громких лозунгов, что это такое на пальцах
53 ВалераОшкин
 
22.02.13
09:52
(52) сходи на курсы
54 saaken
 
22.02.13
09:53
я их сам веду, мне интересно твое понимание
55 ВалераОшкин
 
22.02.13
09:54
(54) в автоматическом режиме при начале транзакции система сама принимает решение какие таблицы блокировать и блокировка накладывается на таблицу целиком.

Как правило, блокируются все таблицы, в которые будет осуществляться запись.
56 ВалераОшкин
 
22.02.13
09:55
+(55) встроенный менеджер блокировок в системе есть
57 ВалераОшкин
 
22.02.13
09:56
+(55) даже если запись в таблицу регистра осуществляться не будет, но документ является регистратором для этой таблицы - она тоже полностью блокируется
58 Serg_1960
 
22.02.13
09:59
Хех :) Следующий вопрос будет про "таблицы".

PS: Или твой собеседник вольно обращается с терминами, или ты его неверно понял и нам пересказал.
59 MrStomak
 
22.02.13
09:59
(57) твоё понимание автоматической блокировки неверное
60 ВалераОшкин
 
22.02.13
09:59
+(57) Для того, чтобы заблокировать иные данные, не предусмотренные транзакцией, можно в запросах использовать "Для изменения".

В управляемом режиме, "Для изменения" игнорируется менеджером блокировок.
61 ВалераОшкин
 
22.02.13
10:00
(59) А как правильно?
62 ВалераОшкин
 
22.02.13
10:03
(58) подписка на событие тут вообще не при чем.
Даже если я не правильно понял собеседника, то зачем он приплел подписку на событие к блокировкам?
63 MrStomak
 
22.02.13
10:04
(61) Это режим работы 1с:Предприятия, когда все блокировки делаются средствами СУБД в соответствии с уровнем изоляции транзакций Repeatable Read или Serializable(любое чтение в транзакции вызывает разделяемую блокировку), что обеспечивает логическую целостность данных, но создаёт избыточные блокировки. Блокироваться при этом могут и записи, не обязательно все таблицы.
64 saaken
 
22.02.13
10:05
(62) возможно он имел ввиду уровни изоляции транзакций
65 MrStomak
 
22.02.13
10:06
(64) Я только что проверил - подписка выполнялась на установленном изначально read committed и отдельную транзакцию  вообще не начинала.
66 ВалераОшкин
 
22.02.13
10:06
(63) Если бы у меня под рукой была методичка, я бы тоже воспользовался "копировать-вставить" :)
67 ВалераОшкин
 
22.02.13
10:07
(63) в файловой базе данных никакого сочетания "Repeatable Read или Serializable"  быть не может
68 MrStomak
 
22.02.13
10:09
(66) Причем тут методочка? Я тебе как раз своими словами сказал. Ну и файловая работает на как раз на Serializable - ты зря начинаешь спорить, явно плаваешь в вопросе.
69 ВалераОшкин
 
22.02.13
10:10
(68) вот с этого давай поподробнее.

Ты можешь в 1С определить когда запускается Serializable, а когда Repeatable Read?
70 ВалераОшкин
 
22.02.13
10:11
+(69) в автоматическом режиме?
71 MrStomak
 
22.02.13
10:13
(70) В файловом режиме всегда Serializable, что там определять. На других СУБД можно трассировкой видеть установку уровня изоляции.
72 saaken
 
22.02.13
10:13
Автор топика не разобрался в вопросе.

Это не правда
73 ВалераОшкин
 
22.02.13
10:13
(71) ты троллишь, что-ли? Я тебе выше об этом говорил.
74 ВалераОшкин
 
22.02.13
10:15
(71) Мы СУБД не касаемся, не уводи разговор в сторону.

Ты в 1С начинаешь транзакцию в автоматическом режиме.
Откуда ты знаешь, она Serializable или Repeatable Read?
75 MrStomak
 
22.02.13
10:16
(73) Друг, научись понимать логические выражения - для программиста полезно.
Если я говорю, что в автоматическом режиме будет Serializable или  Repeatable Read, то когда в частном случае файловой БД мы имеем Serializable, то выражение (Serializable или  Repeatable Read) истинно.
76 Reset
 
22.02.13
10:16
Автору или читать про св-во конфигруации РежимУправленияБлокировкойДанных или формулировать вопросы внятнее

если дословно понимать что РежимУправленияБлокировкойДанных=Управляемый то:

Это не правда
77 MrStomak
 
22.02.13
10:17
(74) Ты продолжаешь обнажать своё невежество. Понятие изоляции транзакций относится к СУБД, а не к 1С. Файловая БД - это тоже вариант СУБД, которая умеет работать только на одном уровне изоляций.
78 ВалераОшкин
 
22.02.13
10:18
(75) Дорогой, я просто хочу навести тебя на мысль и получить ответы:
- а нафига мне знать про "Serializable или  Repeatable Read" если транзакция в автоматическом режиме?
- как это знание мне поможет в 1С в этом режиме блокировок?
79 saaken
 
22.02.13
10:19
(74) без СУБД разговор не имеет смысла
80 MrStomak
 
22.02.13
10:20
(78) Да можно вообще ничего не знать - это твоё дело. Просто потом когда тебя спрашивают "что такое автоматический режим?" не надо нести ахинею про "это когда все таблицы блокируются всегда", говори тогда - я с СУБД не знаком, поэтому для меня, как для программиста, это режим, когда мне управляемые блокировки ставить не нужно - система сама обеспечивает целостность данных. Как она это делает мне неинтересно.
81 ВалераОшкин
 
22.02.13
10:21
(80) нафига засирять себе мозг ненужными в ситуации (78) вещами?
82 MrStomak
 
22.02.13
10:22
(81) Когда пишешь масштабируемые решения это необходимо. Например, в автоматическом режиме иногда нужно ставить "Для изменения" в запросе, чтобы повысить уровень блокировки до экслюзивного, чтобы не было взаимоблокировки. Чтобы понимать, зачем это нужно, надо понимать работу 1с на уровне изоляции транзакций в автоматическом режиме.
83 MrStomak
 
22.02.13
10:24
(81) "Для изменения" это вообще явная установка исключительной блокировки, по сути даже в автоматическом режиме блокировками управлять приходится, иначе остатки контролировать не сможешь.
84 saaken
 
22.02.13
10:24
(80) на разных данных одна и та же база работает по разному
85 ВалераОшкин
 
22.02.13
10:26
(82) "Для Изменения" в автоблокировках используется как раз в том случае, если ты хочешь железобетонно заблокировать таблицу в режиме Serializable
86 MrStomak
 
22.02.13
10:26
(84) Это очень общая фраза, с которой невозможно спорить и которая не несет смысла.
87 MrStomak
 
22.02.13
10:27
(85) Блокировка накладывается исключительная или разделяемая, а не "Serializable"
88 ВалераОшкин
 
22.02.13
10:27
+(85) вернее, записи таблицы, попавшие в запрос
89 MrStomak
 
22.02.13
10:28
(85) И не всю таблицу, а записи, если СУБД так решит.
90 ВалераОшкин
 
22.02.13
10:28
(87) да, Serializable и прочие аглицкие термины, отдельно от СУБД к 1С не применимы
91 ВалераОшкин
 
22.02.13
10:28
(89) ---> (88)
92 MrStomak
 
22.02.13
10:28
(88) А иногда - и всю таблицу, если СУБД решит что ресурсов для блокировки записей тратиться слишком много.
93 ВалераОшкин
 
22.02.13
10:29
(92) ты когда разрабатываешь в 1С, каждый раз думаешь, что происходит в SQL?
94 MrStomak
 
22.02.13
10:29
(90) Ты путаешь режим блокировки и уровень изоляций, ну как с тобой о чем-то спорить?
95 MrStomak
 
22.02.13
10:29
(92) Ты не поверишь - да.
96 ВалераОшкин
 
22.02.13
10:30
(94) ты со своим уровнем изоляций пытаешься затроллить меня на разговор о СУБД и уйти от платформы 1С
97 ВалераОшкин
 
22.02.13
10:30
(95) от у тебя мозг наверно пухнет...
98 MrStomak
 
22.02.13
10:31
(90) Ты путаешь уровень изоляции транзакций и режим блокировки. Это как бы очень демонстрирует знание вопроса.
99 MrStomak
 
22.02.13
10:32
(96) Ты изначально начал говорить о СУБД, как только написал в топике про блокировки. Блокировки - это всегда связано с СУБД, не зная работы СУБД можно даже не соваться в блокировки.
100 ВалераОшкин
 
22.02.13
10:32
(98) каким образом платформа 1С относится к понятию "уровень изоляции транзакции", если этим управляет не платформа, а СУБД?
101 MrStomak
 
22.02.13
10:33
(96) Тем более, автоматический режим блокировок - это вообще абсолютно не связанная с 1С вещь, реализуемая именно СУБД, а не платформой, за исключением "Для изменения"
102 MrStomak
 
22.02.13
10:36
(100) 1С инициирует транзакции для операций с базой. На 1С лежат задачи обеспечения логической целостности данных - смотри классическую задачу про контроль остатков. На 1С, как работающем с СУБД приложением, лежит задача обхода взаимоблокировок - делать захват ресурсов в одном порядке, накладывать максимальную блокировку сразу, а не повышать её уровень. Иначе 1С не сможет обеспечить корректную работу сотен пользователей. Это нужно знать программисту.
103 ВалераОшкин
 
22.02.13
10:38
(102) Насколько я знаю, в 1С свой менеджер блокировок, который никоим образом не относится к управлению уровнями изоляции транзакций в СУБД.

Или ты опять скажешь, что я не прав?
104 Fragster
 
гуру
22.02.13
10:42
(103) ага
105 MrStomak
 
22.02.13
10:43
(102) Есть свой менеджер блокировок, да. И что? Он нужен для того, чтобы в тех случаях, когда СУБД блокировку не поставить, поставить её самостоятельно. СУБД не будет ставить блокировки при чтении таблиц в транзакции на уровне Read comitted, но будет на уровне Repeatable Read, значит, если из логики работы нашей базы следует, что блокировка там нужна, это нужно делать самостоятельно - через менеджер блокировок. Не учитывать изоляции транзакций нельзя, т.к. блокировки СУБД накладывает в любом случае, нужно понимать в каком случае какие блокировки она наложит, чтобы средствами 1С обойти взаимоблокировки и чтобы обеспечивать целостность данных.
106 ВалераОшкин
 
22.02.13
10:43
(104) тогда поясни, будь ласка :)
107 ВалераОшкин
 
22.02.13
10:44
(105) тогда при чем тут "Для изменения" и уровень изоляции транзакций в СУБД?
108 MrStomak
 
22.02.13
10:46
(107) "для изменения" - это средство обеспечить целостность данных и обойти взаимоблокировку путем повышения уровня блокировки, которую накладывает СУБД, средствами 1С
109 ВалераОшкин
 
22.02.13
10:46
(108) Думаешь, что если в запросе ты написал "Для изменения", то СУБД наложит другой уровень изоляции?
110 ВалераОшкин
 
22.02.13
10:48
+(109) ты можешь на этот вопрос ответить "Да" или "Нет"?
111 MrStomak
 
22.02.13
10:48
(109) Это ты так думаешь. На самом деле СУБД повысит уровень блокировки до исключительного.
112 ВалераОшкин
 
22.02.13
10:49
(111) ты уверен в том, что именно СУБД повысит уровень блокировки?
113 MrStomak
 
22.02.13
10:50
(112) В случае с "Для изменения" - да.
114 ВалераОшкин
 
22.02.13
10:50
(113) Т.е. ты утверждаешь, что встроенный в 1С менеджер блокировок влияет на уровни изоляции транзакций, которые выполняет СУБД?
115 MrStomak
 
22.02.13
10:51
(114) Ты продолжаешь обнажать своё невежество. Менеджер блокировок используется в управляемом режиме. "Для изменения" - автоматический режим.
116 ВалераОшкин
 
22.02.13
10:54
(115) Т.е. я пишу запрос и указываю в нем "Для изменения".
В СУБД возникает соответствующий уровень изоляции транзакций?

А может все по-другому?

Сервер приложения получает результат запроса от SQL и в результате запроса накладывает свои блокировки на записи?
117 MrStomak
 
22.02.13
10:54
(114) Ну и эта, на уровни изоляции транзакций не влияет и "Для изменения" - он влияет на уровень блокировки. Я тебе подскажу - их два: разделяемая и исключительная.
118 MrStomak
 
22.02.13
10:55
(116) Прекрати немедленно нести чушь про смену уровня изоляций от конструкции "Для изменения".
119 ВалераОшкин
 
22.02.13
10:55
+(116) Очень хочу, чтобы ты помог мне разобраться в моем невежестве. Особеннно вот в этом:

Сервер приложения получает результат запроса (в котором ДЛЯИЗМЕНЕНИЯ) от SQL и в результате запроса накладывает свои блокировки на записи или СУБД меняет уровень изоляций?
120 MrStomak
 
22.02.13
10:57
(119) Система транслирует Для изменения в "For update" на SQL, что вызовет на СУБД исключительную блокировку по записям.
121 ВалераОшкин
 
22.02.13
10:58
(118) Имхо, я пытаюсь тебя понять и осмыслить свою чушь.

Пля буду,
на курсах мне говорили, что режим изоляции транзакций СУБД никоим образом не относится к блокировкам, которые накладывает сама 1С в данных сервера приложений.
122 MrStomak
 
22.02.13
10:58
(119) Прекрати немедленно нести чушь про смену уровня изоляций от конструкции "Для изменения".
123 ВалераОшкин
 
22.02.13
10:58
(112) Немедленно ответь мне на все вопросы
124 MrStomak
 
22.02.13
10:59
(121) В управляемом режиме так и есть - блокировками управляем менеджер. При это блокировки на СУБД также присутствуют - любая запись делает блокировку на чтение.
125 MrStomak
 
22.02.13
11:00
(124) собственно, для изменения именно поэтому и не работает в управляемом режиме.
126 ВалераОшкин
 
22.02.13
11:00
(124) У нас разговор вообще-то шел про автоматический режим, а не про управляемый.

В свете управляемого режима, ДляИзменения тупо игнорируется платформой.
127 ВалераОшкин
 
22.02.13
11:02
(125) Т.е. ты хочешь сказать, что в автоматическом режиме, ДляИзменения передается напрямую в SQL и он, ориентируясь на это слово накладывает дополнительные блокировки?
128 MrStomak
 
22.02.13
11:02
(126) В 8.0 был автоматический режим. В 8.0 не было менеджера блокировок вообще. Про какое управление блокировками на стороне 1С в автоматическом режиме ты говоришь?
129 saaken
 
22.02.13
11:03
(126) не прав
130 MrStomak
 
22.02.13
11:03
(127) Ты еще 10 раз спроси меня одно и тоже. Да, так и есть.
131 ВалераОшкин
 
22.02.13
11:03
(130) ну ты сразу бы так ответил...
132 ВалераОшкин
 
22.02.13
11:05
(130) тогда я не понимаю, как вяжется между собой (126) и утверждение в (129)?
133 MrStomak
 
22.02.13
11:05
(131) Когда ты говоришь "Для изменения" заставляет менять уровень изоляций на СУБД - я не могу на такое ответить "Да"
134 ВалераОшкин
 
22.02.13
11:06
(133) Ну если "ДляИзменения" передается на прямую в SQL и SQL накладывает блокировки на записи, то это должно существовать и в управляемом режиме и не зависеть от менеджера блокировок платформы.

Что-то тут не вяжется... Можешь пояснить?
135 saaken
 
22.02.13
11:07
(134) блокировка накладывается, но действует не до конца транзакции, а снимается после выполнения запроса
136 ВалераОшкин
 
22.02.13
11:09
(135) Т.е. ДляИзменения работает и в управляемом режиме?

Почему у меня тогда в методичке запись, что применение "ДляИзменения" не несет в себе смысла в режиме управляемых блокировок?
137 saaken
 
22.02.13
11:10
(136) и даже вредна, блокирует то что не может удержать до момента записи
138 ВалераОшкин
 
22.02.13
11:14
(137) вона оно как.
Видать преподаватель не знал четко и отделался общей фразой, что "применение "ДляИзменения" не несет в себе смысла в режиме управляемых блокировок".

А я уже додумал, что оно игнорируется платформой.

Спасибо.
139 MrStomak
 
22.02.13
11:19
(138) Тебя вводят в заблуждение - конструкция "Для изменения" не влияет в управляемом режиме, как минимум на сторону СУБД она тупо не передается.
140 MrStomak
 
22.02.13
11:21
Запрос с "Для изменения" на стороне MS SQL 2008R2 в управляемом (1) и автоматическом (2) режимах:

SELECT
T1._IDRRef
FROM _Reference7 T1

SELECT
T1._IDRRef
FROM _Reference7 T1 WITH(REPEATABLEREAD, UPDLOCK)
141 ВалераОшкин
 
22.02.13
11:23
(140)
Спасибо.
Значит все-таки "Для изменения" игнорируется платформой в управляемом режиме и передается в SQL в автоматическом режиме.
142 ВалераОшкин
 
22.02.13
11:24
+(141) А то уже хотел лезть и ДляИзменения вычищать :)
143 8vC1
 
22.02.13
11:44
Подписка выполниться в транзакции. Если в транзакции не указывать про режим, то будет блокировка по умолчанию (автоматическая) не обращая внимание на то, что флажок в регистре стоит на управляемый режим.
144 8vC1
 
22.02.13
11:45
Описано косвено в ЖКК.
145 ВалераОшкин
 
22.02.13
11:49
(143) > Если в транзакции не указывать про режим, то будет блокировка по умолчанию (автоматическая)

Это неверное утверждение.
146 ВалераОшкин
 
22.02.13
11:51
+(145) Если ты записываешь документ, на котором "Управляемый режим", то транзакция начнется в управляемом режиме.
147 8vC1
 
22.02.13
11:52
(145) То есть ты создал пост, чтобы доказать сам себе что тебя не справедливо слили с собеседования ?
148 ВалераОшкин
 
22.02.13
11:56
(147) я создал этот пост для того, чтобы убедиться, что мои знания верны или узнать как правильно
149 8vC1
 
22.02.13
11:57
(146) Ты там пишешь БлокировкаДанных
РежимБлокировкиДанных.Разделяемый или РежимБлокировкиДанных.Эксклюзивный.
А подписка пихает твою транзакцию в свою внешнюю.
150 ВалераОшкин
 
22.02.13
11:58
(149) тогда проголосуй как правильно

Всю жизнь думал, что не подписка создает транзакцию....
151 ВалераОшкин
 
22.02.13
12:00
+(150) а событие начала записи документа
152 ВалераОшкин
 
22.02.13
12:01
(149) т.е. ты утверждаешь, что подписка на событие первична и она создает транзакцию?
153 8vC1
 
22.02.13
12:04
(148) Ну вот на первом месте "мои знания верны". Признай уже наконец поражение. Это спец вопрос на который 99 процентов 1Сников не ответит, потому как вряд ли им это когда нибудь в работе пригодится и смысл которого посадить коллегу в лужу, доказав что он не так крут как тот кто спрашивает :)
154 MrStomak
 
22.02.13
12:04
(143) Расскажи побольше про инициацию транзакций подписками и особенно про фразу "по умолчанию (автоматическая)".
155 MrStomak
 
22.02.13
12:06
(146) Свойство документа не влияет на режим блокировок, если для конфигурации установлен "Управляемый".
156 Borteg
 
22.02.13
12:06
мля не одного поста не понял, пошел читать)
157 8vC1
 
22.02.13
12:07
(152) я тебе скопипастил на 1 странице из документации по платформе. Подписка создает свою транзакцию, внутри которой твоя управляемая. А в итоге будет тот режим который у транзакции подписки.
158 MrStomak
 
22.02.13
12:09
(157) Какая подписка? Я так понимаю, речь про подписки типа "Перед записью"? Я проверял трассировкой - уровень read comitted во всех транзакциях.
159 MrStomak
 
22.02.13
12:11
(157) Подписки вида "призаписи" или "припроведении" вообще не могут транзакцию начинать, так как выполняются внутри транзакции записи документа, а, как было сказано выше, фактически поддержки вложенных транзакций в 1С нет, всё выполняется в первой транзакции.
160 8vC1
 
22.02.13
12:14
Или даже наоборот будет вложенной транзакция ПриЗаписи в твою управляемую блокировку, все равно общий эффект будет с тем режимом какой у транзакции подписки.
161 ВалераОшкин
 
22.02.13
12:16
(157) На курсах утвердали, что платформа 1С не поддерживает вложенность транзакций. Транзакция всегда ОДНА.

В коде можно писать много уровней вложенности транзакций, но это игнорируется платформой и транзакция всегда ОДНА.
162 MrStomak
 
22.02.13
12:17
(161) Не игнорируется, там есть счетчик и менеджер блокировок отслеживает уровни, но на СУБД это всегда 1 транзакция.
163 ВалераОшкин
 
22.02.13
12:18
(162) Запутался. Давай забудем про СУБД. В платформе транзакция ОДНА?
164 ВалераОшкин
 
22.02.13
12:21
(159) А ПередЗаписьюСобытиеПодписки может транзакцию начинать?
165 Reset
 
22.02.13
12:26
(163) Одна, одна.
У 8vС1 какая то cвоя 1С c внешними транзакциями
166 ВалераОшкин
 
22.02.13
12:26
(162)
НачатьТранзакцию()
//Изменение данных №1
     
       НачатьТранзакцию()
     //Изменение данных №2
     ОтменитьТранзакцию()
     ЗафиксироватьТранзакцию()

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

Утверждаешь, что, изменение данных №2 откатится?
167 MrStomak
 
22.02.13
12:27
(163) В платформе нет. Там есть транзакция и есть счетчик, показывающий уровень вложенности. Но мы не может говорить о транзакции в отрыве от СУБД, потому что весь смысл транзакций в неделимости операций с данными, а это уже, как ты понимаешь, на стороне СУБД происходит. Так как на СУБД транзакция одна, то откатить она сможет тоже только её.
168 ВалераОшкин
 
22.02.13
12:27
(165) Спасибо :)
169 8vC1
 
22.02.13
12:27
Да написано, что вложенные транзакции не поддерживаются. Тода хз почему так.
Написано, что
в качестве источника в назначенный обработчик передается сам объект (набор записей) вызвавший событие;
то есть, как я понимаю он уже должен быть записан в базу.
170 MrStomak
 
22.02.13
12:28
(166) Rollback - это действие СУБД, не 1С.
171 ВалераОшкин
 
22.02.13
12:28
(167) Спасибо,пора составлять список людей, кому можно верить, а кому нет :)
172 MrStomak
 
22.02.13
12:29
(169) Объект и набор записей - это не записи в БД, это мутабельные значения, которые существуют только в приложении 1С.
173 sanja26
 
22.02.13
13:11
(172) ого, Леха, ну ты разошелся)
может и мне по роутеру объяснишь?
174 MrStomak
 
22.02.13
13:15
(173) Давай, я сегодня в боевом настрое!!:)
175 sanja26
 
22.02.13
13:17
269 105 673
тим вьюер 7
176 sanja26
 
22.02.13
13:18
2i52fa
177 8vC1
 
22.02.13
14:40
Ну если трассировка выдала read commited значит управляемый режим однозначно.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.