|   |   | 
| 
 | Управляемые блокировки | ☑ | ||
|---|---|---|---|---|
| 0
    
        Мэс33 17.10.13✎ 16:09 | 
        Вопрос назрел, други.
 Правильно ли будет устанавливать управляемую блокировку на Регистр бухгалтерии таким образом? ОбъектБлокировки_БУ = Блокировка.Добавить("РегистрБухгалтерии.Типовой. ОбъектБлокировки_БУ.Режим = РежимБлокировкиДанных.Исключительный; ОбъектБлокировки_БУ.УстановитьЗначение("Регистратор", СтруктураШапкиДокумента.Ссылка); Документ должен просто записать данные в регистр, остатки и прочее - не важны. Используется Oracle в качестве БД. | |||
| 1
    
        Мэс33 17.10.13✎ 16:09 | 
        Сорри, скопировал неверно:
 ОбъектБлокировки_БУ = Блокировка.Добавить("РегистрБухгалтерии.Типовой.НаборЗаписей"); ОбъектБлокировки_БУ.Режим = РежимБлокировкиДанных.Исключительный; ОбъектБлокировки_БУ.УстановитьЗначение("Регистратор", СтруктураШапкиДокумента.Ссылка); | |||
| 2
    
        Господин ПЖ 17.10.13✎ 16:10 | 
        если его там еще нет - не заблокируется вся таблица?     | |||
| 3
    
        Господин ПЖ 17.10.13✎ 16:12 | 
        и вообще смысл глобальный блокировать руками если надо "просто записать"     | |||
| 4
    
        Мэс33 17.10.13✎ 16:12 | 
        Тоже отличный вопрос?     | |||
| 5
    
        Мебиус 17.10.13✎ 16:12 | 
        Вопрос 
 Если нет чтения данных зачем вообще в этом случае устанавливать исключительную блокировку? | |||
| 6
    
        Мэс33 17.10.13✎ 16:13 | 
        Руками как понимает имеет смысл - так как этот один документ вводится массово. А оракл блокирует всю таблицу.     | |||
| 7
    
        Мебиус 17.10.13✎ 16:14 | 
        блокировка всей таблицы происходит если в таблице нет или очень мало записей     | |||
| 8
    
        krbIso 17.10.13✎ 16:14 | 
        при записи блокировки автоматом ставятся.     | |||
| 9
    
        Мэс33 17.10.13✎ 16:14 | 
        Что-то с моим "русским языком" не то.. под вечер с ошибками пишу. Заранее извиняюсь.     | |||
| 10
    
        Мебиус 17.10.13✎ 16:15 | 
        (6)
 в транзакции блокируются только те записи, что читаются или изменяются | |||
| 11
    
        Мэс33 17.10.13✎ 16:15 | 
        А при перепроведении?     | |||
| 12
    
        Мэс33 17.10.13✎ 16:16 | 
        (10) То есть при записи - необходимости в блокировке нет точно?     | |||
| 13
    
        Мебиус 17.10.13✎ 16:17 | 
        да нет     | |||
| 14
    
        Мебиус 17.10.13✎ 16:17 | 
        только при проведении или перепроведении     | |||
| 15
    
        Мебиус 17.10.13✎ 16:18 | 
        и необходимости в управляемой блокировке вообще в данном случае нет     | |||
| 16
    
        Мэс33 17.10.13✎ 16:18 | 
        Но он - не мешает? По крайней мере?     | |||
| 17
    
        Мэс33 17.10.13✎ 16:20 | 
        (14) То есть, при создании движений, пока еще в регистре бухгалтерии нет записей по данному документу, блокировка в принципе не нужна? И блокировок не будет?
 А если в этот момент создается другой документ? Или документ другого вида? Массово? | |||
| 18
    
        Мебиус 17.10.13✎ 16:22 | 
        (16)
 Мешает, потому что ты блокируешь записи преждевременно в этот момент другой документ мог бы туда что нибудь записать то есть ты снижаешь производительность | |||
| 19
    
        Infsams654 17.10.13✎ 16:22 | 
        (0) из-за чего такой вопрос? Есть обработка, которая долго чего пишет ? Если такй нет, то и нечего блокировку ставить     | |||
| 20
    
        Мэс33 17.10.13✎ 16:23 | 
        (18) Какие записи блокируются преждевременно, если их нет на момент создания проводок?     | |||
| 21
    
        Мебиус 17.10.13✎ 16:24 | 
        (17)
 управляемые блокировки имеют смысл только в том случае если ты что прочитал в транзакции (например таблицу партии для списания) а затем хочешь изменить | |||
| 22
    
        Новиков 17.10.13✎ 16:25 | 
        (20) откуда инфа? Космос? :)     | |||
| 23
    
        Новиков 17.10.13✎ 16:26 | 
        (20) посвечу в ваш космос своим дартаньяновским лучиком: а как же таблица итогов регистра? Она не изменяется, не - когда вы проводки то пишите? :)     | |||
| 24
    
        Мэс33 17.10.13✎ 16:26 | 
        (19) Есть УПП, в нем есть несколько документов с использованием управляемых блокировок. Остальные - с автоматическими блокировками.
 Вопрос возникает, а если все важные документы перевести на управляемые? Но многие документы не проверяют остатки, а просто пишут проводки. Стоит ли тогда переводить на управляемые? | |||
| 25
    
        Мэс33 17.10.13✎ 16:26 | 
        (22) А вот я и не знаю. Вопрошать пришел сюда потому.     | |||
| 26
    
        Мэс33 17.10.13✎ 16:27 | 
        (23) Тут наверху сказали - зачем блокировать, если записи только создаются?     | |||
| 27
    
        Новиков 17.10.13✎ 16:28 | 
        (26) правильно сказали. Руками смысл блокировки только при записи никакой нет.     | |||
| 28
    
        Мэс33 17.10.13✎ 16:29 | 
        Хм... пошел думать. Домой.
 Завтра продолжу эту ветку. Есть интересные вопросы. | |||
| 29
    
        Новиков 17.10.13✎ 16:33 | 
        >> Вопрос возникает, а если все важные документы перевести на управляемые?
 Нужно смотреть не документы, а регистры. Выявлять те регистры, на которых проявляются блокировки. И уже по ним делать управляемые блокировки. >> Но многие документы не проверяют остатки, а просто пишут проводки. Ну и отлично. В РБ у тебя стоит скорее всего "разрешить разделение итогов". Это обеспечит отсутствие блокировок в момент записи. Всё гут. Зачем ты вообще задался этим вопросом? :) Пользователя начали жаловаться? Проявляются какие-то артефакты в прикладной логике решения? Или делать нефик просто? Если делать нефик - учи СКД, БСП, КД. Просто с дурки, как ты, можно сделать гораздо хуже, чем уже есть :) | |||
| 30
    
        Infsams654 17.10.13✎ 16:34 | 
        (28) "Есть УПП, в нем есть несколько документов с использованием управляемых блокировок" - это сродни тому, что "Есть обработка, которая долго чего пишет ". Т.е. при проведении этих документов не должно что-то такое нахлыбустнуть от кого-то постороннего.
 Но это уж явно крайне редкий случай | |||
| 31
    
        Мебиус 17.10.13✎ 16:38 | 
        (30)
 то за бред? ТС пытался установить приправляемую блокировку там где она в принципе не нужна, ему объяснили что это неправильно а ты о чем? | |||
| 32
    
        Мебиус 17.10.13✎ 16:38 | 
        (30)
 "Т.е. при проведении этих документов не должно что-то такое нахлыбустнуть от кого-то постороннего" это явно клинический случай)) | |||
| 33
    
        Новиков 17.10.13✎ 16:40 | 
        (32) задайся вопросом, ТС помнит наизусть табличку, в которой показано какая блокировка будет установлена в транзакции, в зависимости от типа управления блокировкой на документе и регистре. 
 Ну кароче. Совет автору - не лазить пока туда. 100% решение верное, в данном случае :) | |||
| 34
    
        exwill 17.10.13✎ 16:45 | 
        (0) Блокировки имеет смысл устанавливать на другие поля, но не на регистратор. Подумай сам, какой смысл в блокировке на регистратор?     | |||
| 35
    
        Новиков 17.10.13✎ 16:49 | 
        (34) Если ТС пишет запрос, в котором принимает решение об отказе по анализу регистратора, то вот тебе и смысл. Его тупо никто не должен даже прочитать. В чем проблема?     | |||
| 36
    
        exwill 17.10.13✎ 16:56 | 
        (35) Блокируется регистр.     | |||
| 37
    
        Мебиус 17.10.13✎ 16:59 | 
        (35)
 кого прочитать? регистратор? (34)смысл может быть но не в данном случае | |||
| 38
    
        Новиков 17.10.13✎ 17:01 | 
        (37) регистратор. Если так алгоритм построен, что отказ принимается по прочитке какого-то потрошонка из регистратора 
 (36) с чего вдруг? | |||
| 39
    
        Новиков 17.10.13✎ 17:04 | 
        (37) хотя в этом случае, в упр.блокировках нужно разделяемую блокировку накладывать, а не исключительную. Исключительную, если мы вдруг соберемся потрошонка менять. Вот так я полагаю как-то. Есть смысл, когда стоит лочить сам регистратор. 
 Я пока такого в практике не видел, но скорее всего, такое бывает :) | |||
| 40
    
        McNamara 17.10.13✎ 17:09 | 
        (0)Давайте рассуждать логически, есть 4 уровня изоляции:
 1)запись-запись 2)запись-чтение 3)чтение-запись 4)чтение-запись новой Управляемая блокировка в 1с понижает уровень изоляции до 2. То есть при записи будет все просходить все равно автоматически, а при чтении уже можно что-то изолировать в коде. Следовательно вывод, если транзакция пишет данные и ничего не читает, то система и так отработает сама, никакие блокировки устанавливать не нужно. | |||
| 41
    
        McNamara 17.10.13✎ 17:14 | 
        (0) то есть если ты пишешь в регистр, то это транзакция записи. И она будет защищена от других транзакций по 2 уровню изоляции. То есть система сама при таком уровне изоляции не даст другим читающим и пишушим транзакциям ничего одновременн записать. Делать в этом случае блокировку в коде- ни на что не повлияет то есть бессмысленно...вроде так.     | |||
| 42
    
        Мэс33 18.10.13✎ 06:52 | 
        Доброе утро.
 Итак... я на работе. Пришел снова с теми вопросами. Насчет моего кода во втором комментарии - он уже стоит в документе, его написали до меня. Как понимаю, есть два вывода: 1) чтобы при перепроведении не было взаимоблокировок, лучше ставить управляемую блокировку (напомню, БД - Оракл, на регистре бухгалтерии и в документе стоит - управляемые блокировки); 2) применить лучше разделяемые блокировки, так как в принципе в этом документе не важны, какие были остатки на счетах, блокировать нечего для чтения другими документами. Верно? (41) Это я уже понял, что при записи будет блокировка в любом случае. Но при перепроведении - лучше ставить? Или я не прав. ЖКХ - читал, но видимо мне этого недостаточно. Есть примеры в инете, но все авторы там рассуждают о списании остатков товаров, где важно иметь точные данные об остатках. | |||
| 43
    
        floody 18.10.13✎ 06:58 | 
        вроде уже выяснили, что блокировки накладывать в данном случае не нужно?     | |||
| 44
    
        Мэс33 18.10.13✎ 07:07 | 
        А теперь - внимание.
 Код другого документа. Там есть движения по регистру накопления, остатки которого на момент проведения документа - важны. Имеется код, уже написанный, кто прокомментирует? Блокировка = Новый БлокировкаДанных; ОбъектБлокировки_БУ = Блокировка.Добавить("РегистрБухгалтерии.Типовой.НаборЗаписей"); ОбъектБлокировки_БУ.Режим = РежимБлокировкиДанных.Исключительный; ОбъектБлокировки_БУ.УстановитьЗначение("Регистратор", СтруктураШапкиДокумента.Ссылка); // Для каждого СтрокаНовыйДоговор из ТаблицаПоГрафику Цикл Если не ПустаяСтрока(СтрокаНовыйДоговор.НомерНовогоДоговора) Тогда ОбъектБлокировки_НовыйДоговор_БУ = Блокировка.Добавить("РегистрНакопления.НекийРегистр"); ОбъектБлокировки_НовыйДоговор_БУ.Режим = РежимБлокировкиДанных.Исключительный; ОбъектБлокировки_НовыйДоговор_БУ.УстановитьЗначение("НомерДоговора", СтрокаНовыйДоговор.НомерНовогоДоговора); КонецЕсли; КонецЦикла; // ОбъектБлокировки_НовыйДоговор = Блокировка.Добавить("Документ.НекийДокумент"); ОбъектБлокировки_НовыйДоговор.Режим = РежимБлокировкиДанных.Разделяемый; ОбъектБлокировки_НовыйДоговор.УстановитьЗначение("Ссылка", СтруктураШапкиДокумента.Ссылка); // ОбъектБлокировки_НовыйДоговор_БУ = Блокировка.Добавить("РегистрНакопления.НекийРегистр"); ОбъектБлокировки_НовыйДоговор_БУ.Режим = РежимБлокировкиДанных.Разделяемый; ОбъектБлокировки_НовыйДоговор_БУ.УстановитьЗначение("НомерДоговора", СтруктураШапкиДокумента.Номер); // ОбъектБлокировки_НовыйДоговор_БУ = Блокировка.Добавить("РегистрБухгалтерии.Типовой"); ОбъектБлокировки_НовыйДоговор_БУ.Режим = РежимБлокировкиДанных.Разделяемый; ОбъектБлокировки_НовыйДоговор_БУ.УстановитьЗначение("Счет", ПланыСчетов.Типовой.НекийСчет); ОбъектБлокировки_НовыйДоговор_БУ.УстановитьЗначение("Субконто2", СтруктураШапкиДокумента.Ссылка); //в субконто ссылка на сам документ Блокировка.Заблокировать(); //{тут собственно проводки формируются с расчетом остатков по РН.НекийРегистр //тут собственно проводки формируются} ПроводкиБУ.Записать(Ложь); ДвиженияПереносимыхПремий.Записать(Ложь); | |||
| 45
    
        Мэс33 18.10.13✎ 08:33 | 
        UP     | |||
| 46
    
        mikeA 18.10.13✎ 09:16 | 
        (45) что ап, спалился ты )))
 ДвиженияПереносимыхПремий.Записать(Ложь); | |||
| 47
    
        Мэс33 18.10.13✎ 09:27 | 
        (46) Вот блин :-)) а вроде старался тариться :-)     | |||
| 48
    
        Infsams654 18.10.13✎ 09:39 | 
        (31) еще на мотоцикле. Это не Defender ?     | |||
| 49
    
        Новиков 18.10.13✎ 10:22 | 
        (44) пояснения к твоему коду:
 Набор записей РБ документа будет где-то дальше изменяться, т.к. он лочится исключительно. Дальше идет глупейший цикл, но смысл тот же: в РегистрНакопления.НекийРегистр будет что-то писаться. Из РегистрНакопления.НекийРегистр будет что-то читаться ниже. Из РБ также будет что-то читаться с отбором по счету и субконто2. Кроме цикла, претензий у меня нет. Все гут. | |||
| 50
    
        Мэс33 18.10.13✎ 10:31 | 
        Ну слава Аллаху.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |