Имя: Пароль:
1C
1С v8
Сообщение об окончании блокировки
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
пусть Оля звонит Кате и сами разбираются