|
v7: Документ открыт на чтение или запись? | ☑ | ||
---|---|---|---|---|
0
kalleka
11.07.13
✎
10:23
|
Как определить это в форме документа?
Форма.ТолькоПросмотр(<?>) не подходит, ибо возможно программная установка при открытии. Вообще мне нужно определить при открытии - блокирует пользователь текущий документ или нет |
|||
1
skunk
11.07.13
✎
10:26
|
при открытии первый всегда лочит объект для изменения ... и пофих для чего он его открыл ...
|
|||
2
mikecool
11.07.13
✎
10:26
|
(1) даже если открыл на просмотр?
|
|||
3
skunk
11.07.13
✎
10:27
|
(2)вроде как да ... хотя сейчас не слишком в этом уверен
|
|||
4
kalleka
11.07.13
✎
10:28
|
(2) Нет. При открытии на чтение - не блокирует
|
|||
5
mikecool
11.07.13
✎
10:29
|
(4) думается у класса документа есть какой то признак, не доступный для использования в 1с
|
|||
6
skunk
11.07.13
✎
10:30
|
попытка
начатьтранзакцию записать отменитьтранзакцию исключение документ кто-то залочил конецпопытки |
|||
7
Darych
11.07.13
✎
10:30
|
тупа тогда.. думать лень..
в транзакции попытка записать.. |
|||
8
skunk
11.07.13
✎
10:32
|
(7)точно
начатьтранзакцию попытка записать исключение сообщить("кто-то лочит"); конецпопытки отменитьтранзакцию |
|||
9
NS
11.07.13
✎
10:33
|
А Блокировка() не катит?
|
|||
10
Ёпрст
11.07.13
✎
10:34
|
(9) еще как катит.
|
|||
11
kalleka
11.07.13
✎
10:35
|
(6), (7) , (8)
есть глобальная функция глПриОткрытииДокумента(Конт) которая вызывается в приоткрытии() всех доков как думаете корректно будет в нее вставить такую проверку с исключением? (9),(10) Любой другой мог заблокировать |
|||
12
Ёпрст
11.07.13
✎
10:37
|
(11) и че ?
|
|||
13
Ёпрст
11.07.13
✎
10:38
|
на вот, думаю, тебе нужно это
http://infostart.ru/public/74138/ |
|||
14
NS
11.07.13
✎
10:51
|
(11) Блокировка() и показывает - заблокирован ли документ кем-либо другим.
|
|||
15
kalleka
11.07.13
✎
10:57
|
(13) У меня как бы уже есть система, оказалось вот косячок такой в ней
попробовал сейчас ПриНачалеБлокировкиОбъекта, он срабатывает, но не находит объект Объект = <Объект не найден>(303/Ґ{%) сейчас ковыряюсь (14) Блокировка() показывает заблокирован ли вообще документ или нет. А не конкретно этим пользователем |
|||
16
Darych
11.07.13
✎
10:58
|
(15) тогда тебе лопата
|
|||
17
Ёпрст
11.07.13
✎
11:18
|
(15) не угадал, Блокировка как раз показывает, открыл его кто-то кроме тебя "на запись" или нет.
Ты просто неправильно применяешь сей метод. |
|||
18
kalleka
11.07.13
✎
11:22
|
(17) Покажи как правильно?
я пробовал что то ворде Процедура глПриОткрытииДокумента(Конт) Экспорт Док = СоздатьОбъект("Документ"+Конт.Вид()); Если док.найтидокумент(Конт.ТекущийДокумент()) Тогда Если док.Блокировка(1) = 1 Тогда // заблокировал кто то другой. Так? |
|||
19
kalleka
11.07.13
✎
11:27
|
сейчас все выглядит примерно так
Процедура глПриОткрытииДокумента(Конт) Экспорт Если Конт.Форма.ТолькоПросмотр() = 0 Тогда //фиксирование что пользователь открыл документ, заблокировал но не учитывается что если док открыт для редактирования, но например старый - программно Форма.ТолькоПросмотр(1) не дает его редактировать, но объект то заблокирован |
|||
20
Ёпрст
11.07.13
✎
11:38
|
(18)
Если док.Блокировка(1) = 1 Тогда сообщить("Я его заблокировал!") док.Блокировка(0);//разблокируем Иначе сообщить("его заблокировал кто-то еще..") |
|||
21
kalleka
11.07.13
✎
12:10
|
(20) Спасибо, буду проверять
|
|||
22
NS
11.07.13
✎
12:12
|
А не проще распарсить с конца ЖР?
|
|||
23
Ёпрст
11.07.13
✎
12:14
|
(22) долго, + ЖР может быть отключен
|
|||
24
NS
11.07.13
✎
12:15
|
(23) Почему долго? Парсить не начала, а с конца.
Написать компоненту - это будет очень быстро. |
|||
25
Ёпрст
11.07.13
✎
12:16
|
я понял, что с конца, просто ЖР может быть отключен, и если уж использовать ВК, то готовое решение в (13)
|
|||
26
1Сергей
11.07.13
✎
12:17
|
(24) а как можно читать текстовик с конца?
|
|||
27
Ёпрст
11.07.13
✎
12:18
|
(26) на ис есть решение готовое
|
|||
28
Ёпрст
11.07.13
✎
12:18
|
и тут, вроде, толи абрахамс, толт фрагстер решение приводил
|
|||
29
kalleka
11.07.13
✎
12:20
|
(20) в пустой базе открыл документ, в нем при открытии
вызывает глобальная процедура глПриОткрытииДокумента() в ней Если Док.найтиДокумент(Конт.текущийДокумент()) = 1 Тогда Если док.Блокировка(1) = 1 Тогда в ней док.Блокировка(1) = 0 то есть документу не удалось заблокировать |
|||
30
Ёпрст
11.07.13
✎
12:21
|
(29) конечно, он ужо открыт
|
|||
31
Ёпрст
11.07.13
✎
12:21
|
вообше не ясен смысл того, что ты делаешь.
|
|||
32
1Сергей
11.07.13
✎
12:23
|
(29) если открыть только на чтение тоже не лочит?
|
|||
33
kalleka
11.07.13
✎
12:26
|
(31)
в приоткрытии() документа вызывается функция глобального модуля Процедура глПриОткрытииДокумента(Конт) Экспорт Если Конт.Форма.ТолькоПросмотр() = 0 Тогда //фиксирование что документ открыт пользователем в такое то время КонецЕсли; Она не не должна срабатывать если док открыт для чтения. Это нужно,в том числе, для определения кто открыл документ и не закрыл Но упускается момент если документ открыт для редактирования, но программно в нем сделано Форма.ТОлькоПросмотр(1) Вот как выловить этот момент |
|||
34
kalleka
11.07.13
✎
12:28
|
То есть ситуация - пользователь открыл документ старый и не закрыл. Редактировать он его не может, но объект заблокирован
Другой пользователь хочет зайти в него подредактировать, но не может. И определить нельзя что кто то открыл |
|||
35
Ёпрст
11.07.13
✎
12:33
|
(33) и нафига ?
Если в нём программно сделано Форма.ТОлькоПросмотр(1) , он всё равно будет заблокирован для других пользователей на редактирование. |
|||
36
Ёпрст
11.07.13
✎
12:34
|
У тебя единственный вариант, это кода только сразу документ открыт на только просмотр (из журнала там, по лупе, или программно с флагом через ОткрытьФорму))
|
|||
37
kalleka
11.07.13
✎
13:19
|
(35) вот именно. мне надо выловить когда
форма.толькоПросмотр(1) и заблокирован объект этим пользователем |
|||
38
Ёпрст
11.07.13
✎
13:24
|
(37) ты это и так ловишь в (33) всегда.
|
|||
39
Ёпрст
11.07.13
✎
13:25
|
Если у тебя глПриОткрытииДокумента вызывается в ПриОткрытии самой первой строчкой.
|
|||
40
kalleka
11.07.13
✎
13:28
|
(39) вот именно что не 1
|
|||
41
Ёпрст
11.07.13
✎
13:28
|
Если документ в момент открытия был как Конт.Форма.ТолькоПросмотр() = 0 , то он заблокирован всегда ужо, меняй ты там после этого в коде на Форма.ТолькоПросмотр(1), всё равно заблокирован.
|
|||
42
Ёпрст
11.07.13
✎
13:29
|
(40) меняй на первую, в чем проблема ? Или тупо запоминай, что было изначально в ПриОткрытии.
|
|||
43
kalleka
11.07.13
✎
13:30
|
(42) ну да, наверное пробегусь по документам, проверю.
|
|||
44
Ёпрст
11.07.13
✎
13:34
|
Если религия позволяет использовать ВК, то усё это не нужно.
Всё делается в перехватчике. |
|||
45
NS
11.07.13
✎
13:37
|
(26) В каком языке? WinApi?
|
|||
46
monsterZE
11.07.13
✎
17:37
|
(0) тебе чего надо то? определить, кем заблокирован объект?
у formex есть: ОбработкаБлокировкиОбъекта(Объект, Повторить, ДопТекст) ПриНачалеБлокировкиОбъекта(Объект) Номально отлавливает документы и справочники. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |