Управляемые блокировки - невозможно удалить документ #700053


#0 by К_Дач
Для обеспечения параллельной работы пользователей перевел конфигурацию в режим работы блокировок: "Автоматический и управляемый". У документа выставил "управляемый". У регистров, по которым он делает движения - "управляемый". В модулях наборов записей "ЭтотОбъект.БлокироватьДляИзменения = Истина", в процедуре "ПередЗаписью". Во всех РС, где ведущее измерение может быть этим документом - "управляемый". В планах обмена, где регистрируется документ - также "управляемый", в ПВХ, одним словом везде, где есть ссылки на данный документ. Сделал это для избежания ситуации, когда внутри управляемой транзакции может быть вложенная автоматическая. Проведение документа отрабатывает на ура. Одновременно создаются, проводятся, все гуд. А вот интерактивно удалить - не выходит никак. Пометка на удаление нормально отрабатывает, документ помечается на удаление. А вот Shift+Del не работает - "Автоматический режим блокировок недопустим в этой транзакции". Предположил, что я все-таки упустил какую-то ссылку и внутри транзакции управляемой есть вложенная... Создал в базе новый документ, без реквизитов, движений и проч, только тупо код и наименование, выставил режим блокировок "управляемый". Ввожу документ, записываю. Shift+Del - "Автоматический режим блокировок недопустим в этой транзакции". Получается, в режиме конфы "Автоматический и управляемый", при свойстве объекта "управляемый" - его нельзя удалить??? Зачем тогда вообще сделан этот режим.... Релиз платформы 8.2.19.80 Хелп, плз
#1 by К_Дач
Удалить через контроль ссылочной целостности тоже нельзя, кстати
#2 by 13_Mult
А посмотреть как в типовых устроено?
#3 by Tateossian
В какой типовой управляемые блокировки?
#4 by К_Дач
я делал в соответсвии с рекомендациями
#5 by 13_Mult
тут читал
#6 by ptiz
Значит, документ является "ведущим" в измерении какого-нибудь регистра сведений. Например, измерение со свойством "любая ссылка". У этих РС тоже надо поставить "Управляемый" режим.
#7 by 13_Mult
у любой
#8 by К_Дач
В типовой УПП, например выставлен режим "управляемый". Если в моей базе сделать так же, то документ нормально удаляется. Но! Если у конфы этот режим, то ВСЕ транзакции в базе открываются с управляемыми блокировками, а это значит, что мне придется все механизмы перелопачивать. А требуется обеспечить паррралельную работу всего лишь одного документа. ты внимательно читал ??? Новый документ, ни в каких РС и вообще нигде на него ссылок нет! Тупо Документ1: код, наименование
#9 by К_Дач
при чем тут объект "Блокировка" и как им пользоваться, это не имееет отношения к моему вопросу в данном случае...
#10 by zladenuw
при том. что если у документа упр блокировки. то нужно использовать объект бликировка. плохо ты читал там есть раздел "Рекомендации по модификации конфигураций при переходе к режиму управляемых блокировок "
#11 by ptiz
Ты внимательно читал ? "Например, измерение со свойством "любая ссылка"." - т.е. любой новый документ автоматом при удалении повлечет запрос на очистку этого РС.
#12 by ptiz
Поставь "автоматический" режим, удали документ и посмотри в журнале регистрации: какие РС при этом чистились.
#13 by К_Дач
все РС, где есть ведущее измерение с типом "любая ссылка" или "ДокументСсылка" - управляемый режим
#14 by К_Дач
в соответствии с этими рекомендациями и делал. Я блокирую наборы записей регистров в момент проведения, чтения данных нет в этом документе
#15 by Necessitudo
Кстати интересная тема. Сталкивался - но не поборол(
#16 by К_Дач
Я сейчас проверяю внимательно по совету из , отпишусь
#17 by Tateossian
Блокируешь наборы объектом БлокировкаДанных? Ну и что толку, все объекты в автоматическом режиме. Выходит, блокировка неявная создается платформой. Во всей конфе (УПП) глобальный поиск по БлокировкаДанных выдал 7 вхождений.
#18 by К_Дач
Блокирую наборы в модулях наборов: ЭтотОбъект.БлокироватьДляИзменения = Истина, "ПередЗаписью"
#19 by Tateossian
Может, в "ПередУдалением" тоже надо явно указывать блокировку?
#20 by К_Дач
нет. мне что-то подсказывает, что прав, просто объектов (РС) много и я мог какой-то один упустить
#21 by Tateossian
А вообще скорость проведения повысилась, в общем, на управляемых блокировках?
#22 by MrStomak
Открою жуткую тайну - когда для конфы стоит управляемый режим, то неважно что там стоит у объектов.
#23 by ptiz
Не зависит от этого скорость. Параллельность работы повышается.
#24 by К_Дач
повысилась, самое главное - теперь можно одновременно проводить документы. Правда, от дедлока на уровне SQL это все равно не спасает (когда два документа пытаются одинаковый набор измерений записать)
#25 by Tateossian
А тогда почему для объектов стоит "автоматический режим" и явно не создается объект БлокировкаДанных в каждой обработке проведения?
#26 by MrStomak
Зачем ставить блокировку данных в каждой обработке проведения?
#27 by Tateossian
Если я правильно понимаю, в управляемом режиме блокировок для объекта блокировки должны устанавливаться программно.
#28 by ptiz
Если они нужны.
#29 by Tateossian
Нет, СУБД тогда сама установит блокировки. И, вероятно, с большим пространством.
#30 by ptiz
Ага, и на все объекты базы сразу :)
#31 by Tateossian
Только в транзакции.
#32 by MrStomak
Это ты выдумываешь так? Платформа всегда ставит блокировку при записи объекта. Естественно, на записываемое пространство. И блокировка, которую ты поставишь до этого, на меньшее пространство, никак не повлияет - свою платформа всегда поставит.
#33 by К_Дач
ты был прав все-таки))) спасибо!!! один подлый регистр сведений с пометкой в наименовании "не использовать" на самом деле очищался при удалении. Самая сложность при переводе с автоматического режима на управляемый - это внимательно обойти все объекты. Переводишь один документ в управляемый режим - он двигает один регистр, его тоже переводишь. У этого регистра есть и другие регистраторы - их тоже переводишь, у регистраторов есть другие движения - и их тоже и так до конца... Можно этого и не делать, если блокировку ставить не в модуле набора записей с помощью "БлокироватьДляИзменения", а например в обработке проведения с помощью объекта "БлокировкаДанных". Иначе, если документ в автоматической транзакции будет проводиться по регистру, где написано БлокироватьДляИзменения = Истина - вывалится ошибка. спасибо еще раз)))
#34 by Tateossian
Да, я стормозил. Тут ты прав. Но это т.н. объектная блокировка. Или я чего-то недогоняю. Специально сейчас провел документ "Поступление товаров и услуг" УПП, а в профайлере поставил фильтр на Lock. У меня он чуть не завис при проведении документа. Короче, их миллион в секунду.
#35 by MrStomak
Это не объектная, а управляемая блокировка. Lock в профайлере не имеет никакого отношения к управляемым блокировкам. Смотреть из надо в ТЖ по событию TLock.
#36 by ptiz
Я бы всё-таки подумал - стоит ли так мучаться. Прописать  блокировки в критичных местах обычно не слишком долго, и сразу поставить всю конфу на "управляемый" режим.
#37 by К_Дач
"критичные места" - ты имеешь ввиду там, где во время записи может быть одновременно и чтение данных? например, контроль остатков? какие еще могут быть ситуации, кстати?
#38 by ptiz
"может быть одновременно и чтение данных" - да, управляемые блокировки и нужны для того, чтобы исключить одновременное чтение, когда это не нужно. Других ситуаций не могу придумать. Прописать их в тех документах, которые вводятся сплошным потоком, и радоваться жизни.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С