|
Помогите разобраться с блокировкой объектов |
☑ |
0
Игорь_МММ
14.12.16
✎
10:57
|
Мне нужно выполнить некоторые манипуляции с разными объектами в одной транзакции (то бишь либо все либо ничего). Как гарантировано заблокировать все объекты ? Так понял что метод Заблокировать - не гарантия в целом. Объект БлокировкаДанных можно навесить только на целый справочник, на конкретный объект (справочник, документ) его навесить не получится?
|
|
1
Рэйв
14.12.16
✎
11:08
|
получится
|
|
2
bodri
14.12.16
✎
11:14
|
(0) Если не MS SQL то не получится, т.к. вроде только MS SQL может блокировать строку таблицы. В файловой точно не получится, т.к. блокируется полностью таблица.
|
|
3
Лефмихалыч
14.12.16
✎
11:15
|
(0) если база не файловая, то ты всё понял не правильно. Если файловая, то правильно лишь от части
|
|
4
Мимохожий Однако
14.12.16
✎
11:17
|
(0) НачатьТранзакцию() и т.п.не помогает?
|
|
5
Fragster
гуру
14.12.16
✎
11:20
|
.заблокировать - это проверить, что ни один юзер не получит "Версия была изменена или удалена", пока пол часа заполняет документ инвентаризации
|
|
6
Игорь_МММ
14.12.16
✎
11:33
|
(4) в транзакции пробовал НачатьТранзакцию()/ЗафиксироватьТанзакцию(). Но по ходу выполнения поставил ОтменитьТранзакцию() - так все что было сделано, то осталось (в частности удаление дока)
(5) как я понял .Заблокировать просто добавляет 1 в версию, но если кто-то откроет док после этого, то запросто сделает все что захочет.
(2) (3) сейчас файловая, но предполагаю переход на клиент-серверную.
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Полуфабрикаты");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.УстановитьЗначение("Ссылка", Справочники.Полуфабрикаты.НайтиПоКоду("1"));
Блокировка.Заблокировать();
- так будет корректно?
|
|
7
DSSS
14.12.16
✎
11:35
|
Правильный ответ в (4)
|
|
8
Fragster
гуру
14.12.16
✎
11:46
|
(6).2 неправильно понял посмотри, как сделано в Зацените канбан доску на 1с с перетаскиванием на доске и формой итерации
|
|
9
Fragster
гуру
14.12.16
✎
11:51
|
всё или ничего - это начать транзакцию/зафиксировать транзакцию. блокировка данных и/или Для изменения в запросе - для того, чтобы не менялись данные, на которые ты опираешься в своих действиях. объект.заблокировать() - чтобы не было ошибки про несоответствие версии у пользователя или двух несогласованных изменений объекта при программном изменении в разных сеансах.
|
|
10
Игорь_МММ
14.12.16
✎
11:57
|
(9) спасибо, буду разбираться с материалом
|
|