![]() |
|
Необходимо заблокировать документ. | ☑ | ||
---|---|---|---|---|
0
Snikers_OLD
20.04.10
✎
18:36
|
Доброго дня.
Ситуация: есть документ у документа есть реквизит "ДокументОснование". Необходимо заблокировать на изменение объект "ДокументОснование". Делаю так Если ЗначениеЗаполнено(ДокОснование) Тогда ДокОснованиеОбъект = ЭтотОбъект.ДокументОснование.ПолучитьОбъект(); Попытка ДокОснованиеОбъект.Заблокировать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; И ничего оно не блокирует, т.е. я могу зайти в этот докумен и изменить его. Чтоя делаю не так? И ничего оно не блокирует. Что я делаю не так? |
|||
1
Шапокляк
20.04.10
✎
18:38
|
А если при открытии документа, напротив, проверять, введены ли на его основании другие документы и, если таковые имеются, окрывать только на просмотр? А то ведь вы пытаетесь блокировать документ только если подчиненный открыт, а это не есть гут.
|
|||
2
Злобный Йожег
20.04.10
✎
18:43
|
Права лучше настрой соответствующим образом. Так будет грамотнее всего. Или так
В форме документа-основания: Процедура ПриОткрытии() Если Не ЭтоНовый() Тогда Запрос = Новый Запрос("ВЫБРАТЬ |Ссылка |Документ.ТвойДок |ГДЕ |ДокументОснование = &ЭтотДок"); Запрос.УстановитьПараметр("ЭтотДок", Ссылка); Результат = Запрос.Выполнить(); ЭтаФорма.ТолькоПросмотр = НЕ Результат.Пустой(); КонецЕсли; КонецПроцедуры |
|||
3
73
20.04.10
✎
18:46
|
(0) А где делаешь? Если ДокОснованиеОбъект прекратит свое существование - прекратится и блокировка.
|
|||
4
Snikers_OLD
20.04.10
✎
18:47
|
(1)(2) таково требование, только когда открыть подчиненный блокировать основание
этого нельзя сделать? |
|||
5
Serg_1960
20.04.10
✎
18:48
|
(имхо) Заблокировать() и Заблокирован() - рудименты 1С. Как апендицит у человека - он вроде бы есть, но нужен ли он? :)
|
|||
6
vde69
20.04.10
✎
18:51
|
вот здесь блокируется элемент справочника и на другой машине определяется наличие блокировки, работает точно :)
http://infostart.ru/public/18951/ |
|||
7
Snikers_OLD
20.04.10
✎
18:53
|
(5) вопрос почему оно у меня не работает
Я вообще наверно слабо понимаю этот метод (Заблокировать()). Он блокирует только для изменения на другой машине? |
|||
8
Snikers_OLD
20.04.10
✎
18:55
|
Я себе представляю работу этого метода так. Как только объект заблокирован его нельзя интерактивно изменять из под любых учетных занисей и на любых машинах
|
|||
9
kyvv
20.04.10
✎
19:11
|
(7)Бывает. Некоторые КД, СКД за день-два осваивают, про язык простецкий 1с уж и не говорю. Другим - не дано. Со временем может и заработает.
|
|||
10
AndreyFAN
20.04.10
✎
19:14
|
||||
11
kyvv
20.04.10
✎
19:24
|
(+9) ДокОснованиеОбъект - это действительно объект?
|
|||
12
Snikers_OLD
20.04.10
✎
20:02
|
(9)вроде да ДокОснованиеОбъект = ЭтотОбъект.ДокументОснование.ПолучитьОбъект()
|
|||
13
vde69
20.04.10
✎
20:20
|
блокировка
ТекущийИгрокОбьект = ТекущийИгрокОбьект.ПолучитьОбъект(); ТекущийИгрокОбьект.Заблокировать(); проверка блокировки Функция ПолучитьМассивАктивныхИгроков() Экспорт // формируем список возможного выбора Запрос = Новый Запрос("ВЫБРАТЬ | Игроки.Ссылка |ИЗ | Справочник.Игроки КАК Игроки |ГДЕ | Игроки.Ссылка <> &ТекущийИгрок"); Запрос.УстановитьПараметр("ТекущийИгрок", ТекущийИгрокОбьект.Ссылка); Массив = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); е = Массив.Количество(); Пока е > 0 Цикл Объект = Массив[е-1].ПолучитьОбъект(); попытка Объект.Заблокировать(); Массив.Удалить(е-1); Исключение КонецПопытки; Объект = ""; е = е - 1; КонецЦикла; Возврат Массив; КонецФункции |
|||
14
vde69
20.04.10
✎
20:20
|
(13)+
обязательно описать Перем ТекущийИгрокОбьект Экспорт; |
|||
15
Topol-M
20.04.10
✎
21:29
|
А как ты проверяешь что объект не заблокирован? Заблокированный объект система тебе даст открыть, но при попытке сохранить изменения откажет, скажет что заблокирован.
|
|||
16
vde69
20.04.10
✎
21:51
|
(15) заблокированый обьект нельзя повторно заблокировать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |