Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 16:02

Сообщение всем пользователям о событии.

Автор |R|U|D|E|N, 27 июн 2011, 16:34

0 Пользователей и 1 гость просматривают эту тему.

|R|U|D|E|N

Простите за первую ссылку) вот что я имею ввиду;


|R|U|D|E|N

Блин, создал не большую, аккуратную форму для сообщения со всем необходимым...
Теперь, в идиале было бы использовать подписку на событие ОбработкаПроведения чтоб событие затронуло всех пользователей. Но для подписки на событие требуется общий модуль в котором можно разместить только серверные процедуры...получается что подпиской на событие не как не открыть нужную мне форму? вобщем начинается велосипедостроение)) подскажите что небудь?

Выше, есть предложение с регистром сведений но я не совсем понемаю как это реализовать...

cannabis_86

Данная вещь делается при помощи следующей функции:
ЭтаФорма.ОтобразитьИзменениеДанных(Объект.Ссылка,ВидИзмененияДанных.Изменение);
Смотрите в СП по этой функции.

cannabis_86

Цитата: |R|U|D|E|N от 28 июн 2011, 15:23
Блин, создал не большую, аккуратную форму для сообщения со всем необходимым...
Теперь, в идиале было бы использовать подписку на событие ОбработкаПроведения чтоб событие затронуло всех пользователей. Но для подписки на событие требуется общий модуль в котором можно разместить только серверные процедуры...получается что подпиской на событие не как не открыть нужную мне форму? вобщем начинается велосипедостроение)) подскажите что небудь?

Выше, есть предложение с регистром сведений но я не совсем понемаю как это реализовать...
Я бы создал периодичный регистр сведений, в котором есть измерение - кому (тот кому-направляют данное сообщение) и реквизиты - текст сообщения и его статус(прочитано или нет)
в процедуру ПриНачалеРаботыСистемы() подключается ОбработкаОжидания(ну или как вам там удобно)Процедура ПриНачалеРаботыСистемы()
ПодключитьОбработчикОжидания("Проверка",5);
КонецПроцедуры
, которая вызывает процедуру Проверка Общего Модуля, а в ней уже делайте проверку на записи в регистреСведений и если необходимо, то делайте отображение вашей формы:
&НаКлиенте
Процедура Проверка() Экспорт
        //Тут Делаете проверку на записи регистра и добавляете условие и его результат
Если Условие Тогда
             Ф=ПолучитьФорму("Обработка.Обработка1.Форма");
     Ф.Открыть();
        КонецЕсли;
КонецПроцедуры // Проверка()

|R|U|D|E|N

ЦитироватьДанная вещь делается при помощи следующей функции:
ЭтаФорма.ОтобразитьИзменениеДанных(Объект.Ссылка,ВидИзмененияДанных.Изменение);
Смотрите в СП по этой функции.

Спасибо за подсказку - давно искал. Но этот вид уведомлений может быть вызван только из формы...получается из какого либо обработчика его не вызвать просто так. Так, что это не подходит.

|R|U|D|E|N

Остается только вариант с регистром сведений + симпатичная форма отображаемая в правом нижнем углу + обработчик переодически проверяющий регистр на наличие новых записей...

Значит при проведении документа мы добавляем в регистр соответствующую запись для конкретного пользователя(измерения) - здесь понятно

В это время крутитспроверкДалее переодически вызывающий процедуру общего модуля:

Процедура ПриНачалеРаботыСистемы()
    ПодключитьОбработчикОжидания("Проверка",5);   
КонецПроцедуры


здесь тоже все понятно.

но вот как проверить регистр на наличее новых записей кроме запроса я не знаю? а если запросом, то как изменить состояние на прочитанно после запроса? поясните плиз этот момент.




Шурыгин Иван Сергеевич

создайте регистр с 2 измерениями: пользователь (справочник ссылка пользователи) и прочитано (булево), реквизит текст сообщения (бесконечная строка). регистр периодический в пределах секунды.
далее что то типо такого запроса


ТекстЗапроса = "Выбрать
                                   ТекстЗаписи,
                                   Прочитано
                         ИЗ
                                    РегистрСведений.События.СрезПоследних(&НаМомент,)
                         ГДЕ
                                    Пользователь = &ТекПользователь";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("НаМомент",ТекущаяДата());
Запрос.УстановитьПараметр("ТекПользователь",глЗначениеПеременной("глТекущийПользователь"));

Выборка = Запрос.Выполнить.Выбрать();
Пока Выборка.Следующий() Цикл
       Если Не Выборка.Прочитано Тогда
              //Вывод формы
              //и запись в регистр статуса прочитано
        КонецЕсли;
КонецЦикла;

===================================
жизнь надо прожить так, чтоб вверху посмотрели.
и сказали "А ну ка повтори"
===================================

|R|U|D|E|N

Ааа, все понял. Сегодня попробую все это собрать до кучи) о результатах отпишусь

cannabis_86

Цитата: |R|U|D|E|N от 29 июн 2011, 09:35
Ааа, все понял. Сегодня попробую все это собрать до кучи) о результатах отпишусь

Давай, буду ждать. Успехов!

|R|U|D|E|N

Блин, не так все просто как мне казалось)

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

Пробовал разные флажки для общих модулей и все не то....

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск