#0
by simol
Есть несколько объектов справочники и документы. У них только УФ. Необходимо при открытии формы блокировать объект для того, чтобы в другом сеансе при невозможности заблокировать объект форма открывалась на просмотр. Сделал в ПриЧтенииНаСервере Где НеЗаблокирован это реквизит формы. Но такой вариант не держит блокировку на время, пока форма открыта. Как еще можно выкрутиться?
#1
by ilpar
а теперь объясни Синтаксис: Заблокировать Описание: Выполняет блокировку объекта от изменения другими режимами или пользователями. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: Попытка
#6
by vmv
да почитай там сп, Гилевых - просветись и напомни мне как там и чо, просто все стесняються завить, что профаны в этом вопросе - я нет, требую знаний ИДИ КОПАЙ и взахлеб опиши решение, иначе я предам тебя анафеме!
#7
by simol
там только два режима: Исключительный (Exclusive) Разделяемый (Shared) Исключаемый мне не подходит, так как не смогут отрывать во втором сеансе на просмотр Разделяемая не подходит, так как во втором сеансе она без проблем на разделяемую наложится Можно ли прочитать есть разделяемые блокировки или нет? Вариант накладывать исключающую и при положительном исходе снимать и накладывать разделяемую смущает, что есть разрыв. Или можно у разделяемой блокировки на ходу менять режим?
#8
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
Обмен не поломается, просто не смогут захватить. что и нужно. А утром по рукам уже дадут тому, но то уже не мой вопрос.
#23
by simol
Можно сделать обработчик, если 5 минут форма не модифицирваолась и не модифицирована, то закрывать
#24
by simol
Еще придумал такой вариант. Во второй базе В форма обработчик ожидания каждые 15 сек проверяет не модифицирована ли форма. Если произошел переход с немодифицированный на модифицированную, то проверить не захвачен ли он первой базой. Если захвачен, то предупредить пользователя, что его изменения (сделанные в течении 15 минут) не сохранятся. Думаю на этом и остановлюсь.
#26
by AaNnDdRrEeYy
это по COM все будет? если да то медлено все это, каждые 15 секунд по кому бегать не вариант. если это 8.2 то луче внешние источники данных прикрутить, они наверно быстрее работать будут
#28
by simol
Не проверяю я локально, регистр в обоих базах. Если из первой захватывают объект второй. то по Вебсервису во второй меняется регистр захвата. А в обработчике ожидания я проверяю локальный регистр и то, по сути 1 раз при смене немодифицирваон на модифицирован
#30
by SUA
а что в 15 не работает? при создании - - смотрим что объект не захвачен и не изменен в другой базе - захватываем в своей при закрытии формы - - убираем захват в своей доступ к другой базе при этом идет только на чтение, в своей - дополнительно запись локального регистра
#31
by simol
Не могу в УФ сделать захват. При выходе из ПриЧтенииНаСервере он сбрасывается. С этого и начинал
#32
by simol
+Получается с момента открытия формы до начала изменения объект не захвачен и вторая база о том что открыта форма не знает
#36
by simol
, да, это было обсуждено в -, но пойду по пути . чтобы не заморачиваться с потерянными сеансами
#37
by Buster007
Синтаксис: ЗаблокироватьДанныеДляРедактирования(<Ключ>, <ВерсияДанных>, <ИдентификаторФормы>) Параметры: Тип: Любая ссылка на объект информационной базы; РегистрСведенийКлючЗаписи.<Имя регистра сведений>. Ссылка на объект, который должен быть заблокирован, или ключ записи независимого регистра сведений, которая должна быть заблокирована. Тип: Строка. Версия блокируемого объекта в формате Base64. Используется, если параметр <Ключ> имеет тип Любая ссылка на объект информационной базы. Если указан, то при блокировке объекта проверяется версия объекта базы данных. При несовпадении версии или отсутствии объекта в базе данных генерируется исключение. Значение по умолчанию: Неопределено. <ИдентификаторФормы> (необязательный) Тип: УникальныйИдентификатор. Уникальный идентификатор формы. Если параметр указан, то блокировка устанавливается на все время жизни формы и может быть снята: методом РазблокироватьДанныеДляРедактирования с тем же идентификатором формы; при закрытии формы; при завершении сеанса. Если параметр не указан, то блокировка устанавливается на ограниченное время и может быть снята: с помощью метода РазблокироватьДанныеДляРедактирования без указания идентификатора формы; при окончании транзакции, если блокировка установлена в транзакции; при окончании работы встроенного языка (для режимов запуска "Тонкий клиент" и "Веб-клиент"; при возврате управления с сервера); при завершении сеанса. Значение по умолчанию: Неопределено. Описание: Заблокировать данные для редактирования в управляемой форме. Вызывает исключение, если объект уже заблокирован, в том числе и методом Заблокировать. Доступность: Сервер, толстый клиент, внешнее соединение. Оно?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- УПП: не закрывается 90 счет
- Низкая производительность жесткого диска на виртуальном серваке (Hyper-v)
- Вылетает 1С на отчетах СКД
- COMSafeArray - Несовпадение типов.
- Наложить печать на счет с подписью
- режим совместимости "Версия 8.2.13"
- Ограничение строк при формировании отчета
- УФ. удалить командную панель формы. полностью.
- Настройки прокси сервера ( Бухгалтерия 3,0 )
- НДС с аванса перекинуть на другого контрагента
- Как лучше изменить правила выгрузки ЗУП-->Бух на ЗУП-->УПП
- настройка Firewall DIR 320
- Динамический список в форме. Выбор значения одним щелчком.
- Почему не отображается структура подчиненности документов?
- вылетел конфигуратор при обновлении , терь не могу ни в конф ни в предприятие !!
- Dell OpenManage Server Administrator. Login failed
- Проводной интернет. Билайн. Москва. Кто пользуется, у вас работает сейчас? 18.10.12
- Задваивается результат запроса из-за параметров
- форматирование ячейки табличного документа программно
- Льгота по НДС автономных учреждений по полученной субсидии