|
Сообщение об окончании блокировки | ☑ | ||
---|---|---|---|---|
0
synapce
21.01.22
✎
14:22
|
Всем привет, вчера решали вопрос со злополучной блокировкой)
Ситуация: пользователь зашел в док - док заблокировался на время работы первого пользователя с этим доком. В это время заходит второй пользователь - но не может войти в док, так как он заблочен первым пользователем. Возможно ли как-то сделать оповещение / уведомление, в момент, когда первый пользователь вышел из дока, что второй - может начать работать? Куда копнуть, чтобы это реализовать? (нечто, как в Excel с занятым документом). Всем заранее спасибо |
|||
1
ДенисЧ
21.01.22
✎
14:27
|
Система взаимодействия, например.
Или регистр с сообщениями и обработка ожидания. |
|||
2
synapce
21.01.22
✎
14:36
|
(1) СВ стоит, грубо говоря, человек должен сам написать сообщение? Момент - как определить, что это именно второй пользователь пришел и отправить ему сообщение...
|
|||
3
Мультук
гуру
21.01.22
✎
14:36
|
(0)
Пользователь Катя начинает редактировать "Документ1" Пользователь Оля пытается отредактировать "Документ1" и обламывается на сообщении "Документ уже редактируется Катей", но она жмет на кнопку сделанную программистом - "Оповестить". И уходит курить. Пользователь Катя заканчивает редактировать документ, проводит его. Система посылает сообщение Оле -- "Оля, Документ1 свободен" Оля возвращается с перекура, читает сообщение. На радостях пытается открыть документ. Но пока она курила, Катя что-то вспомнила и снова редактирует "Документ1" Пользователь Оля встает и с решительным видом идет к Кате -- повыдергивать все волосики из ее головы. Рано или поздно Оля и Катя мирятся, берет тяжёлые вещи и идут наносит увечья программисту написавшему всю эту автоматизацию. |
|||
4
mistеr
21.01.22
✎
14:42
|
(0) Я бы копнул в пересмотр процесса. Может лучше документ заменить на бизнес процесс.
|
|||
5
synapce
21.01.22
✎
14:43
|
(3) момент - как системе понять, что это именно Оля пришла на смену Кате, а не Лера, например в момент нажатия кнопки Оповестить?))
Не, требуется сделать для оперативности, аля- Катя закончила (внесла 3 строки), теперь очередь Оли, чтобы Оля не проверяла каждые 10 минут документ, а при появлении уведомления сразу же начала работать, чтобы затем дать Лере - доступ и так далее) |
|||
6
Мультук
гуру
21.01.22
✎
14:44
|
(5)
>> Или регистр с сообщениями |
|||
7
synapce
21.01.22
✎
14:46
|
(6) в случае с регистром как поступить? Раньше не делал подобное
|
|||
8
DrShad
21.01.22
✎
14:48
|
100% ты не в ту сторону пошел с решением своей задачи
|
|||
9
synapce
21.01.22
✎
14:49
|
(8) да нет, все устроило, все как надо. Это как бонус (с сообщениями).
Поэтому и спрашиваю - возможно ли так сделать или как обойти, т.к. уведы такие через СВ еще не делал |
|||
10
Малыш Джон
21.01.22
✎
15:03
|
(7) с регистром все просто. Но херово. Занял пользователь документ - в регистре запись, что этот документ занят. Второй пользователь обломился - нажал кнопку "Оповестить". Как только нажал оповестить - у него запускается обработчик ожидания, который периодически опрашивает регистр. Первый пользователь освободил документ - в регистре удалилась запись, что документ занят. Обработчик увидел, что запись исчезла и выдал оповещение второму пользователю.
|
|||
11
Мультук
гуру
21.01.22
✎
15:12
|
(10)
(7) >>с регистром все просто. Но херово. Второй пользователь обломился - нажал кнопку "Оповестить". В РС добавилась запись Пользователь -- документ Первый пользователь освободил документ - при закрытии проверяем РС, рассылаем через типовые оповещения сообщения страждущим, запись удаляем. Если жаждущих больше одного, читай (3) |
|||
12
mistеr
21.01.22
✎
15:27
|
(10) У первого пользователя вылетела 1С. Документ освободился, но запись в регистре осталась. Все равно все берут в руки дыроколы и идут к программисту.
|
|||
13
Малыш Джон
21.01.22
✎
16:04
|
(11) ну или так. все равно херовая схема.
|
|||
14
Мимохожий Однако
21.01.22
✎
16:09
|
Если есть в документ, в который надо заходить многократно, то что-то не то в автоматизации или организации работы. ИМХО.
Ситуация единичная и ради этого городить огород с сообщениями и т.п. |
|||
15
Малыш Джон
21.01.22
✎
16:23
|
(14) Что-то, воля ваша, недоброе таится в организациях, имеющих документ, в который надо заходить многократно. Такие организациях или тяжко больны, или втайне ненавидят сотрудников.
|
|||
16
pechkin
21.01.22
✎
16:27
|
(15) например документ бюджетирования какой. Вполне можно долго и упорно редактировать
|
|||
17
synapce
21.01.22
✎
17:27
|
(16) +связанный с экономистами
|
|||
18
synapce
21.01.22
✎
17:27
|
Но всем спасибо, что-то придумаю) просто интересно было услышать мнения, через регистры еще не пробовал, но случай реально на один документ только, если б в глобальных масштабах, другое дело.
|
|||
19
roman52
21.01.22
✎
22:49
|
(12) на самом деле интересная задачка с академической точки зрения.
В регистре нужно фиксировать [идентификатор сеанса, ссылку документа]. Пользователь ведь может параллельно сеансов 1С открыть. И при закрытии документа в регистре ставить отметку освобождения документа. Именно отметку, а не удаление, чтобы не спамить ожидающих сообщениями "Освобождено исходным", "Уже занято соседом-ожидающим". Призываю коллективный разум тоже пофантазировать на эту занимательную тему. |
|||
20
ДедМорроз
21.01.22
✎
23:11
|
В описании работы системы оповещения есть пример не только оповещения,но и запроса на освобождение.
То есть User1 открыл документ и начал его править. User2 пытается зайти в документ и видит сообщение о том,что его изменяет пользователь User1,где среди прочего кнопка послать сообщение. User2 может нажать на кнопку - появляется форма для ввода сообщения,где можно нажать Отправить и это сообщение увидит User1,который может на него ответить и т.п. Ничего не мешает просто добавить кнопку Оплвестить,которая пошлет на машину User1 сообщение о том,что нужно оповестить об окончании редактирования - в документе в ДополнительныеСвойства создается массив с данными тех,кого нужно оплвестить - ведь запросить могут и другие. Болен логично - переменную на клиенте,где будет соответсвие - объект-массив интересующихся. Далее,ПослеЗаписи просто отправляются ответы по массиву - ну и кто первый успел,того и тапки. |
|||
21
ДедМорроз
21.01.22
✎
23:15
|
В дополнение - переменная в модуле приложения на клменте - на сервер не ездит,так как ей там не место.
А регистр можно оставить для других целей. Вот только что делать,нсли сеанс упал-это вопрос открытый,так как никакого оповещения а этом случае не будет - тут можно периодически проверять на сервере наличие сеансов и уже отправлять уведомления пользователям. Опять же,если сеанс упал,то очень велика вероятность,что пользователь снова начнет править документ. Кстати,возможна и другая ситуация - пользователь нажал записать или даже записать и закрыть,но потом пнредумал и снова открыл доеумент - нужно подумать,что делать в этом случае. |
|||
22
ДедМорроз
21.01.22
✎
23:19
|
Если очень не хочется систему взаиможействия,то на винде можно взять Com-объект Msxml2.ServerXMLHTTP и в нем просто посылать запрос на специально подготовленный web-сервер в режиме LongPooling - собственно - система взаимодействия делает тоже самое,а в самой 1С аминхронного http-запроса пока не завезли.
|
|||
23
roman52
21.01.22
✎
23:51
|
(20) (21) (22) занятно, в т.ч. и кейс "повторно зашел".
(21) на случай падения сеансов 1С - вырисовывается регламентное задание, которое проверяет наличие [идентификатора сеанса] в кластере 1С, и устанавливает в регистре по всем [занятым сеансом документам] статус "Освобождено по завершению сеанса". Пользователь ведь может сохранить документ, И закрыть саму 1С, вместо закрытия всех открытых документов/отчетов. |
|||
24
Klesk
22.01.22
✎
02:32
|
пусть Оля звонит Кате и сами разбираются
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |