|
Помогите разобраться с блокировкой объектов | ☑ | ||
---|---|---|---|---|
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) спасибо, буду разбираться с материалом
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |