|
Как заблокировать целый справочник | ☑ | ||
---|---|---|---|---|
0
nemavasi
26.11.14
✎
14:37
|
Есть иерархический справочник неограниченного уровня вложенности. Между объектами, кроме встроенных связей (через поле Родитель), есть еще другие связи, задаваемые табличной частью у каждого элемента. Грубо говоря, одни и те же элементы находятся в разных деревьях, причем у одного элемента во втором дереве могут быть несколько родителей. Есть такая задача, что при сохранении новых связей в справочнике нужно проверять, не получается ли зацикливания (т.е. чтобы деревья оставались деревьями, а не превращались в орграф). Проверка на зацикленность реализована. Но! Получается, что перед проверкой на зацикленность нужно заблокировать целый справочник (на чтение и запись), потому что может быть запущена вторая сессия, тоже проверяющая отсутствие циклов и записывающая новые связи.
Кто сталкивался с блокировкой именно справочников, а не других объектов 1С? |
|||
1
Banned
26.11.14
✎
14:39
|
Не запускать вторую сессию, пока запущена первая - не вариант?
|
|||
2
СвинТуз
26.11.14
✎
14:40
|
БлокировкаДанных
Имя пространства блокировки. П оддерживаются следующие имена пространств блокировки: Справочник.<имя>; |
|||
3
18_plus
26.11.14
✎
14:40
|
||||
4
Kamas
26.11.14
✎
14:40
|
(1) константа идет сортировка не устроит??
|
|||
5
Banned
26.11.14
✎
14:41
|
(4) Меня - нет.
|
|||
6
Kamas
26.11.14
✎
14:42
|
(5) Жаль, а такие надежды были
|
|||
7
Banned
26.11.14
✎
14:42
|
(6) Извини, что разочаровал
|
|||
8
Крошка Ру
26.11.14
✎
14:43
|
(7) Не привередничай, бери пока предлагают
|
|||
9
Banned
26.11.14
✎
14:43
|
(8) Не, у меня своя есть...
|
|||
10
СвинТуз
26.11.14
✎
14:44
|
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Номенклатура"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; Блокировка.Заблокировать(); Не пробовал так? Не комильфо что ли? Выбери все элементы. И укажи . |
|||
11
palpetrovich
26.11.14
✎
14:44
|
(0) а можно поинтересоваться, зачем такой справочник? ...искусственный интелект разрабатываем? :)
|
|||
12
КонецЦикла
26.11.14
✎
14:45
|
Кто первым начал - пусть пишет состояние в РС, константу, файл и проч.
Второй пусть там смотрит Зачем такие напряги? Может вообще шару отключать или базу блокировать? |
|||
13
floody
26.11.14
✎
14:45
|
(6) Константы дергать не по делу - это вы зря..
|
|||
14
СвинТуз
26.11.14
✎
14:46
|
А зачем все блокировать?
заблокируй родителя. |
|||
15
floody
26.11.14
✎
14:46
|
Решение в (2) и в (10).
|
|||
16
СвинТуз
26.11.14
✎
14:47
|
или список родителей
тех элементов что писал |
|||
17
nemavasi
26.11.14
✎
14:48
|
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Номенклатура"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; Блокировка.Заблокировать(); Так и сделал, но сомнения есть - работает или нет... пока потестить не можем на большом объеме данных. Может еще где-то надо что-то подключить/отключить? |
|||
18
СвинТуз
26.11.14
✎
14:48
|
второй пойдет = не сможет заблокировать
будет ждать транзакцию не забудь .... насколько я помню |
|||
19
СвинТуз
26.11.14
✎
14:48
|
(17)
транзакция нужна |
|||
20
nemavasi
26.11.14
✎
14:49
|
если есть цикл то список родителей будешь бесконечно составлять
|
|||
21
СвинТуз
26.11.14
✎
14:49
|
что значит не можем?
заблокируй один элемент и поставь ожидание попробуй другим зверем записать |
|||
22
СвинТуз
26.11.14
✎
14:50
|
(20)
ну уж кто на кого учился ... я при записи бы массив составлял потом блокировку разом не знаю тебе виднее |
|||
23
Jaap Vduul
26.11.14
✎
14:54
|
(17)
Если этот код находится в ПриЗаписи модуля объекта, то сработает. Ну и в метаданных соответствующий режим должен быть включён. |
|||
24
nemavasi
26.11.14
✎
14:54
|
(21) щас попробуем...что-то правда сегодня туго думаю
|
|||
25
СвинТуз
26.11.14
✎
14:55
|
(23)
в ПриЗаписи скобки вообще не нужны. |
|||
26
nemavasi
26.11.14
✎
14:55
|
(11) Какой нафиг интеллект - обычная задача в планировании
|
|||
27
СвинТуз
26.11.14
✎
14:55
|
там и так обертка есть
|
|||
28
Jaap Vduul
26.11.14
✎
14:58
|
(25)Какие скобки?
|
|||
29
nemavasi
26.11.14
✎
15:09
|
(10) не работает
|
|||
30
nemavasi
26.11.14
✎
15:10
|
Сейчас будем пробовать группу элементов или все сразу блокировать
|
|||
31
nemavasi
26.11.14
✎
15:55
|
Получилось когда добавили транзакцию
|
|||
32
Banned
26.11.14
✎
15:55
|
(31) Хм... А ведь об этом прямо в документации говорится...
|
|||
33
nemavasi
26.11.14
✎
16:02
|
(32) Согласен - просто как всегда запарка...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |