|
1С ДО 2.1 Установка разделяемой блокировки
PLUT, zippygrill, Гость из Мариуполя, СвинТуз, rbcvg, Смотрящий, DimVad, Timon1405, Волшебник, d4rkmesa, dedmoroz777, osa1C, 2S, Maestro2020
| ☑ |
0
zippygrill
07.10.24
✎
14:54
|
Привет,
За советом к вам ..
- программмно создается бизнес-процесс,
- заполняется
- записывается
- стартует
Все это происходит в транзакции. Хочу перед стартом БП - установить разделяемую блокировку на Предмет самого БП, чтобы соседние сеансы при попытки изменить Предмет, ожидали пока БП стартанет.
В коде, речь про сей кусок (БизнесСобытияВызовСервера.ОбработатьСобытиеАвтоматическийЗапускБизнесПроцессов) выглядит так ( упрощенный вариант )
Начало транзакции в предыдущей процедуре
...
БизнесПроцесс = БизнесПроцессы[Шаблон.ТипШаблона].СоздатьБизнесПроцесс();
БизнесПроцесс.Заполнить();
БизнесПроцесс.Записать();
БлокировкаДанных = Новый БлокировкаДанных();
ЭлементБлокировки = БлокировкаДанных.Добавить("Справочник." + Событие.Источник.Метаданные().Имя);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
ЭлементБлокировки.УстановитьЗначение("Ссылка", Событие.Источник);
БлокировкаДанных.Заблокировать();
СтартПроцессовСервер.СтартоватьПроцесс(БизнесПроцесс);
|
|
1
Волшебник
07.10.24
✎
14:56
|
блокировку установите до начала транзакции
|
|
2
zippygrill
07.10.24
✎
15:05
|
(1) А сама блокировка через УстановитьЗначение("Ссылка", Событие.Источник) - годна в таком случаем?
|
|
3
zippygrill
07.10.24
✎
15:16
|
(1) Забыл уточнить - что режим управления блокировкой данных - управляемый - поэтому и внутри транзакции надо
по причине:
Использование блокировки допустимо только внутри транзакции в режиме управляемых блокировок!
|
|
4
Волшебник
07.10.24
✎
15:20
|
|
|
5
Волшебник
07.10.24
✎
15:21
|
(3) Хотя бы поднимите в начало транзакции. Чем быстрее заблокируете, тем меньше рисков нарваться на изменение элемента.
|
|
6
zippygrill
07.10.24
✎
15:38
|
(5) спасибо, учту, разумно как можно раньше заблокировать..
|
|