|
v7: Запретить одновременное открытие документов | ☑ | ||
|---|---|---|---|---|
|
0
vmprog
08.05.09
✎
12:47
|
Люди. Как запретить двум и более юзерам одновременно открывать один и тот же документ? Это в настройках есть или надо копать в сторону процедуры ПриОткрытии()?
Конфа БП релиз последний. |
|||
|
1
Нуф-Нуф
08.05.09
✎
12:48
|
какая разница все равно сохранить не даст
|
|||
|
2
Salvador Limones
08.05.09
✎
12:48
|
А зачем?
|
|||
|
3
Ненавижу 1С
гуру
08.05.09
✎
12:48
|
(0) опять?
|
|||
|
4
mikecool
08.05.09
✎
12:48
|
(3) +1 тоже подумал...
|
|||
|
5
IronDemon
08.05.09
✎
12:48
|
(3) Уже было?
|
|||
|
6
vde69
08.05.09
✎
12:49
|
(5) постов на 300 бреа полного, искать не буду :)
|
|||
|
7
vmprog
08.05.09
✎
12:52
|
поиск ничего путного не дал.
Про сохранить не даст знаю. Требование руководства. А если без демогогии. Просто скажите в настройках гденить есть или писать надо? |
|||
|
8
hhhh
08.05.09
✎
12:53
|
(7) писать надо
|
|||
|
9
IronDemon
08.05.09
✎
12:53
|
Надо писАть. Показать как?
|
|||
|
10
Ненавижу 1С
гуру
08.05.09
✎
12:53
|
писать
|
|||
|
11
cost10
08.05.09
✎
12:55
|
перед открытием пытаться заблокировать()
|
|||
|
12
hhhh
08.05.09
✎
12:57
|
(11) заблокировать() не катит. Действует только внутри этого сеанса. Чтобы один пользователь 2 раза не открыл.
|
|||
|
13
vde69
08.05.09
✎
12:57
|
самое смешное, что это не только не нужно, но и ВРЕДНО, шли в сад свое руководство...
|
|||
|
14
vmprog
08.05.09
✎
12:58
|
(7) показать с учетом (11)
|
|||
|
15
vmprog
08.05.09
✎
12:59
|
(9) показать с учетом (11)
|
|||
|
16
IronDemon
08.05.09
✎
13:02
|
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Если Не ЭтоНовый() Тогда Попытка ДокументОбъект.Заблокировать(); Исключение Предупреждение("Документ открыт другим пользователем."); ЭтаФорма.ТолькоПросмотр=Истина; КонецПопытки; КонецЕсли; КонецПроцедуры Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) Если ДокументОбъект.Заблокирован() Тогда ДокументОбъект.Разблокировать(); КонецЕсли; КонецПроцедуры |
|||
|
17
vde69
08.05.09
✎
13:04
|
Функция ПолучитьМассивАктивныхИгроков() Экспорт
// формируем список возможного выбора Запрос = Новый Запрос("ВЫБРАТЬ | Игроки.Ссылка |ИЗ | Справочник.Игроки КАК Игроки |ГДЕ | Игроки.Ссылка <> &ТекущийИгрок"); Запрос.УстановитьПараметр("ТекущийИгрок", ТекущийИгрокОбьект.Ссылка); Массив = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); е = Массив.Количество(); Пока е > 0 Цикл Объект = Массив[е-1].ПолучитьОбъект(); попытка Объект.Заблокировать(); Массив.Удалить(е-1); Исключение КонецПопытки; Объект = ""; е = е - 1; КонецЦикла; Возврат Массив; КонецФункции |
|||
|
18
Stepa86
08.05.09
✎
13:05
|
(17) шустро работает?
|
|||
|
19
vmprog
08.05.09
✎
13:06
|
Спасибо.
|
|||
|
20
hhhh
08.05.09
✎
13:09
|
и всё-таки
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>) Заблокировать (Lock) Синтаксис: Заблокировать() Описание: Выполняет блокировку объекта от изменения другими режимами или пользователями. блокировка от изменения а не от повторного открытия. |
|||
|
21
Serg_1960
08.05.09
✎
13:40
|
А если сделать блокировку при открытии формы? А если заблокировать не получается - закрывать форму с предупреждением? Повторная блокировка "против" повторного открытия :)
PS: имхо, не айс это все :( |
|||
|
22
vde69
08.05.09
✎
13:42
|
(18) на больших сетях не тестил, вот от куда http://www.infostart.ru/projects/3363/ (типа сетевые шахматы),
при 10 пользователях вообще не заметно задержек, скорость лучше чем в аське |
|||
|
23
Stepa86
08.05.09
✎
13:50
|
(22) у меня для одного документа блокировка 0.5 сек проверяется... думаю оптом 5000-10000 доков на заблокированность не шустро проверятся
|
|||
|
24
Serg_1960
08.05.09
✎
13:55
|
Степа, сорри, ну а это-то здесь причем? :) Надо всего-то проверить блокировкой 1(один) открываемый пользователем документ.
|
|||
|
25
vde69
08.05.09
✎
14:01
|
(24) может он так хочет выводить в журнал галку "ДокументОткрыт" ?
тогда это надо по другому делать, через регистр сведений и регламентую обработку |
|||
|
26
Serg_1960
08.05.09
✎
14:12
|
В каждой форме (у меня УПП) есть вызов проверки даты запрета редактирования для полных прав. В той процедуре запросто реализовывается то, что нужно...
Можно и через регистр накоплений (открытие документа - приход, закрытие - расход)... |
|||
|
27
Serg_1960
08.05.09
✎
14:18
|
На ходу придумываю :) На регистре сведений каждое открытие документа - новая записб. Каждое закрытие - удаление записи. На регистрах накопления записи не удаляются, а накапливаются. Тогда можно отчетом выводить кто, когда, что открывал и на сколько.
|
|||
|
28
vde69
08.05.09
✎
14:20
|
(27) если клиент отвалится, событие "закрытиеДокумента" не отработает, и он повиснет, по этому и нужна регламентная обработка
|
|||
|
29
Stepa86
08.05.09
✎
14:20
|
(24) блокировка ставится и проверяется для одного дока за раз (в КСПУ), но если вдруг встанет задача узнать - какие доки заблокированы (для (25) например или тупо не показывать в списке доков заблокированные другими пользователями), то (17) для меня не выход... через РС думаю в итоге доделать, потому что не надо хранить историю кто и когда открыл/закрыл
|
|||
|
30
Serg_1960
08.05.09
✎
14:24
|
Единственная проблема - кода юзвер отваливается, не успевая сообщить об закрытии документов. В принципе можно при входе юзвера "чистить" регистр, - но лучше регламент использовать.
|
|||
|
31
Serg_1960
08.05.09
✎
14:26
|
О_О Блин, экран не обновился. Сорри за (30) - не видел предыдущие топики :)
|
|||
|
32
Stepa86
08.05.09
✎
14:26
|
(30) у меня при начале работы РС по текущему пользователю чиститься, потому что если пользователь вылетел аварийно, очень велика вероятность, что он снова зайдет...
|
|||
|
33
Serg_1960
08.05.09
✎
14:28
|
(32) Не айс. У меня юзверы компы выключают при свернутом окне 1С или из рерминалов забывают выходить... Регламент, - только регламент!
|
|||
|
34
Serg_1960
08.05.09
✎
14:29
|
сорри, рерминалов = терминалов
|
|||
|
35
Stepa86
08.05.09
✎
14:32
|
(33) ну значит сделаю регламент, пока РС и не нужен, достаточно "Заблокировать()" но потом планируется разрешить открывать док, но будет надпись "Задача захвачена Васей Пупкиным. Вы не сможете записать эту задачу"
|
|||
|
36
vde69
08.05.09
✎
14:34
|
вообще можно RLS поставить на левое соединение с этим регистром, тогда в самих обьектах не надо будет ни строчки кода писать
зы красивое решение будет |
|||
|
37
Stepa86
08.05.09
✎
14:36
|
(36) а регистр кто заполнять будет? тем более хочется покрасивше блокировку сделать =)
|
|||
|
38
Serg_1960
08.05.09
✎
14:38
|
На всякий случай учтите то, что этот Пупкин может открыть несколько сеансов. У меня такие приколыбыли, когда особо нервные возмущались "Я открываю документ, а она мне говорит, что он уже мною открыт" :))
|
|||
|
39
Stepa86
08.05.09
✎
14:40
|
(38) а какая разница - другой пользователь пытается открыть документ или этот же, но в другом сеансе?
|
|||
|
40
Serg_1960
08.05.09
✎
14:43
|
В принципе - никакой разницы... Актуально когда если через регистры делать - нужно будет предусмотреть такие ситуации.
|
|||
|
41
vde69
08.05.09
✎
14:44
|
(37) подписку на событие, в нем добавляеться запись, а удаляеться регламентной обработкой или событием "закрытие"
|
|||
|
42
Serg_1960
08.05.09
✎
14:45
|
(41) С открытием все ясно, - надо подумать как "пристроить" закрытие :(
|
|||
|
43
Stepa86
08.05.09
✎
14:48
|
(41) подписка не взлетит - она к объектам привязывается, а хочется в Передоткрытием формы
(40) значит перед чисткой проверить, а нет ли второго такого сеанса с этим Пупкиным, и если есть - не чистить что то мне кажется, что реализовать проверку на заблокированность не применяя Заблокировать() в силу ньюансов опиванных выше - нетривиально, если вообще возможно |
|||
|
44
Stepa86
08.05.09
✎
14:49
|
+(43) хотя...
|
|||
|
45
Serg_1960
08.05.09
✎
14:58
|
Что "хотя..."?
Я склоняюсь к мысли, что бедному крестьянину некуда деться, токма парсить модули форм документов :(( |
|||
|
46
Stepa86
08.05.09
✎
15:00
|
(45) ну ведь не на все же документы навешивать, да и парсер пишется полчаса максимум, и это мной, а не86 вообще за 10 минут осилит =)
|
|||
|
47
Serg_1960
08.05.09
✎
15:09
|
Ыыы... парсер не проблема... проблемы с обновлением :(
|
|||
|
48
Serg_1960
08.05.09
✎
15:11
|
(47) Стоп, отставить, - ляпнул не подумавши. Парсером-же и убрать перед обновлением все можно.
|
|||
|
49
Serg_1960
08.05.09
✎
15:14
|
Как говорится, теперь только осталось все это в алгоритмы сложить :) В принципе проблема решена - можно и по домам :)) С наступающими Вас.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |