|
v8: Перевод документов на управляемые блокировки | ☑ | ||
---|---|---|---|---|
0
RafaelRS
12.09.12
✎
16:02
|
В продолжение темы так сказать: v8: Помогите перевести документ на "Управляемые блокировки"
Поскольку перехожу на PostgreSQL, как никогда актуальна стала тема "Управляемых блокировок" Реализовал у себя это таким образом, может кому будет интересно, или поможет, или может у кого замечания по данному способу появятся. Делал обработку блокировок только для документов, т.к. вроде бы мне этого достаточно. Время покажет. // begin - RafaelRS mod - управляемые блокировки в регистрах Процедура УстановитьБлокировкуПоРегистратору(слкРегистратор) Экспорт БлокировкаДанных = Новый БлокировкаДанных; Для Каждого мтдРегистрДвижения Из слкРегистратор.Метаданные().Движения Цикл ЭлементБлокировки = БлокировкаДанных.Добавить(мтдРегистрДвижения.ПолноеИмя() + ".НаборЗаписей"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; ЭлементБлокировки.УстановитьЗначение("Регистратор", слкРегистратор); КонецЦикла; БлокировкаДанных.Заблокировать(); КонецПроцедуры Процедура УстановитьБлокировкуПоРегистраторуПриПроведении(Источник, Отказ, РежимПроведения) Экспорт УстановитьБлокировкуПоРегистратору(Источник.Ссылка); КонецПроцедуры Процедура УстановитьБлокировкуПоРегистраторуПриУдаленииДвижений(Источник, Отказ) Экспорт УстановитьБлокировкуПоРегистратору(Источник.Ссылка); КонецПроцедуры // end - RafaelRS mod - управляемые блокировки в регистрах Ну и так же создал две подписки на событие: ПриПроведенииУправляемыеБлокировки Источник: ДокументОбъект; Событие: ОбработкаПроведения ПриУдаленииПроведенияУправляемыеБлокировки Источник: ДокументОбъект; Событие: ОбработкаУдаленияПроведения которые вызывают вышеупомянутые процедуры. |
|||
1
neckto
12.09.12
✎
16:13
|
Объясни, зачем нужна управляемая блокировка на регистры, по которым не требуется контроль остатков?
|
|||
2
ptiz
12.09.12
✎
16:15
|
(0) Может удалить весь этот код, ничего не изменится.
|
|||
3
RafaelRS
12.09.12
✎
16:23
|
(2) Изменится - я не смогу проводить одновременно два документа которые двигают этот регистр
(1) Ребят, да вы походу ни разу не разворачивали базу на PostgeSQL. Там, если кто то двигает регистр, все остальные тупо ждут его, и не могу провести ничего, что пишет в этот регистр. |
|||
4
Reset
12.09.12
✎
16:34
|
(3) Ты не путаешь? Блокировки накладываются для того, что бы запретить что-то, а не наоборот.
+ к (1),(2) Код в (0) бесполезен |
|||
5
Лефмихалыч
12.09.12
✎
16:36
|
(4) управляемые блокировки накладываются, чтобы добиться параллельности
|
|||
6
neckto
12.09.12
✎
16:37
|
(3) Если ты имеешь ввиду, что при включении режима блокировок в Автоматический режим для Postgree происходит блокировка всей таблицы, то это так. Вопрос в (1) еще актуален
|
|||
7
Reset
12.09.12
✎
16:41
|
(5) Т.е. без блокировок (совсем, каждый делает что хочет) параллельности нет, наложили - поперла параллельность? С точностью наоборот. После наложения что-то становится нельзя сделать. Просто в (4) фраза настолько капитанствующая, что, видимо, ты ее неправльно понял.
|
|||
8
Reset
12.09.12
✎
16:42
|
(5) Скажем так, накладываются, чтобы при параллельности сохранить согласованность данных
|
|||
9
neckto
12.09.12
✎
16:43
|
(8) Какая согласованность данных на уровне координатора транзакций 1С нужна, если по регистру не требуется получать остатки?
|
|||
10
Reset
12.09.12
✎
16:44
|
(9) Я же не ТС, я не отвечу тебе.
|
|||
11
neckto
12.09.12
✎
16:45
|
Но в (8) ответил
|
|||
12
Reset
12.09.12
✎
16:46
|
(11) Не понимаю, о чем ты
|
|||
13
Шабалин Валентин
12.09.12
✎
16:46
|
(0) В PostgreSQL блокировки управляемые тебе выигрыша не дадут, т.к. особенность работы 1С с PostgreSQL в том, что она блокирует таблицу целиком.
|
|||
14
Лефмихалыч
12.09.12
✎
16:46
|
(7),(8) ай, не телепи мое айпи
|
|||
15
Шабалин Валентин
12.09.12
✎
16:46
|
+(13) и па сути PostgreSQL будет тупо игнорировать твои поползновения на блокировку набора записей
|
|||
16
Reset
12.09.12
✎
16:47
|
(13) Поперли "знатоки" ёма.
Ухожу из темы |
|||
17
neckto
12.09.12
✎
16:47
|
Как бы не так. В автоматическом режиме - блокировки таблиц. В управляемом режиме - блокировка записей
|
|||
18
Шабалин Валентин
12.09.12
✎
16:49
|
(17) PostgreSQL может блокировать записи в таблицах, но 1С это не поддерживает :(((
|
|||
19
Reset
12.09.12
✎
16:49
|
+(11) Я тебе кстати наоборот плюсанул в (4)
|
|||
20
Maxus43
12.09.12
✎
16:50
|
(18) всю жизнь поддерживала а сейчас нет? шо за ересь?
|
|||
21
neckto
12.09.12
✎
16:54
|
(19) угу, в (8) показалось, что ты в скобках 6 написал. Отвлекают меня от мисты (((
|
|||
22
RafaelRS
12.09.12
✎
16:59
|
(9) Честно говоря не понимаю твоего вопроса. Остатки да, получать не нужно, но ведь я блокирую все регистры, в которые документ пишет. Ибо если другой документ будет пытаться писать в эти регистры, без этого кода он не сможет это сделать, или я ошибаюсь?
(15) Ничего не игнорируется, код испытанный и работает. Без этого кода можно провести только один документ одновременно, с этим хоть два, хоть три и т.д. |
|||
23
neckto
12.09.12
✎
17:08
|
То есть ты хочешь сказать, что если у конфиги, документа и регистра стоит управляемый режим, то происходит блокировка на уровне таблиц? 1С заявляет, что блокировка на уровне записей. У тебя платформа последняя?
|
|||
24
Шабалин Валентин
12.09.12
✎
17:08
|
(22) ну значит 1С допилила свою платформу.
На 8.1 блокировалась таблица целиком. |
|||
25
neckto
12.09.12
✎
17:10
|
(24) Функционал заявлен еще в 8.1
|
|||
26
RafaelRS
12.09.12
✎
17:10
|
(23) Я управляемый режим поставил только у конфиги. Насколько знаю параметры документа и регистра в этом случае игнорируются. Или нет?
Платформа 8.2.16.352 |
|||
27
ptiz
12.09.12
✎
17:11
|
(22) Чудеса какие-то. Надо будет проверить, раз так утверждаешь.
|
|||
28
ptiz
12.09.12
✎
17:12
|
(26) Ну естественно! Более того, твой код (0) тоже игнорируется.
|
|||
29
RafaelRS
12.09.12
✎
17:12
|
(24) В 8.1 тоже все работало на уровне записей, с соответствующими дописками. По крайне мере Гилев об этом писал: http://www.gilev.ru/1c/81/postgresql/
|
|||
30
RafaelRS
12.09.12
✎
17:12
|
(28) Еще раз повторюсь - код не игнорируется, т.к. с ним работает, без него нет, щас испытаю ваше кунгфу :))))
|
|||
31
Reset
12.09.12
✎
17:13
|
(24) Все прекрасно работало еще на 8.1 и postrge 8.3.3, не обманывай
|
|||
32
neckto
12.09.12
✎
17:13
|
(26) Да, попробуй поиграться параметрами у объектов
|
|||
33
neckto
12.09.12
✎
17:15
|
Мало ли косяк платформы
|
|||
34
Reset
12.09.12
✎
17:15
|
(26) Управляемый - игнорируются, используется управляемый режим. АвтоматическийИУправляеый - используется проставленный в объектах
|
|||
35
john_ddd
12.09.12
✎
17:40
|
Тут все понятно
http://infostart.ru/public/144750/ |
|||
36
RafaelRS
12.09.12
✎
17:58
|
(35) Конечно спасибо, но речь тут у нас не об этом, а об особенностях работы с PostgreSQL. А так насчет управляемых блокировок тоже подкинул бы неплохую статью http://1cexpo.ru/informacziya/27-blokirovki-dannyx-v-1spredpriyatii-8.html
(32) Хммм, переключил, и правда заработало. Может дело в том, что конфа в режиме совместимости с 8.1. Щас поиграюсь еще и по переключаю |
|||
37
RafaelRS
12.09.12
✎
19:59
|
Короче тогда я не пойму, почему на многих форумах говорят, что для Постгре придется переписать конфигурацию, чтобы работало с блокировкой на уровне записей.
|
|||
38
pavig
12.09.12
✎
22:12
|
перевод режима записи в режим упр блокировок предусматривает собой установку блокировок программистом тольок в нужных ему местах (читай - в местах, в которых необходим контроль остатков)
|
|||
39
pavig
12.09.12
✎
22:16
|
(26) я тоже так думаю, и описано это где-то на ИТС:
- если у конфиги Упр режим, то ВСЕ транзакции будут выполняться в режиме упр блокировок - если режим "упр и авто" то начинаемая транзакция будет ориентироваться на свойство объекта, с которого она начинается (в твоем случае документ) - если авто, то везде авто |
|||
40
pavig
12.09.12
✎
22:19
|
(37) прописать - значит проставить упр блокировки для контроля остатков во избежание изменения остатков после их чтения но до момента завершения записи в БД
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |