|
Оповестить() все формы, открытые под разными сеансами. | ☑ | ||
---|---|---|---|---|
0
Sargez
26.07.19
✎
14:13
|
Всем привет.
Собственно открыто 2 сеанса. в 1 из сеансов открыта форма элемента справочника. 2 сеанс делает действия, которые изменяют данные элемента справочника. как оповестить 1 сеанс об изменении? использую метод Оповестить(), но он почему-то оповещает только в рамках текущего сеанса. А как оповестить все активные сеансы? Заранее благодарен за помощь. |
|||
1
palsergeich
26.07.19
✎
14:14
|
(0) никак.
Клиентский контекст в разных сеансах разный. Нужен очень резной костыль, но тебе это не нужно. |
|||
2
Admin_Net_1C
26.07.19
✎
14:15
|
Какой хитрый, захотел сервер взаимодействия через Оповестить, бесплатно ))
|
|||
3
palsergeich
26.07.19
✎
14:16
|
Ну или да сервер взаимодействия, если релиз позволяет.
|
|||
4
Максим Нижегородец
26.07.19
✎
15:04
|
(0) В большинстве систем реализуется через постоянный опрос (по таймеру) неких данных, которые сообщают о неких изменениях. Такие данные обязательно располагаются на сервере.
|
|||
5
Жан Пердежон
26.07.19
✎
15:05
|
||||
6
Fragster
гуру
26.07.19
✎
15:08
|
Правильнее не дать сеансу 2 делать такие действия. Это решается через метод Заблокировать() у СправочникОбъект
|
|||
7
palsergeich
26.07.19
✎
15:12
|
(4) так лучше не делать.
(6) тоже спорное решение делать именно через справочник.объект. А чем не угодил флаг модифицированность, он по факту (6) и делает. |
|||
8
palsergeich
26.07.19
✎
15:12
|
Или вместо ошибки данные уже изменены нужно делать что то?
|
|||
9
Максим Нижегородец
26.07.19
✎
15:12
|
(6) 1С сама не дает менять объект, если он уже был изменен в другом сеансе, раньше тебя.
(5) А это просто называется ЧАТИТЬСЯ на рабочем месте. 1С последнее время славится на разработки не нужные бизнесу совсем (слабо улучшающие работу в 1С). |
|||
10
palsergeich
26.07.19
✎
15:17
|
(9) у этого механизма чатится есть одна мегавещь - вызов клиентского контекста с сервера.
|
|||
11
Fragster
гуру
26.07.19
✎
15:19
|
(7).2 нет, если перед программным изменением в сеансе 2 вызвать СправочникОбъект.Заблокировать(), то там будет ошибка. А если не вызывать, то ошибки при спрвочникОбъект.Записать() не будет , даже если в сеансе 1 модифицированность.
|
|||
12
GROOVY
26.07.19
✎
15:19
|
||||
13
Fragster
гуру
26.07.19
✎
15:20
|
(9).2 программно менять в другом сеансе можно без проблем.
|
|||
14
palsergeich
26.07.19
✎
15:21
|
(10) что позволяет убрать лапшу из ОбработчиковОжидания, которые в 99+ процентах просто дают холостую нагрузку ( цифра не с потолка я в одном месте реально замерил) (11) согласен.
|
|||
15
palsergeich
26.07.19
✎
15:22
|
(14) но речь идёт про интерактивное взаимодействие, а не програмное
|
|||
16
Fragster
гуру
26.07.19
✎
15:23
|
(14) только это требует либо доступа в интернет, либо корп функциональности. В любом случае предварительной настройки конфигурации. И интересные глюки при копировании базы. И невозможность, вроде, как раз с "оповестить все актиивные сеансы".
|
|||
17
Fragster
гуру
26.07.19
✎
15:24
|
(15) >2 сеанс делает действия, которые изменяют данные элемента справочника
интерактивно это невозможно, будет ошибка, только программно. |
|||
18
palsergeich
26.07.19
✎
15:26
|
(17) в 1 сеансе форма открыта, про то что там произведены какие либо действия - не описано, так что это возможно.
|
|||
19
Fragster
гуру
26.07.19
✎
15:27
|
(18) тогда в сеансе 1 при попытке изменения будет ошибка и можно нажать на кнопку "перечитать", в любом случае ни в одном из сеансов при целиком интерактивной работе изменения не будут потеряны.
|
|||
20
palsergeich
26.07.19
✎
15:28
|
(19) абсолютно согласен.
|
|||
21
Fragster
гуру
26.07.19
✎
15:28
|
в отличии от программного изменения, когда человек мог пол часа набивать табличную часть, и потом потерять результат работы при программной модификации в другом сеансе (да даже и в том же, что самое обидно :) )
|
|||
22
palsergeich
26.07.19
✎
15:34
|
(16) Можно оповестить все сеансы.
А там уже на клиенте принимать решение будет обрабатываться это сообщение или нет. Да это не совсем все активные, но все же. (21) О да, этот запах горелых оп, когда это случается... |
|||
23
palsergeich
26.07.19
✎
15:35
|
(22) а по факту если база маленькая то доступ в интернет как правило есть.
Если база в закрытом контуре - то скорее всего просто из-за настроек кластера придется перейти на корп лицензии. |
|||
24
Fragster
гуру
26.07.19
✎
15:38
|
(22) не сеансы, а пользователи же. а может быть несколько сеансов под одним пользователем, например.
|
|||
25
palsergeich
26.07.19
✎
15:39
|
(24) я может путаю, а разве сообщение приходит не во все сеансы этого пользователя системы взаимодействия?
|
|||
26
Cyberhawk
26.07.19
✎
15:41
|
(25) Во все. Открыт тонкий и веб-клиенты, приходит сразу в оба.
|
|||
27
Максим Нижегородец
26.07.19
✎
15:46
|
Механизм блокировок ни кто не отменял. Если я захватил объект, то больше его ни кто не сможет править.
|
|||
28
Максим Нижегородец
26.07.19
✎
15:51
|
Блокировка происходи на уровне SQL базы банных.
|
|||
29
palsergeich
26.07.19
✎
15:51
|
(27) Слишком много возможностей допустить ошибку ©
|
|||
30
palsergeich
26.07.19
✎
15:53
|
(28) простите как при открытии формы я повешу блокировку в СУБД? Что бы 2ой сенанс не мог сделать то что не нужно?
И как себя будут чувствовать другие участки кода при долгой блокировке? |
|||
32
Fragster
гуру
26.07.19
✎
16:01
|
(18) тогда можно при открытии формы в сеансе 1 вызвать метод управляемой формы ЗаблокироватьДанныеФормыДляРедактирования и тогда в сеансе 2 при вызове Заблокировать Будет ошибка, даже если в сеансе 1 не начинали редактировать данные.
|
|||
33
Cyberhawk
26.07.19
✎
18:02
|
(32) Недружелюбно по отношению к сеансу 2 - зачем ему ждать, пока сеанс 1 только открыл форму и телится весь остальной день?
Ведь при начале редактирования данных в форме в первом сеансе пользователь и так получит отлуп, если со времени открытия объект успелся измениться. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |