#0
by pavlushov
Как программно заблокировать от изменения объект документа, чтобы его никто не смог изменить. То есть по принципу хранилища - захватили объект, изменили объект, поместили изменения (освободили объект).
#3
by Живой Ископаемый
или что имеется в виду? Программно заблокировать ветку метаданных? Так в конфигураторе все равно можно только одному находится
#4
by pavlushov
пробовал Док.ПолучитьОбъект.Заблокировать - но эффекта нет, т.к. открываю этот документ в форме, меняю и провожу. Вот нашел объект БлокировкаДанных, пока не понял, он может заблокировать всю таблицу (все документы) или можно и конкретный докумен забловировать?
#5
by pavlushov
не, мне надо блокировать объект от изменения пользователями, про хранилище это я в качестве примера. Мне надо заблокировать определенный документ, чтобы мог менять только тот кто заблокировал, а другие не могли
#6
by DmitrO
1)Сделать регистр сведений в котором хранить заблокированные документы. 2)Перед записью проверять наличие блокировки по текущему документу в регистре, если есть отказывать в записи. 3)Обеспечить автоматическое снятие блокировок (удаление из РС данных), по таймауту (регламентным заданием на сервере).
#8
by mikecool
хз, у меня используется Заблокировать перед этим проверять на Заблокирован - если истина, то объект в только просмотр
#9
by Wingless
Заблокирован (IsLocked) блаблабла Следует учитывать, что этот метод используется для проверки блокировки объекта базы данных конкретным объектом встроенного языка. Он не может быть использован для проверки, заблокирован ли вообще объект базы данных, например, другими пользователями. Как-то не согласуется.
#12
by pavlushov
Вобще не понятно зачем метод документа Заблокировать, после выполнения кода - Док.ПолучитьОбъект.Заблокировать;, док не блокируется и все тут, т.е. после блокировки проверяю а он нифига не заблокирован
#15
by DmitrO
Объект БлокировкаДанных тоже не решает этой задачи. В платформе нет штатных средств для ее решения, в любом случае надо писать нечто типа .
#16
by DmitrO
А может документацию почитать на предмет назначения и использования этого метода? Или есть намерение ждать пока кто-нить популярно объяснит?
#18
by pavlushov
дык почитал но не понял, потому если кто объяснит - буду благодарен, в справке написано Заблокировать - Выполняет блокировку объекта от изменения другими режимами или пользователями. Только на практике как то не воспроизводится, что такое другие режимы - я не знаю, а вот в плане того что объект блокируется для изменения другими пользователями - проверил - не блокируется.
#20
by pavlushov
метод Заблокировать - дает ошибку в том случа если у меня документ открыт в форме и объект модифицирован
#21
by Murzz
объект.Заблокировать работает только в пределах видимости переменной "объект". Если хочешь чтоб "заблокированность" длилась и после выхода из процедуры, где блокируешь, можно, нппример, делать "объект" реквизитом обработки/документа, где используешь его. еще можешь глянуть на "заблокироватьДанныеДляРедактирования".
#23
by pavlushov
- то есть если я делаю обработку, в ней реквизит ОбъектДокумента и программно блокирую этот объект, то другой пользователь запустив эту же обработку при попытке заблокировать обломится?
#25
by DmitrO
Смысл метода Заблокировать в следующем. 1.У каждого объекта в базе есть поле Версия (просто число). 2.При каждой записи объекта это число увеличивается в транзакции записи. 3.При чтении объекта из базы его версия тоже читается. 4.А при записи объекта, в транзакции записи всегда проверяется соответствует ли версия в базе, версии объекта в памяти (ранее прочитанного). Если не соответствует, то происходит исключение. Т.о. платформа проверяет не записал ли какой нить другой пользователь объект в период времени между того момента когда его читали (ПолучитьОбъект) и сейчас, когда его записывают. Если объект уже успел кто-то записать, то вероятно он мог изменить какие-то его реквизиты, и т.о. в памяти сейчас лежит неактуальная его версия, и писать эту версию в базу нельзя. 5.Метод Заблокировать просто увеличивает версию на 1, и записывает это значение в базу (и память своего объекта конечно). Конечно же проверяя перед этим не изменился ли объект в базе уже сейчас, в момент выполнения Заблокировать.
#26
by DmitrO
6.При изменении реквизита связанного с данными объекта в форме (интерактивном редактировании например), метод Заблокировать вызывается неявно.
#27
by pavlushov
то есть в открытой форме документа версия объекта меняется только после изменения любого реквизита документа?
#28
by DmitrO
Ну, наверно, с 6-м пунктом я погорячился, при интерактивном редактировании, просто версия проверяется и если она изменилась пользователю выдается предупреждение, что записать объект он уже не сможет.
#29
by DmitrO
Т.е. после вызова метода Заблокировать вы просто устроите облом тем, кто уже открыл форму документа и редактирует ее, но если тот пользователь закроет форму и откроет ее снова, у него все получится.
#32
by pavlushov
Вобщем то в итоге все решается малой кровью. Регистр создавать не надо, просто в обработке, в которой обрабатывается документ (который надо заблокировать) нужно созадть реквизит ДокОбъект (тип: объект документа), при открытии документа в нашей обработке следующий код: Попытка ...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Колличество символов в строке, 1С:Предприятие 8.2, УТ 11.0
- Макет печатной формы. Правильный разрыв страницы ., УТ 11, 8.2
- Работа с контрагентами с 1С Розница
- Сколько типовых должен обновлять франч если есть подписка на ИТС?
- При сохранении файла Excel сохраняется все, кроме колонтитулов.
- Как избавиться от пустых строк в отчете через СКД?
- как заполнить отдельные поля табличной части документа значением?
- Почему долго открывается адресный классификатор?
- Как поменять систему налогообложения в БП 8.2 Баз?
- УПП 1.3 - не могу обновить на 1.3.9.1
- Выгрузка загрузка данных XML, отключить перенос внутренних идентификаторов.
- Общая адресная книга Outlook без Exchange
- 8.2 колонка остаток в документе...
- Как закрасить объект,находящийся в ячейке макета,с помощью модуля?
- Печать штрих-кодов в УТ 11 под 8.2
- ЗуП. 2.5.31.4 Оплата межвахтового отдыха
- Как указать динамическому списку основную таблицу - ТЧ документа?
- 1С УПП Бюджетирование. Как лучше строить Бюджет?
- v8: РИБ. Преобразование подчиненного узла в главный
- Перехватить нажатие Enter в табличном поле