1с ошибка использование блокировки допустимо только внутри транзакции

Вызов управляемых блокировок там, где не нужно.

Я
   CAPITALIST

24.05.17 — 07:50

Режим блокировок для всех таблиц в конфигурации установлен «Автоматический». В корне конфигурации ставлю режим «Автоматический и управляемый».

Пробую записывать разные таблички. Обнаружил, что при записи последовательности РасчетыПоПриобретениюОрганизации (проведение Поступления ТМЗ) выполняется алгоритм установки управляемой блокировки и выходит ошибка:

Использование блокировки допустимо только внутри транзакции в режиме управляемых блокировок!

Но режим блокировки для таблички Последовательности.РасчетыПоПриобретениюОрганизации установлен Автоматический.

Код типовой, не думаю что правильно что-то менять.

Что я упустил?

   sFAQer

1 — 24.05.17 — 08:14

(0) А у документа какой режим управления блокировкой?

   CAPITALIST

2 — 24.05.17 — 08:25

(1) Тоже автоматический. На всех таблицах в конфигурации автоматический.

   FIXXXL

3 — 24.05.17 — 08:30

https://its.1c.ru/db/metod8dev#content:5839:hdoc

Рассмотрим другой пример — интерактивное проведение документа, который выполняет движения по регистру накопления. В этом случае «первой» (неявной) транзакцией будет транзакция, открываемая системой при записи документа, а «второй» (также неявной) будет транзакция, открываемая системой при записи набора записей регистра накопления.

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

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

Из этих примеров можно сделать следующий общий вывод. Если, например, стоит задача повысить параллельность работы при проведении отдельного документа, не переводя при этом всю конфигурацию в управляемый режим, то последовательность действий должна быть следующей:

свойство конфигурации Режим управления блокировкой данных необходимо установить в значение Автоматический и управляемый;

свойство Режим управления блокировкой данных объекта метаданных документ необходимо установить в значение Управляемый;

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

проанализировать процедуру проведения документа на предмет наличия:

явных вызовов транзакций

неявных вызовов транзакций, которые выполняются системой при модификации данных каких-либо объектов конфигурации

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

для явных вызовов — параметр метода НачатьТранзакцию();

для неявных вызовов — свойство Режим управления блокировкой данных модифицируемого объекта конфигурации;

в теле процедуры проведения документа установить необходимые управляемые блокировки (об этом см. далее).

Установка управляемых блокировок

   ptiz

4 — 24.05.17 — 08:55

(0) «режим «Автоматический и управляемый» — зло. Можно много граблей насобирать, что и случилось. Лучше сразу на управляемый переходить.

   Ц_У

5 — 24.05.17 — 09:10

   CAPITALIST

6 — 24.05.17 — 09:11

(3) Еще раз повторюсь, что на всех таблицах режим «Автоматический». Использовать «Управляемый» не требуется. Данная информация по использованию управляемых блокировок не востребована. Востребована информация по использованию АВТОМАТИЧЕСКИХ блокировок в типовой УПП.

   ptiz

7 — 24.05.17 — 09:13

(6) «на всех таблицах режим «Автоматический»» — проверил все объекты? для гарантии обработкой пробегись по метаданным

   CAPITALIST

8 — 24.05.17 — 09:31

(7) Именно так и сделал. Проблема тут скорее всего в типовой конфигурации. Принятие решения об использовании алгоритма управляемых блокировок делается этим условием:

Если глЗначениеПеременной(«ИспользоватьБлокировкуДанных») Тогда

При этом режим блокировки самого объекта игнорируется. Если добавить в условие еще проверку свойства объекта метаданных, то решить проблему можно.

Такое условие много где по коду встречается. Меня смущает то, что это типовой код. Т.е. не был учтен режим «автоматический и управляемый», который задается в корне.

   FIXXXL

9 — 24.05.17 — 09:56

(8) возможно логика в том, что сначала переводим конфу в упр.блокировки, а затем галку глобальную ставим?

   CAPITALIST

10 — 24.05.17 — 11:40

(9) Тогда теряет смысл режим «автоматический и управляемый». Тогда должен быть или «Управляемый», или «Автоматический»

  

FIXXXL

11 — 25.05.17 — 08:45

(10) это про глобальный параметр? всё с ним норм, полконфы может жить в автомате, остально управляемо

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Komo

Дата регистрации: 23.01.2014
Сообщений: 4

«При обновлении конфирурации БП ред.3.027.9 на релиз 3.028.15 (платформа 8.3.4.389) «вылетает» ошибка:<br>{Константа.ПараметрыСлужебныхСобытий.МодульМенеджераЗначения(31)}:<br>                               Блокировка.Заблокировать();<br>по причине: Использование блокировки допустимо только внутри транзакции в режиме управляемых блокировок.<br>Помогите, в чем причина?»

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

В полностью типовой конфигурации в строке 29 как раз включается транзакция, а в свойстве конфигурации «Режим управления блокировкой данных» как раз установлен «Управляемый».

Komo

Дата регистрации: 23.01.2014
Сообщений: 4

Как мне обойти эту ошибку?

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

Проверить что из перечисленных параметров у вас отличается от типового варианта.

Komo

Дата регистрации: 23.01.2014
Сообщений: 4

Спасибо большое, все, обновила!

Дина

Дата регистрации: 21.05.2010
Сообщений: 2981

> Спасибо большое, все, обновила!<br><br>А рассказать сообществу как разрешили проблему?

Starsh

Дата регистрации: 23.01.2014
Сообщений: 8

> При обновлении конфирурации БП ред.3.027.9 на релиз 3.028.15 <br>А в названии «на 3.028.18». Ошибка?<br>Кстати, насколько понимаю, одну точку пропустили. Надо не «3.027.9», а «3.0.27.9»

Komo

Дата регистрации: 23.01.2014
Сообщений: 4

В свойствах конфигурации , в режиме управления блокировки данных в транзакции по умолчанию сменила с «Автоматического» на «Управляемый» , и все заработало!

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

У вас кто-то уже залез «шаловливыми рученками» в конфигурацию?

Показывать по
10
20
40
сообщений

Читают тему:

Здравствуйте,

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

{ОбщийМодуль.внЖурналРегистрацииСервер.Модуль(492)}: Ошибка при вызове метода контекста (Заблокировать)
Блокировка.Заблокировать();
по причине:
Использование блокировки допустимо только внутри транзакции в режиме управляемых блокировок!

Ошибка возникает в процедуре «РегистрацияИзмененияОбъекта», которая по логике вызывается как при подписках записи объектов, так и при начальном заполнении. Но разница в том, что при записи объектов платформа неявно открывает транзакцию самостоятельно, а при начальном заполнении явного открытия транзакции я не увидел, т.е. происходит попытка блокировки вне транзакции. Впрочем, код просматривал бегло, может и пропустил чего или недопонял.

Платформа: 8.3.15.1489
Тип клиенского приложения: обычное приложение
Инструменты разработчика. Версия: Портативный 5.75.1p
Конфигурация. Название: Торговый дом 7 SE (7.0.43.4.5)
Режим совместимость: не использовать
СУБД: MS SQL Server 14.0.1000.169

При попытке заменить ссылки по правилам замены в «Поиске дублей и замене ссылок» возникает ошибка: « Ошибка при вызове метода контекста (Заблокировать): Использование блокировки допустимо только внутри транзакции в режиме управляемых блокировок!».
Порядок воспроизведения:
Добавить правило замены одного элемена справочника «Контрагенты» на другой
Нажать на «Поиск ссылок»
После завершения поиска нажать на «Выполнить замену».

Почему так происходит? Есть ли способ обхода?

Добрый день! Уважаемые, подскажите никто не сталкивался с такой проблемкой при использовании обработки Восстановление последовательности расчетов и Проведение документов по регистрам НДС возникают ошибки — Ошибка при вызове метода контекста (Заблокировать): Использование блокировки допустимо только внутри транзакции в режиме управляемых блокировок! Тащемся в отладчик (УстановитьУправляемуюБлокировку) далее стек всё типовое! Комплексная автоматизация, редакция 1.1 (1.1.82.2) подскажите что можно сделать?

Используй управляемые блокировки, падаван!

В свойствах конфигурации режим управления блокировки данных — управляемый

Несколько заказчиков на КА1.1. Восстановление последовательности расчетов точно делают, проблем не было. 1. почистить кэш 2. обновиться на последнюю (там отчетность вышла, так что всё равно придется скоро обновляться)

1. Делал на разных машинах. ок, запустил тестирование, как будет результат напишу…

похоже местные ваши программисты влезли в проведение и что-то подхимичили. Поспрашивай там, не менял ли кто конфу в последнее время.

вроде не меняли, все документы нормально проводятся. Но при использовании обработок вылазиют ошибки аки кролик из шляпы. причем ошибка лезет при попытки заблокировать не изменённые регистры

Ничего не понимаю, при ручном проведении блокируют тоже самое что и в обработках. Но в первом случае без ошибок, а в обработках лезут ошибки

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

  • 1с ошибка исключительной блокировки информационной базы com соединение
  • 1с ошибка интерфейса модуля криптографии набор ключей зарегистрирован недействительным
  • 1с ошибка инициализации модуля регламентное задание
  • 1с ошибка инициализации защищенных функций
  • 1с ошибка идентификация пользователя не выполнена неправильное имя или пароль пользователя