Имя: Пароль:
1C
1С v8
Как отловить наступление события, совершенного одним из пользователей?
0 Soul771
 
24.09.14
17:36
Добрый день.
Подскажите, пожалуйста, как отловить наступления события, совершенного кем-либо из пользователей, и передать вызов действия для всех остальных пользователей? Т.е. один из пользователей провел документ, при записи документа сработало действие (вывелся отчет), но результат действия (т.е. отчет) видит только тот, кто документ провел, а нужно как-то сделать, чтобы все пользователи увидели отчет..
Пробовала создать подписку на событие, но срабатывает только для того пользователя, который проводит документ.... Может быть, надо как-то через com отлавливать состояние с сервера?.. Если кто делал, подскажите, пожалуйста..
1 ДенисЧ
 
24.09.14
17:37
В регистр сведений пиши инофрмацию
2 ssh2QQ6
 
24.09.14
17:38
И обработкой ожидания проверяй
3 Soul771
 
24.09.14
17:41
Мм.. т.е. создать регистр, измерение - ссылка на документ, ресурс - количество документов в базе на текущий момент... При проведении документа увеличивать ресурс в новом регистре?... А где искать обработку ожидания?....
4 Soul771
 
24.09.14
17:45
Обработка ожидания - это что-то встроенное?... В ПриНачалеРаботыСистемы в модуле обычного приложения нужно вставить?....
5 Soul771
 
24.09.14
17:48
Ребята, простите за тупеж) Нашла в глобальном модуле
ОбработчикОжиданияПроверкиДинамическогоИзмененияИБ()
это оно?....
6 ДенисЧ
 
24.09.14
17:49
ТОчно тупёжь....
ПодключитьОбработчикОжидания() читай
7 barrgand
 
24.09.14
17:53
(5) См. в типовых как реализовано напоминания пользователей.
8 Soul771
 
24.09.14
17:57
Спасибо, пошла читать матчасть))
9 Soul771
 
25.09.14
12:22
Вроде почти разобралась....
Подскажите, пожалуйста, в какой модуль нужно подключить обработчик ожидания, чтобы он срабатывал при запуске программы и все время работы пользователя?..
Процедуру, которую вызывает обработчик,  разместила в модуле обычного приложения. Сам обработчик хотела поместить там же, в ПриЗапускеСистемы, но в СП читаю, что он должен вызываться из клиентской процедуры..
Разместить в модуле формы отчета? Но тогда, если отчет закроют, то и обработчик отключится, так?...
10 ДенисЧ
 
25.09.14
12:39
Есть очень хорошая процедурка...
ПриНачалеРаботыСистемы().
Вот там ей (твоей подключалке) самое место
11 Soul771
 
25.09.14
12:45
(10) - ругается, шо она не клиентская.......
12 Soul771
 
25.09.14
12:47
(10) - хотя я мож опять чего не понимаю.... про то, что на клиенте должен вызываться обработчик, это я СП нашла.. а ошибка такая вылазит:

{МодульОбычногоПриложения(264)}: Ошибка при вызове метода контекста (ПодключитьОбработчикОжидания)
    ПодключитьОбработчикОжидания("ФормированиеГрафикаДоставки",10,Ложь);
по причине:
Недопустимое значение параметра (параметр номер '1')
13 Soul771
 
25.09.14
12:48
(12) - сама процедура ФормированиеГрафикаДоставки размещена в том же модуле - в модуле обычного приложения..
14 barrgand
 
25.09.14
12:56
(13) Все должно быть в общем модуле.
15 Soul771
 
25.09.14
13:50
(14) а в каком общем модуле? в глобальном или в любом?.. я не пойму, можно в любую процедуру затолкать обработчик, запустившись раз, он будет каждый обозначенный интервал времени запускаться,если третий параметр ложь? или же надо в какую-то определенную процедуру затолкать?..
16 Soul771
 
25.09.14
13:55
нашла в модуле обычного приложения ПроверитьПодключениеОбработчикаОжидания()
попробую туда вставить....
Эта процедура стандартная, получается?...
17 Soul771
 
25.09.14
14:20
вроде получилось.... фуф... чувствую, что не хватает мне знаний про все эти общие модули, параметры запуска и тп... мож у кого есть под рукой ссылки на ликбез?...

спасибо большое всем, кто откликнулся помочь :-)
18 barrgand
 
25.09.14
14:32
(15) Да, если третий параметр Ложь, то будет повторяться каждые [второй параметр] секунд.

Создаешь глобальный общий модуль, там пишешь экспортную процедуру, например ФормированиеГрафикаДоставкиПриНачалеРаботы(), которую вызываешь в модуле обычного приложения в ПриНачалеРаботыСистемы(). Далее уже в ФормированиеГрафикаДоставкиПриНачалеРаботы() подключаешь обработчик ожидания, и в этом же модуле пиши свою основную процедуру ФормированиеГрафикаДоставки()
19 Soul771
 
25.09.14
14:50
Barrgand, спасибо огромное!!! Так все четко и понятно!! :-)
Я сначала в модуль обычного приложения затолкала ФормированиеГрафикаДоставки(), а в процедуреПроверитьПодключениеОбработчикаОжидания(), которая уже была в модуле обычного приложения, вызывала обработчик ожидания. Теперь буду знать, как правильно это сделать, как вы написали)))
20 Fragster
 
гуру
25.09.14
15:18
Чтобы такого изврата не было - просто пусть стартует фоновое задание и шлет отчет по списку пользователей на емэйл.
а внезапных всплывающих окошек мне и в типовых хватает при старте
21 Soul771
 
25.09.14
15:49
Fragster, а я как раз пытаюсь как-то спрятать "моргающую" форму)) Не поняла, для чего нужен отчет на мыль по списку пользователей?.. с фоновыми заданиями еще не работала, пошла читать, как их приручить...
22 Fragster
 
гуру
25.09.14
15:56
(21) в (0) написано: "Т.е. один из пользователей провел документ, при записи документа сработало действие (вывелся отчет), но результат действия (т.е. отчет) видит только тот, кто документ провел, а нужно как-то сделать, чтобы все пользователи увидели отчет.. "



так вот, пусть этот отчет шлется всем на почту.
23 Hans
 
25.09.14
15:59
Лучше ставить задачи пользователю.
24 Soul771
 
25.09.14
16:03
(22) тут задумка такая, чтобы с утра вылазило окно для манагеров и маячило весь день перед глазами) поэтому на почту не подойдет, они ее просто не будут проверять)
я пока сделала отчет, который вываливает в табдок инфу по количеству доставок в разные районы на несколько дней вперед. Как кто-нибудь проводит Реализацию, инфа в отчет меняется (в самом документе заполняется район и дата доставки).Вот чтобы инфа менялась у всех пользователей, когда кто-либо документ провел, и мучалась с обработчиком ожидания...
Теперь вроде инфа обновляется, только форма отчета мигает каждый раз при срабатывании обработчика.. отчет я вызываю вот так:

ФормаОтчета = Отчеты.ОтчетПоДоставкеНаБлижайшиеДни1.ПолучитьФорму();
    
    ФормаОтчета.Открыть();
    ФормаОтчета.ПолучитьДействие("ПриПовторномОткрытии");
    ФормаОтчета.Закрыть();



Можно ли сделать форму невидимой при запуске отчета?.. или перенести код из модуля формы в модуль объекта, и как-то вызвать программно отчет без открытия формы, но чтобы результат вывелся в саму 1С-ку, а не в сторонний файл на компе?..
25 barrgand
 
25.09.14
16:41
(24) СКД?
26 Soul771
 
25.09.14
16:47
(25) - нет, отчет не в СКД
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший