|   |   | 
| 
 | как заблокировать объект в УФ. | ☑ | ||
|---|---|---|---|---|
| 0
    
        simol 18.10.12✎ 10:21 | 
        Есть несколько объектов справочники и документы.
  У них только УФ. Необходимо при открытии формы блокировать объект для того, чтобы в другом сеансе при невозможности заблокировать объект форма открывалась на просмотр. Сделал в ПриЧтенииНаСервере 
 Где НеЗаблокирован это реквизит формы. Но такой вариант не держит блокировку на время, пока форма открыта. Как еще можно выкрутиться? | |||
| 1
    
        ilpar 18.10.12✎ 11:08 | 
        а теперь объясни
  Синтаксис: Заблокировать() Описание: Выполняет блокировку объекта от изменения другими режимами или пользователями. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: Попытка Объект.Заблокировать(); Исключение Текст = "ru = ""Не удалось заблокировать объект"";" + " en = ""Can't lock the object"""; Предупреждение(НСтр(Текст) " """ + Объект + """! |"+ ОписаниеОшибки()); КонецПопытки; | |||
| 2
    
        simol 18.10.12✎ 11:19 | 
        (1)А что объяснять?     | |||
| 3
    
        simol 18.10.12✎ 11:20 | 
        (1)В УФ у меня не работает. получается блокировка до перехода на Клиент УФ     | |||
| 4
    
        simol 18.10.12✎ 11:49 | 
        Где вы, гуру блокировок?     | |||
| 5
    
        zladenuw 18.10.12✎ 11:59 | 
        БлокировкаДанных в сп     | |||
| 6
    
        vmv 18.10.12✎ 12:02 | 
        да почитай там сп, Гилевых - просветись и напомни мне как там и чо, просто все стесняються завить, что профаны в этом вопросе - я нет, требую знаний
  ИДИ КОПАЙ и взахлеб опиши решение, иначе я предам тебя анафеме! | |||
| 7
    
        simol 18.10.12✎ 12:04 | 
        (5)
  там только два режима: Исключительный (Exclusive) Разделяемый (Shared) Исключаемый мне не подходит, так как не смогут отрывать во втором сеансе на просмотр Разделяемая не подходит, так как во втором сеансе она без проблем на разделяемую наложится Можно ли прочитать есть разделяемые блокировки или нет? Вариант накладывать исключающую и при положительном исходе снимать и накладывать разделяемую смущает, что есть разрыв. Или можно у разделяемой блокировки на ходу менять режим? | |||
| 8
    
        simol 18.10.12✎ 12:07 | 
        В общем пробую накладывать исключающую и при положительном исходе ее же переводить в разделяемую     | |||
| 9
    
        Жан Пердежон 18.10.12✎ 12:07 | 
        (8) не путай объектные и табличные блокировки     | |||
| 10
    
        simol 18.10.12✎ 12:08 | 
        (9)Так управляемая же объектная     | |||
| 11
    
        Жан Пердежон 18.10.12✎ 12:09 | 
        (10) как все запущено     | |||
| 12
    
        simol 18.10.12✎ 12:10 | 
        (11)как все не начато ;). Я жертва автоматических блокировок и обычных форм     | |||
| 13
    
        simol 18.10.12✎ 14:35 | 
        Сделала такую блокировку:
  
 Не пойму почему поля блокировки двумя строками http://screencast.com/t/eoirO4gTZanh, а не одной | |||
| 14
    
        AaNnDdRrEeYy 18.10.12✎ 14:40 | 
        Блокировка снимается как только происходит выход из процедуры в которой она была создана.
  и зачем ставить блокировки на открытую форму? есть же версия данных которая не даст записать объект который уже кемто был записан после открытия формы. | |||
| 15
    
        simol 18.10.12✎ 14:50 | 
        (14)
  - У меня две базы, между которыми идет обмен каждые N минут. - В обоих базах одни и те же элементы справочника могут менять между обменами и получится, что на момент обмена один и тот же элемент изменился в двух базах. - Для разрешения этой ситуации я в обоих базах сделал регистр захваченных объектов. - В случае отсутствия в нем записи о конкретном элементе справочника, я понимаю, что последний раз элемент редактировался не здесь и через ВебСервис проверяю регистрацию этого элемента в плане обмена во второй базе. В случае отсутствия изменений я во второй базе в регистре убираю захват, а в первой записываю захват. Если это удалось, то форма открывается в режиме редактирования, если захватить не удалось то форма открывается на чтение. Все это нормально запустилось. Но может быть ситуация, когда объект во второй базе открыли в форме. изменять не начали и ответственно объект еще не заблокировался, В плане обмена регистрации нет и первая база будет думать, что можно редактировать. Вот мне и нужно при открытии формы сразу блокировать объект | |||
| 16
    
        simol 18.10.12✎ 14:52 | 
        +(15) а нужно либо в первой базе понять, что во второй открыта форма, либо во второй перехватить событие (которого нет) о том, что в форме начинают редактировать объект, то есть происходит захват объекта.     | |||
| 17
    
        AaNnDdRrEeYy 18.10.12✎ 15:04 | 
        (16)>>либо во второй перехватить событие (которого нет) о том, что в форме начинают редактировать объект,
  Зато есть свойство Модифицированность оно истина когда что то изменили на форме но еще не записали | |||
| 18
    
        AaNnDdRrEeYy 18.10.12✎ 15:04 | 
        можно его проверять и если оно истина то значит не просто открыли а правят, хотя это изврат какойто     | |||
| 19
    
        olegves 18.10.12✎ 15:15 | 
        (15) при открытии в форме также пищи запись в этот регистр, а при закрытии стирай, только добавь реквизит с номером сессии и фоновое задание, которое будет удалять записи для неактивных сессий     | |||
| 20
    
        AaNnDdRrEeYy 18.10.12✎ 15:18 | 
        (19)оставит ктонибудь открытым документ на ночь и свалит домой . и все обмен обломался     | |||
| 21
    
        simol 18.10.12✎ 15:19 | 
        (20) Обмен не поломается, просто не смогут захватить. что и нужно. А утром по рукам уже дадут тому, но то уже не мой вопрос.     | |||
| 22
    
        simol 18.10.12✎ 15:20 | 
        (19)Да, к этому уже и склоняюсь, но хотел без регистра.     | |||
| 23
    
        simol 18.10.12✎ 15:21 | 
        (20)Можно сделать обработчик, если 5 минут форма не модифицирваолась и не модифицирована, то закрывать     | |||
| 24
    
        simol 18.10.12✎ 15:28 | 
        Еще придумал такой вариант.
  Во второй базе В форма обработчик ожидания каждые 15 сек проверяет не модифицирована ли форма. Если произошел переход с немодифицированный на модифицированную, то проверить не захвачен ли он первой базой. Если захвачен, то предупредить пользователя, что его изменения (сделанные в течении 15 минут) не сохранятся. Думаю на этом и остановлюсь. | |||
| 25
    
        simol 18.10.12✎ 15:29 | 
        ....сделанные в течении 15 секунд....     | |||
| 26
    
        AaNnDdRrEeYy 18.10.12✎ 15:32 | 
        это по COM все будет? если да то медлено все это, каждые 15 секунд по кому бегать не вариант. если это 8.2 то луче внешние источники данных прикрутить, они наверно быстрее работать будут     | |||
| 27
    
        simol 18.10.12✎ 15:34 | 
        (26) общение между базами по Web сервисам     | |||
| 28
    
        simol 18.10.12✎ 15:35 | 
        (26)Не проверяю я локально, регистр в обоих базах.
  Если из первой захватывают объект второй. то по Вебсервису во второй меняется регистр захвата. А в обработчике ожидания я проверяю локальный регистр и то, по сути 1 раз при смене немодифицирваон на модифицирован | |||
| 29
    
        simol 18.10.12✎ 15:36 | 
        +(28)Не, проверяю.... [запятую потерял]     | |||
| 30
    
        SUA 18.10.12✎ 15:41 | 
        (28)а что в 15 не работает?
  при создании - - смотрим что объект не захвачен и не изменен в другой базе - захватываем в своей при закрытии формы - - убираем захват в своей доступ к другой базе при этом идет только на чтение, в своей - дополнительно запись локального регистра | |||
| 31
    
        simol 18.10.12✎ 15:45 | 
        (30)Не могу в УФ сделать захват. При выходе из ПриЧтенииНаСервере он сбрасывается. С этого и начинал     | |||
| 32
    
        simol 18.10.12✎ 15:46 | 
        +(31)Получается с момента открытия формы до начала изменения объект не захвачен и вторая база о том что открыта форма не знает     | |||
| 33
    
        simol 18.10.12✎ 16:10 | 
        (30)Так надеялся, что будет ответ на (31) :)     | |||
| 34
    
        SUA 18.10.12✎ 16:15 | 
        (31)захват=запись в локальный регистр, а не блокировка.     | |||
| 35
    
        SUA 18.10.12✎ 16:16 | 
        правда пойдут ошибки при некорректном завершении сеанса     | |||
| 36
    
        simol 18.10.12✎ 16:21 | 
        (35), да, это было обсуждено в (19)-(22), но пойду по пути (24). чтобы не заморачиваться с потерянными сеансами     | |||
| 37
    
        Buster007 18.10.12✎ 16:24 | 
        ЗаблокироватьДанныеДляРедактирования (LockDataForEdit)
  Синтаксис: ЗаблокироватьДанныеДляРедактирования(<Ключ>, <ВерсияДанных>, <ИдентификаторФормы>) Параметры: <Ключ> (обязательный) Тип: Любая ссылка на объект информационной базы; РегистрСведенийКлючЗаписи.<Имя регистра сведений>. Ссылка на объект, который должен быть заблокирован, или ключ записи независимого регистра сведений, которая должна быть заблокирована. <ВерсияДанных> (необязательный) Тип: Строка. Версия блокируемого объекта в формате Base64. Используется, если параметр <Ключ> имеет тип Любая ссылка на объект информационной базы. Если указан, то при блокировке объекта проверяется версия объекта базы данных. При несовпадении версии или отсутствии объекта в базе данных генерируется исключение. Значение по умолчанию: Неопределено. <ИдентификаторФормы> (необязательный) Тип: УникальныйИдентификатор. Уникальный идентификатор формы. Если параметр указан, то блокировка устанавливается на все время жизни формы и может быть снята: методом РазблокироватьДанныеДляРедактирования с тем же идентификатором формы; при закрытии формы; при завершении сеанса. Если параметр не указан, то блокировка устанавливается на ограниченное время и может быть снята: с помощью метода РазблокироватьДанныеДляРедактирования без указания идентификатора формы; при окончании транзакции, если блокировка установлена в транзакции; при окончании работы встроенного языка (для режимов запуска "Тонкий клиент" и "Веб-клиент"; при возврате управления с сервера); при завершении сеанса. Значение по умолчанию: Неопределено. Описание: Заблокировать данные для редактирования в управляемой форме. Вызывает исключение, если объект уже заблокирован, в том числе и методом Заблокировать. Доступность: Сервер, толстый клиент, внешнее соединение. Оно? | |||
| 38
    
        simol 18.10.12✎ 16:35 | 
        (37) Куда тебя расцеловать?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |