Перейти к основному содержимому

При режиме управления блокировкой данных в транзакции по умолчанию: Автоматический и управляемый возникают ошибки. Почему?

Согласно https://its.1c.ru/db/metod8dev#content:5839:hdoc

  1. Существующая блокировка Управляемая     \implies Регистр сведений Управляемый режим
    Проводится документ например в управляемой транзакции.

Начинаемая транзакция будет выполнена в управляемом режиме

  1. Существующая блокировка Автоматическая     \implies Регистр сведений Управляемый режим

Начинаемая транзакция будет выполнена в автоматическом режиме

  1. Существующая блокировка Автоматическая     \implies Регистр сведений Автоматический режим

Начинаемая транзакция будет выполнена в автоматическом режиме

  1. Существующая блокировка Управляемая     \implies Регистр сведений Автоматический режим

Будет вызвана исключительная ситуация

Фиксирование данных в кэше идет по следующему алгоритму: объект изменения начинает транзакцию со своим типом блокировки, в работающей транзакции, срабатывает подписка на событие и фиксирует изменение в кэш уже в своей блокировке (см пункты выше). Проблема возникает только там, где стоит режим блокировок в начале транзакции "Автоматический" в объектах. При этом обратите внимание, что вне зависимости от того, какой режим транзакций будет у регистра кэша, будет возникать проблема. Если регистр кэша будет с автоматическим режимом, то если у объекта источника изменений режим управления транзакциями стоит Управляемый, то будет исключительная ситуация, если же регистр будет на управляемых блокировках, то если у объекта источника изменений режим управления транзакциями будет стоять Автоматический, то транзакция будет так же в автоматической блокировке и вот здесь у Вас проблемы с транзакциями. Что имеем? Без перевода объектов источников изменений в управляемый режим управления блокировками ничего, к сожалению, не решить. Подсистема здесь не играет никакой роли, все транзакции начинаются с объектов конфигурации, а значит нужно менять режим у них.

Как можно выйти из сложившейся ситуации?

  1. Регистр сведений внКэшЖурналаРегистрации, должен быть на управляемых блокировках.
  2. Оставить регистрацию в настройках подсистемы объектов только с управляемыми блокировками.
  3. Постепенно осуществить перевод тех объектов, которые на автоматических блокировках и которые необходимо фиксировать на управляемый режим (объектов и регистров с ними связанными)
  4. После перевода на управляемые блокировки включить их в регистрируемые объекты подсистемы.

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