Имя: Пароль:
1C
1С v8
Нужна помощь по управляемым блокировкам
,
0 Пип Пибип
 
26.08.13
15:36
День добрый, господа

Есть база УТ 10.3, сильно измененная. Есть платформа 8.2.17.153
Есть документ ПеремещениеТоваров. У него есть табличная часть Товары. Есть некая обработка с некой формой. На ней отображаются данные из табличных частей Товары сразу нескольких документов ПеремещениеТоваров. На этой форме данные можно изменить, нажать на форме кнопку Записать - и данные с формы попадут в тобличные части соответствующих докуметов

Внимание, вопрос
Как через управляемые блокировки обеспечить многопользовательскую работу при этом? Пользователи могут одновременно открыть и эту форму и документы, которые на форме выведены.

Планирую делать так:
1) Режим управления блокировкой данных в транзакции у документа ПеремещениеТоваров ставлю Управляемый
2) Режим управления блокировкой данных в транзакции для регистров документа - не трогаю (стоит Автоматический, регистов более 10)
3) При взведении флага Модифицированность на форме обработки, создаю объект БлокировкаДанных
4) Дальше пока не придумал - добавляю элемент блокировки, что-то вроде этого:
ЭлементБлокировки = Блокировка.Добавить("ПеремещениеТоваров.Товары");
Как потом наложить условие-ограничение, что бы была заблокирована табличная часть именно определенного документа?
5) При открытии пользователем формы документа ПеремещениеТоваров, накладываю аналогичную блокировку?

Через объектную блокировку (методы Заблокировать(), Заблокирован() у объекта документа) решить задачу не удалось - как я понял, они работают только в рамках одного пользовательского сеанса - правильно ли я понял?
1 Fragster
 
модератор
26.08.13
15:38
не взлетит - управляемые блокировки только в пределах транзакции
2 Мебиус
 
26.08.13
15:40
ТС, блокировки здесь вообще не в тему, а в указанном виде задачу решить невозможно в принципе
3 Пип Пибип
 
26.08.13
15:41
если буду записывать все документы в одной явной транзации - это поможет?
4 Пип Пибип
 
26.08.13
15:42
(1), (2) верю обоим джентельменам. Пичаль.
5 Пип Пибип
 
26.08.13
15:47
Подкину еще - на вскидку, какие могут быть сделаны заменители/припарки в моем случае? Может, кто-либо сталкивался с таким, на практике

Просто сказать руководству "нет", без объяснения почему нельзя сделать так или чем можно заменить - недостаточно
6 Жан Пердежон
 
26.08.13
15:48
(5) скажи руководству, что и так все норм работает
7 ptiz
 
26.08.13
15:52
Заблокировать() - работает замечательно.
Если в одном сеансе сделать .Заблокировать(), то в другом .Заблокировать() уже выдаст ошибку.
8 z01
 
26.08.13
15:53
"На ней отображаются данные из табличных частей Товары сразу нескольких документов ПеремещениеТоваров. На этой форме данные можно изменить, нажать на форме кнопку Записать - и данные с формы попадут в тобличные части соответствующих докуметов
"

достаточно заблокировать документ в момент когда "На этой форме данные можно изменить".
9 DimGan
 
26.08.13
15:57
Так то еще возникает проблема обновления данных в других открытых формах. Тут как бы нужно запрещать сам вывод если в одной из форм данные уже загружены.
10 DimGan
 
26.08.13
15:59
(9)+ т.е. необходимо где то хранить информацию об открытых ТЧ, или использовать версии в этих ТЧ
11 Жан Пердежон
 
26.08.13
16:06
(9) ничего не надо, другим пользователям сохранить не даст
12 z01
 
26.08.13
16:06
(9)а разве в типовом варианте данные документа на форме обновляются если их меняет тот кто первый открыл? )))
13 tushich
 
26.08.13
16:11
Объектные блокировки как раз в тему!