Имя: Пароль:
1C
1С v8
Вопрос по Оповестить()
0 Идентификатор
 
28.01.13
16:54
Всем привет

Подскажите, нужно отловить изменение регистра накопления, т.е. при его изменении дожно сработать оповестить(). Вроде просто, МодульНабораЗаписей, событие ПриЗаписи. Но оповестить() в модуле естественно не сработает, как обмануть ?

Если кого интересует задача, то простой пример.

УФ, в области рабочего стола выведена ОбщаяФорма. В ней есть поле с типом число. Суть, каждый раз при изменении регистра, запрос тащит определенную цифру и заносит в это поле.

Можно было бы отлавливать события ПослеЗаписи формы, но так не сработает в случае если сидит несколько пользователей.
1 DrShad
 
28.01.13
16:57
подписка на события
2 Идентификатор
 
28.01.13
16:57
(1) Пробывал, не взлетает
3 samozvanec
 
28.01.13
16:57
уж не остаток ли показать хочешь?
4 Идентификатор
 
28.01.13
16:58
(3) не суть важно что, пусть будет остаток
5 DrShad
 
28.01.13
16:58
(2) не свисти
6 DrShad
 
28.01.13
16:59
+(5) код подписки в студию!
7 Идентификатор
 
28.01.13
17:00
Процедура ПодпискаНаСобытие1ПриЗаписи(Источник, Отказ, Замещение) Экспорт
   Оповестить("вава");
КонецПроцедуры
8 samozvanec
 
28.01.13
17:01
(4) на это только ололокнуть могу. вообще вместо оповещения можно сообщать.

(5) вроде не свестит
9 Идентификатор
 
28.01.13
17:01
Даже сделал отдельный общий модуль

{ОбщийМодуль.валоывратолыв.Модуль(3,2)}: Процедура или функция с указанным именем не определена (Оповестить)
   <<?>>Оповестить(); (Проверка: Сервер)
10 Идентификатор
 
28.01.13
17:01
что вообщемто логично
11 Идентификатор
 
28.01.13
17:02
Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
12 _Demos_
 
28.01.13
17:02
в курсе что метод Оповестить() доступно только на клиенте?
13 samozvanec
 
28.01.13
17:02
+(8) на сервере толку нет, ему ж в форму надо
14 DrShad
 
28.01.13
17:03
(7) а кто сказал что в подписке должен быть именно этот код!?
15 zladenuw
 
28.01.13
17:04
а через СообщениеПользователю  ? не
16 samozvanec
 
28.01.13
17:05
(14) ну давай, выведи нам в форму число с сервера
17 zladenuw
 
28.01.13
17:06
(15)
(16)
Описание:

Предназначен для хранения параметров сообщения, которые необходимо вывести пользователю.
Если сообщение еще не было показано пользователю (такое может быть при работе на стороне сервера, в фоновом задании, внешнем соединении или Web-сервисах), можно получить накопленные сообщения методом ПолучитьСообщенияПользователю.
18 DrShad
 
28.01.13
17:06
(16) это вызов!? :)))) никто не говорит что напрямую передать - записать во временное хранилище и оттуда забрать где нужно по адресу
19 samozvanec
 
28.01.13
17:07
(18) это понятно, как форме намекнуть, чтоб забрала?
20 _Demos_
 
28.01.13
17:08
(19) форма сама решает)
21 DrShad
 
28.01.13
17:08
а в форме обработчик ожидания подключи и забирай
22 _Demos_
 
28.01.13
17:08
забирать или нет
23 samozvanec
 
28.01.13
17:09
ну это тупо автообновление получается
24 DrShad
 
28.01.13
17:09
эх.... молодежь итить...
25 DrShad
 
28.01.13
17:10
(23) ловите наркомана!
26 Идентификатор
 
28.01.13
17:11
Обработчик ожидания зло, накрайняк его сделаю, но хотелось бы без него обойтись, дабы не грузить постоянно
27 zladenuw
 
28.01.13
17:11
а если попробовать Через Сообщение пользователю. и в общей форме вызывать получитьСообщениепользователя. вернет же массив сообщений которые были не на клиенте. и в это сообщение в текст добавлять что нам нужно. а на клиенте уже читать и заполнять на форме. не ?
28 _Demos_
 
28.01.13
17:13
(26) можешь использовать waitsingleobject и event ))
29 regniws
 
28.01.13
17:13
(21) минимизация серверных вызовов? не, не слышал. Да еще и временное хранилище, которое существует в привязке к форме. Ну-ну..
30 DrShad
 
28.01.13
17:13
(27) ну а для кого ВременноеХранилище вообще? зачем эти извраты?
31 DrShad
 
28.01.13
17:14
(29) а об этом не мне нужно задумываться, а ТС, который придумал поле на рабочем столе и хочет его раз за разом обновлять
32 Идентификатор
 
28.01.13
17:14
(27) опять же нужен обработчик ожидания..
33 regniws
 
28.01.13
17:14
(30) в (18) не твой текст? НЛО прилетело? :)
34 DrShad
 
28.01.13
17:15
(33) прямо скажи что тебе не понятно из моих постов!?
35 regniws
 
28.01.13
17:17
Автор, идея - гамно, чессно слово, поэтому и нормально тута ничего не получится сделать. Будет либо копрокод, либо еще что.

Данные события ж происходят при каких-то интерактивных действиях, вот оттуда и зови оповестить. А то будет либо покалыдывание сервера, когда у 100 пользователей раз в секунду будет работать обработчик, либо никто и не заметит этого окошка.
36 DrShad
 
28.01.13
17:18
(35) ну так в том то и дело, что изменить регистр может один юзверь, а обновиться значение не морде должно у всех :))))
37 regniws
 
28.01.13
17:18
(34) мне-то все понятно, что в (18) бред
38 _Demos_
 
28.01.13
17:19
здесь вся проблема в том, что почему-то люди панически боятся метода ПодключитьОжидание
39 regniws
 
28.01.13
17:19
(36) причем тут морда, если автор хочет оповещалку. оповещалка не морда и носит вспомогательный, но не информационный характер.
40 DrShad
 
28.01.13
17:19
(37) сам ты бред, это решение бредовой задачи
41 regniws
 
28.01.13
17:19
(38) и правильно делают
42 DrShad
 
28.01.13
17:19
(39) а оповещалку он для чего хочет!?
43 _Demos_
 
28.01.13
17:20
(41) а как тогда???
44 DrShad
 
28.01.13
17:25
(41) ответ на (42) будет?
45 regniws
 
28.01.13
17:26
йоптапонедельник..

аут, пора заканчивать.

трусывгорох.. абырвалг. ><
Перепутал Оповестить и ПоказатьОповещениеПользователя
46 DrShad
 
28.01.13
17:27
вот вот, через полчаса пойду пиво пить
47 regniws
 
28.01.13
17:28
а цифра на всех одинаковая? или у каждого пользователя своя?
48 Идентификатор
 
28.01.13
17:28
Пол дня думаю, акромя обработчика ожидания ничего не придумал. Ну допустим сделаю я через него. Но всетаки, что никак без него не запилить? полюбому можно как то обмануть.
49 regniws
 
28.01.13
17:28
(46) рано! до пятницы далече
50 DrShad
 
28.01.13
17:29
(49) а это репетиция к пятнице, но еще не генеральная
51 Идентификатор
 
28.01.13
17:30
(47) цифра одинаковая у всех :)
52 regniws
 
28.01.13
17:30
(48) до сей поры, коль 1с не даст колбеки, чтобы мы на клиенте могли обработать события сервера, никак, сервер - стейтлис, он вообще не алло, чо там на клиенте, поэтому клиент сам должен спросить сервер: чо случилось? А клиент не алло, что сделали другие, поэтому клиент должен опрашивать сервер на предмет изменений.

Теоретически, если бы была многопоточность, то можно было бы асинхронный вызов залупить на сервер, который бы ждал обновления данных, но увы и ах!

Обработка ожидания с цифрой большей, нежели умрет сервер.
53 zladenuw
 
28.01.13
17:31
(51) ну так константу создай :) и пусть обновляется автоматически ! :)
54 Идентификатор
 
28.01.13
17:32
(52) обработчик ожидания, ну допустим минута будет, тогда теряется смысл получения актуальной информации. А если секунду ставить то имхо зло )
55 regniws
 
28.01.13
17:33
(51) конштанта, в которую пишутся данные каждый раз, когда источник эти данных меняется. Но тут лажа есть небольшая, конфа небось в управлямых блокировка и даже то, что константы теперь в раздельных таблицах не поможет, все равно надо аккуратно поблокировать при записи в регистр эту константу до начала транзакции записи в регистр.
56 regniws
 
28.01.13
17:34
(54) 5-10 секунд на коротких вызовах норм. зависит от того, насколько быстро отражать в бизнес логике надо. если это форекс, то все, все капец, 1с - тонет
57 zladenuw
 
28.01.13
17:35
(55) а куда тогда ? параметры сеанса ?
58 zladenuw
 
28.01.13
17:35
(57) ..ерню написал.
59 _Demos_
 
28.01.13
17:36
Можно создать временное хранилище на сервере и туда выгружать данные, если изменились данные на сервере БД. А клиенты будут таскать данные именно с этого хранилища.
60 regniws
 
28.01.13
17:36
(59) чужой клиент не может прочитать данные из чужого хранилища..
61 regniws
 
28.01.13
17:36
(59) это возможно только при передаче информации из фоновых заданий.
62 regniws
 
28.01.13
17:37
А ващще я бы не зоморачивался бы с константой, регистр свернутые остатки даст не менее быстро, чем вся эта попопея с конштантой.
63 Идентификатор
 
28.01.13
17:42
Может как то переоткрывать форму, а в ней приОткрытии прописать все что нужно для получения нужной цифры .. ?
64 zladenuw
 
28.01.13
17:47
так что за цифра. ее должны видеть постоянно или только когда изменятся ?
65 Идентификатор
 
28.01.13
17:50
(64)

  samozvanec
28.01.13 - 16:57 уж не остаток ли показать хочешь?


  Идентификатор
28.01.13 - 16:58 (3) не суть важно что, пусть будет остаток

Запрос тащит остаток по регистру.

соответственно он и меняется каждый раз, как только кто то изменил инфу в регистре
66 regniws
 
28.01.13
17:52
(63) ууууууу, ясно
67 zladenuw
 
28.01.13
17:54
я за хранилище и обработчик ожидания .
А потом случайно тебе, не надо будет хранить историю изменения ? если да то РС и выводи на форму. и он будет тебе автоматически обновляться при его изменение.
68 Идентификатор
 
28.01.13
17:54
Метаданные.РабочаяОбластьРабочегоСтола, мб в эту сторону копнуть.. но даже в СП ничего нету..
69 zladenuw
 
28.01.13
17:56
(68) и толку. тебе нужно каждому клиенту. а сервер не знает сколько у тебя их
70 Идентификатор
 
28.01.13
17:57
(67) историю хранить не надо, надо просто видеть актуальную циферку :)

(69) да пытаюсь думать с разных сторон )
71 Идентификатор
 
28.01.13
17:58
(67) кстати, хорошая мысля про Р
С
72 Идентификатор
 
28.01.13
17:58
*РС
73 Идентификатор
 
28.01.13
17:59
Изврат конечно, но можно создать регистр и постоянно его затирая записывать :)
74 Идентификатор
 
28.01.13
18:00
И данное решение позволит выводить и не только один показатель, а несколько, что вообщем то может быть даже полезно
75 zladenuw
 
28.01.13
18:02
(74) можно и  кому показывать :)

ну или как было сказано выше. через временной хр, и обработчик.

вообщем что тебе удобней :)
76 Идентификатор
 
28.01.13
18:03
(67) так тому и быть :)

всем спасибо за помощь, повятся еще идеи - пишите ))
77 DrShad
 
28.01.13
18:04
Поле РС на морде тоже не постоянно актуальное, а обновляется с определенной периодичностью или при изменении реквизита формы :)))) может знатный зоопарк выйти
78 Идентификатор
 
28.01.13
18:05
(75) ага
идея с регистром больше нравится, решает все и сразу
щас домой пора ) завтра сделаю
79 DrShad
 
28.01.13
18:05
(78) прочитай (77)
80 Идентификатор
 
28.01.13
18:08
(79) ну насколько я помню, РС на морде обновляется ооочччень оперативно даже не трогая самих элементов
81 zladenuw
 
28.01.13
18:08
(79) так обработчик ожидание так же выполняется с определенной периодичностью.
82 DrShad
 
28.01.13
18:09
(81) чем он тогда хуже РССПисок с отборами?
83 zladenuw
 
28.01.13
18:15
(82) так в режиме предприятие можно контролировать обновление тч. а если обработчик только в конфигураторе менять.
84 Идентификатор
 
29.01.13
10:19
Взлетело, но появилась незначительная деталь, во время автообновления курсор как бы мигает, видно что задумывается, чуток напрягает