![]() |
![]() |
![]() |
|
8.1 Как программно отловить что документ открыт? | ☑ | ||
---|---|---|---|---|
0
lanc2233
27.08.11
✎
00:34
|
В форме документа при открытии есть:
ЭтотОбъект.Заблокировать(); В журнале есть возможность пользователю менять реквизит не перепроводя документ: Док = ЭтаФорма.ЭлементыФормы.ЖурналДокументовСписок.ТекущаяСтрока.ПолучитьОбъект(); Док.ИмяРеквизита= Истина; Попытка Док.Записать(); Исключение Предупреждение("Невозможно изменить документ."); КонецПопытки; На данный момент оно дает записать в независимости от того открыт документ или нет. Как сделать так чтобы открытый документ нельзя было изменить программно. |
|||
1
zak555
27.08.11
✎
00:37
|
открытый док - заблокирован ?
|
|||
2
lanc2233
27.08.11
✎
00:41
|
а как узнать заблокирован он или нет?
>> В форме документа при открытии есть: >> ЭтотОбъект.Заблокировать(); |
|||
3
Лефмихалыч
27.08.11
✎
00:50
|
Документы.ТвойДокумент.получитьФорму().Открыта()
правда, такую методу наипать легко, но в целом, вопрос (0) довольно глупый |
|||
4
Bober
27.08.11
✎
01:38
|
Если в форме документа запускается это ЭтотОбъект.Заблокировать();, то пока форма открыта никто другой этот объект не запишет.
|
|||
5
lanc2233
27.08.11
✎
01:40
|
(4) программно записывает.
|
|||
6
IamAlexy
27.08.11
✎
01:46
|
в процедуре приоткрытии() пишем так:
Попытка ЭтотОбъект.Заблокировать(); Исключение Отказ = Истина; //отказываемся от открытия формы Сообщить("Документ уже открыт другим пользователем!", СтатусСообщения.Внимание); КонецПопытки; |
|||
7
lanc2233
27.08.11
✎
01:50
|
(6) вопрос не в этом.
Не дать записать нужно в другом коде, который выполняется при нажатии кнопки в журнале. более подробно в (0) |
|||
8
IamAlexy
27.08.11
✎
01:56
|
ну сделай втупую регистр сведений "открытыедокументы" :) и в подписке проверяй на наличие записей
|
|||
9
Лефмихалыч
27.08.11
✎
01:57
|
(7) не делай так - козленочком станешь. такие хреновины надо вне документа хранить в регистрах
|
|||
13
IamAlexy
27.08.11
✎
02:13
|
ыыыыыыыыыыыыыыы
все очень просто нужно в процедуру где у тебя программно что то там делается в журнале добавить попытку блокировки объекта.. вот этот же код: Попытка ИзменяемыйОбъект.Заблокировать(); Исключение Сообщить("АВОТКУЙТЕБЕ", СтатусСообщения.Внимание); Возврат; КонецПопытки; |
|||
14
lanc2233
27.08.11
✎
02:15
|
Спасибо.
|
|||
15
Bober
27.08.11
✎
02:16
|
(7) система не дает записать никому документ, если у клиента открыта форма документа и эта форма заблокировала документ или это сделано программно. Если у тебя это не работает ищи причину
|
|||
16
IamAlexy
27.08.11
✎
02:17
|
(15) ыыыыыыыыыыыыы спасибо копетан очивидность.. целых 14 постов никто незнал чтоже делать и даже не думал искать причину....
|
|||
17
lanc2233
27.08.11
✎
02:17
|
Кстати а сколько блокировка действовать будет?
Его после записи разблокировать можно? |
|||
18
Bober
27.08.11
✎
02:19
|
- пока открыта форма,
- до после записи, - пока не скажешь разблокировать |
|||
19
IamAlexy
27.08.11
✎
02:20
|
я так понял до закрытия формы или до окончания процедуры..
токачто проверил на списке документов. добавил блокировку в форму добавил блокировку в процедуру изменяющую статус. все работает как надо - блокирует форму при открытии при изменении статуса из списка ругается.. закрыли форму - статус меняется и после изменения можно открыть форму.. по поводу разблокировать - я так понял это не работает для подобных блокировок.. хотя можно покурить разблокировать() |
|||
20
lanc2233
27.08.11
✎
02:25
|
Все работает )
|
|||
21
d_koz
27.08.11
✎
09:49
|
(2) ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
Заблокирован (IsLocked) Синтаксис: Заблокирован() Возвращаемое значение: Тип: Булево. Истина - документ заблокирован; Ложь - в противном случае. Описание: Определяет, заблокирован ли документ данным объектом. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Следует учитывать, что этот метод используется для проверки блокировки объекта базы данных конкретным объектом встроенного языка. Он не может быть использован, чтобы проверить, заблокирован ли вообще объект базы данных. Пример: Если РасходнаяНакладная.Заблокирован() Тогда РасходнаяНакладная.Разблокировать(); КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |