как заблокировать объект в УФ. #634871


#0 by simol
Есть несколько объектов справочники и документы. У них только УФ. Необходимо при открытии формы блокировать объект для того, чтобы в другом сеансе при невозможности заблокировать объект форма открывалась на просмотр. Сделал в ПриЧтенииНаСервере Где НеЗаблокирован это реквизит формы. Но такой вариант не держит блокировку на время, пока форма открыта. Как еще можно выкрутиться?
#1 by ilpar
а теперь объясни Синтаксис: Заблокировать Описание: Выполняет блокировку объекта от изменения другими режимами или пользователями. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: Попытка
#2 by simol
А что объяснять?
#3 by simol
В УФ у меня не работает. получается блокировка до перехода на Клиент УФ
#4 by simol
Где вы, гуру блокировок?
#5 by zladenuw
БлокировкаДанных в сп
#6 by vmv
да почитай там сп, Гилевых - просветись и напомни мне как там и чо, просто все стесняються завить, что профаны в этом вопросе - я нет, требую знаний ИДИ КОПАЙ и взахлеб опиши решение, иначе я предам тебя анафеме!
#7 by simol
там только два режима: Исключительный (Exclusive) Разделяемый (Shared) Исключаемый мне не подходит, так как не смогут отрывать во втором сеансе на просмотр Разделяемая не подходит, так как во втором сеансе она без проблем на разделяемую наложится Можно ли прочитать есть разделяемые блокировки или нет? Вариант накладывать исключающую и при положительном исходе снимать и накладывать разделяемую смущает, что есть разрыв. Или можно у разделяемой блокировки на ходу менять режим?
#8 by simol
В общем пробую накладывать исключающую и при положительном исходе ее же переводить в разделяемую
#9 by Жан Пердежон
не путай объектные и табличные блокировки
#10 by simol
Так управляемая же объектная
#11 by Жан Пердежон
как все запущено
#12 by simol
как все не начато ;). Я жертва автоматических блокировок и обычных форм
#13 by simol
Сделала такую блокировку: Не пойму почему поля блокировки двумя строками , а не одной
#14 by AaNnDdRrEeYy
Блокировка снимается как только происходит выход из процедуры в которой она была создана. и зачем ставить блокировки на открытую форму? есть же версия данных которая не даст записать объект который уже кемто был записан после открытия формы.
#15 by simol
- У меня две базы, между которыми идет обмен каждые N минут. - В обоих базах одни и те же элементы справочника могут менять между обменами и получится, что на момент обмена один и тот же элемент изменился в двух базах. - Для разрешения этой ситуации я в обоих базах сделал регистр захваченных объектов. - В случае отсутствия в нем записи о конкретном элементе справочника, я понимаю, что последний раз элемент редактировался не здесь и через ВебСервис проверяю регистрацию этого элемента в плане обмена во второй базе. В случае отсутствия изменений я во второй базе в регистре убираю захват, а в первой записываю захват. Если это удалось, то форма открывается в режиме редактирования, если захватить не удалось то форма открывается на чтение. Все это нормально запустилось. Но может быть ситуация, когда объект во второй базе открыли в форме. изменять не начали и ответственно объект еще не заблокировался, В плане обмена регистрации нет и первая база будет думать, что можно редактировать. Вот мне и нужно при открытии формы сразу блокировать объект
#16 by simol
+ а нужно либо в первой базе понять, что во второй открыта форма, либо во второй перехватить событие (которого нет) о том, что в форме начинают редактировать объект, то есть происходит захват объекта.
#17 by AaNnDdRrEeYy
>>либо во второй перехватить событие (которого нет) о том, что в форме начинают редактировать объект, Зато есть свойство Модифицированность оно истина когда что то изменили на форме но еще не записали
#18 by AaNnDdRrEeYy
можно его проверять и если оно истина то значит не просто открыли а правят, хотя это изврат какойто
#19 by olegves
при открытии в форме также пищи запись в этот регистр, а при закрытии стирай, только добавь реквизит с номером сессии и фоновое задание, которое будет удалять записи для неактивных сессий
#20 by AaNnDdRrEeYy
оставит ктонибудь открытым документ на ночь и свалит домой . и все обмен обломался
#21 by simol
Обмен не поломается, просто не смогут захватить. что и нужно. А утром по рукам уже дадут тому, но то уже не мой вопрос.
#22 by simol
Да, к этому уже и склоняюсь, но хотел без регистра.
#23 by simol
Можно сделать обработчик, если 5 минут форма не модифицирваолась и не модифицирована, то закрывать
#24 by simol
Еще придумал такой вариант. Во второй базе В форма обработчик ожидания каждые 15 сек проверяет не модифицирована ли форма. Если произошел переход с немодифицированный на модифицированную, то проверить не захвачен ли он первой базой. Если захвачен, то предупредить пользователя, что его изменения (сделанные в течении 15 минут) не сохранятся. Думаю на этом и остановлюсь.
#25 by simol
....сделанные в течении 15 секунд....
#26 by AaNnDdRrEeYy
это по COM все будет? если да то медлено все это, каждые 15 секунд по кому бегать не вариант. если это 8.2 то луче внешние источники данных прикрутить, они наверно быстрее работать будут
#27 by simol
общение между базами по Web сервисам
#28 by simol
Не проверяю я локально, регистр в обоих базах. Если из первой захватывают объект второй. то по  Вебсервису во второй меняется регистр захвата. А в обработчике ожидания я проверяю локальный регистр и то, по сути 1 раз при смене немодифицирваон на модифицирован
#29 by simol
+Не, проверяю.... [запятую потерял]
#30 by SUA
а что в 15 не работает? при создании - - смотрим что объект не захвачен и не изменен в другой базе - захватываем в своей при закрытии формы - - убираем захват в своей доступ к другой базе при этом идет только на чтение, в своей - дополнительно запись локального регистра
#31 by simol
Не могу в УФ сделать захват. При выходе из ПриЧтенииНаСервере он сбрасывается. С этого и начинал
#32 by simol
+Получается с момента открытия формы до начала изменения объект не захвачен и вторая база о том что открыта форма не знает
#33 by simol
Так надеялся, что будет ответ на :)
#34 by SUA
захват=запись в локальный регистр, а не блокировка.
#35 by SUA
правда пойдут ошибки при некорректном завершении сеанса
#36 by simol
, да, это было обсуждено в -, но пойду по пути . чтобы не заморачиваться с потерянными сеансами
#37 by Buster007
Синтаксис: ЗаблокироватьДанныеДляРедактирования(<Ключ>, <ВерсияДанных>, <ИдентификаторФормы>) Параметры: Тип: Любая ссылка на объект информационной базы; РегистрСведенийКлючЗаписи.<Имя регистра сведений>. Ссылка на объект, который должен быть заблокирован, или ключ записи независимого регистра сведений, которая должна быть заблокирована. Тип: Строка. Версия блокируемого объекта в формате Base64. Используется, если параметр <Ключ> имеет тип Любая ссылка на объект информационной базы. Если указан, то при блокировке объекта проверяется версия объекта базы данных. При несовпадении версии или отсутствии объекта в базе данных генерируется исключение. Значение по умолчанию: Неопределено. <ИдентификаторФормы> (необязательный) Тип: УникальныйИдентификатор. Уникальный идентификатор формы. Если параметр указан, то блокировка устанавливается на все время жизни формы и может быть снята: методом РазблокироватьДанныеДляРедактирования с тем же идентификатором формы; при закрытии формы; при завершении сеанса. Если параметр не указан, то блокировка устанавливается на ограниченное время и может быть снята: с помощью метода РазблокироватьДанныеДляРедактирования без указания идентификатора формы; при окончании транзакции, если блокировка установлена в транзакции; при окончании работы встроенного языка (для режимов запуска "Тонкий клиент" и "Веб-клиент"; при возврате управления с сервера); при завершении сеанса. Значение по умолчанию: Неопределено. Описание: Заблокировать данные для редактирования в управляемой форме. Вызывает исключение, если объект уже заблокирован, в том числе и методом Заблокировать. Доступность: Сервер, толстый клиент, внешнее соединение. Оно?
#38 by simol
Куда тебя расцеловать?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С