Нашел более подходящее //infostart.ru/public/74444/. Но пришлось немного попотеть что-бы работало на 8.2.
Итак приступим:
- В модуле обычного приложения в процеду ПриНачалеРаботыСистемы добавляем текст
Форма = Обработки.ОповещенияПользователя.ПолучитьФорму(«Форма»);
Форма.Открыть();
2. Создаем ОбщийМодуль под названием «опМодуль» в модуле вставляем текст
Функция ВывестиОповещение(ИмяОтчета);
ИмяФайла = ПолучитьИмяВременногоФайла();
Отчет = Справочники.ВнешниеОбработки.НайтиПоНаименованию(ИмяОтчета);
ДвоичныеДанные = Отчет.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
опФорма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
опФорма.Открыть();
УдалитьФайлы(ИмяФайла);
КонецФункции
Процедура ПроверкаНовыхОповещений() Экспорт
ОтборПользователей = Новый Структура(«Пользователь»);
ОтборПользователей.Пользователь = ПараметрыСеанса.ТекущийПользователь;
Оповещения = РегистрыСведений.ОповещениеПользователей.Выбрать(ОтборПользователей);
КолОп = 0;
Пока Оповещения.Следующий() Цикл
Если Оповещения.Просмотрено Тогда
Продолжить;
КонецЕсли;
КолОп = КолОп + 1;
КонецЦикла;
Если (КолОп>0) Тогда
ВывестиОповещение(«Оповещения пользователя»);
КонецЕсли;
КонецПроцедуры
Процедура ЗадатьИнтервал(Интервал) Экспорт
ПодключитьОбработчикОжидания(«ПроверкаНовыхОповещений»,Интервал,5);
КонецПроцедуры
Процедура ОчиститьИнтервал() Экспорт
ОтключитьОбработчикОжидания(«ПроверкаНовыхОповещений»);
КонецПроцедуры
3. Создаем регистр сведений «ОповещениеПользователей». Добавляем измерения: «Пользователь» Тип:»СправочникСсылка.Пользователи», «Дата» Тип:»Дата», «Владелец» Тип:»СправочникСсылка.Пользователи», Ресурсы: «Просмотрено» Тип: «Булево», «Оповещение» Тип: «Строка»
4. Добавляем в конфигурацию Обработки из файла и пользуемся.
Принцип Работы:
При запуске 1с справой стороны в трее открыто оповещение пользователей. Открываем обработку Оповестить, пишим текст сообщения и отметив получателей отправляем сообщение.
Когда сообщение приходит получателю, то форма оповещени появляется с правой стороны. Что бы сообщение считалось прочитаным, его необходимо открыть двойным щелчком правой клавиши мыши и оно откроется в новом окне как показао на третем изображении. В дальнейшем эти сообщения можно будет просматривать во вкладке «Просмотреные»
PS Так же в архиве добавлен отчет для просмотра ознакомления с сообщением пользователей(спасибо за шаблон отчета //infostart.ru/public/20333/)
(0) Идея заслуживает внимания.
(1) Спасибо
Нужно будет посмотреть. Спасибо.
(3) _LEV_, не зачто пользуйтесь и не забудьте плюсовать
Ломать ради оповещения типовую конфу — О-Д-Н-А-К-О!!!
(5) fomix, а у тебя есть другие варианты???
(6) Да хотя бы через стандартный механизм оповещений
(7) fomix, пользуйся стандартом, если не хочишь пилять. Я выложил для тех, кого стандарт не устраивает!!!!
(8) Так я не против )))
У кого замочек на конфе снят — конечно полезно. Меня, например, заколебало уже обзванивать пользователей с просьбой выйти из базы!
Спасибо! Полезно
Попробовала в УПП, работает хорошо, но если в списке Новые есть уже оповещение — то следующее новое пользователь не получает — никогда не получает.А так оч удобно
8.2 я правильно понял, управляемые формы тоже поддерживаются?
8.2, управляемые формы поддерживаются, работаем в толстом клиенте
Да, и время отправки всегда 00:00:00 — не удобно
Так, при получении показывает время отправления сообщения
можно и так, только использовать типовое решение правильнее.
Прикрути шаблоны оповещений, будет удобнее.
так время отправление всегда разное, а показывает всегда нули
(18) bahcha8, не знаю как у тебя у меня показывает нормальное время не нули. проверял через какую либо консоль дата и время в регистр записуется?
Конфа всёравно правленная, поэтому воспользуюсь. Спасибо)
Спасибо. пригодится
нужная вещь
Спасибо. Пригодится.
не знаю насколько целесообразно отправлять пользователям сообщения именно через 1с
а шаблоны сообщений можно добавить?
Обработка понравилась.
Есть ряд минусов:
1. Ставлю галочку отправить всем, пишу сообщение. В регистр они попадают на ожидаение. Потом еще раз отправляю всем другое сообщение. Весь свписок со старыми извещениями пропадает.
2. Соответсвенно у пользователя та же проблема, что в пункте 1.
Можно как-то решить?
мы у себя используем IChat v1.21 b6 + сервер(хотя мона и без него) для локальной сети уже очень давно, очень довольны.
Есть вопросик, если пользователь не в базе, то как с ним связаться ???
На мой взгляд проще использовать для этого сторонние программы. Тот же IChat. Саму идею плюсую!
Надо попробовать
(18) проверьте у измерения Дата в регистре сведений должен стоять состав даты: Дата и время. По умолчанию ставится просто Дата, поэтому и нули во времени.
По поводу проблемы, описанной в (26), предлагаю автору добавить в регистр еще одно измерение НомерСообщения. При записи нового сообщения если уже существует для данного пользователя сообщение, увеличивать номер на 1. И тогда можно отправлять пользователям сколько угодно сообщений, ничего не пропадет 🙂
обычный лив мессенджер прекрасно держит под 7 виндой.
(30) Uncore, Про дату — Да, я уже поправила, а вот НомерСообщение — попробую, Спасибо
Спасибо. Буду пугать пользователей )
Здравствуйте. обработка, конечно интересная, но зачем так ломать типовую конфу. Можно сделать внешнюю обработку, которая рассылает письма пользователям (в справочнике пользователи можно указать е-майл).
спасибо автору за работу, идея хорошая попробуем использовать вот только не всем подойдет изменения в конфигурации ради сообщений хотя если текущих изменений и так много то почему бы не сделать еще одно.
День добрый.
У меня вопрос по поводу следующей ошибки:
{Обработка.ОповещенияПользователя.Форма.Форма.Форма(6)}: Ошибка при вызове метода контекста (Выбрать)
Оповещения = РегистрыСведений.ОповещениеПользователей.Выбрать(ОтборПользователей);
Что делать?
Я так понимаю если пользователь закроет форму тогда он не увидит сообщение?
Как раз нужно подобное реализовать у клиента! возьму идею на заметочку!!!
Интересно, кто автор этой разработки? Складывается впечатление что не автор публикации.
Ни одного пожелания за полгода не было выполнено. И описание не вполне соответствует действительности.
В частности, измерение «Дата» регистра сведений «ОповещениеПользователей» должен быть не просто «Дата», а «Дата и время».
Автор! Я тащусь с кода 🙂
Показать
Найдите 10 отличий:
Показать
0 > Создаем регистр сведений «ОповещениеПользователей». Добавляем измерения: «Пользователь» Тип:»СправочникСсылка.Пользователи»
Автор не знает что для того чтобы сработал метод:
должно быть так: в качестве полей для отбора могут задаваться измерения или реквизиты, для которых в конфигураторе признак индексирования установлен в значение «Индексировать» или установлен признак «Ведущее».
А корпоративная почта нынче не почёте?)))
(43) Dr.DragoN, почта — это долго и не факт что будет прочитана. Ведь 1С может быть открыта в терминале, а почтовая программа на локальном компе. И у юзеров будет отмазка.
Я сейчас тоже внедряю нечто подобное. Чтобы при нединамическом обновлении конфигурации разослать сообщения пользователям, а потом через пару минут с чистой совестью завершить их сеансы.
И сообщения хочу принципиально выводить в 1С. Если пользоватль увидел сообщение и не отреагировал — это его проблемы.
А если не увидел, значит он в этот момент не работал в базе и, опять же, это его проблемы 🙂
Вообще то хотелось бы не просто рассылать сообщения, а и закрывать корректно сеансы в 1С.
Так есть механизм закрытия сеансов?
Проще для этих целей было бы использовать net send.
Спасибо, оценим Вашу обработку.
А где <<?>>опМодуль.ОчиститьИнтервал();
{Форма.Форма.Форма(74,2)}: Переменная не определена (опМодуль)
<<?>>опМодуль.ЗадатьИнтервал(600);
{Форма.Форма.Форма(79,2)}: Переменная не определена (опМодуль)
<<?>>опМодуль.ЗадатьИнтервал(1200);
Добрый день! При отправлении массового сообщения сервер нагружается на 100 процентов пока большая часть пользователей не прочитает новое сообщение, как можно от этого избавиться ?
Надо время от времени чистить регистр, тогда не будет грузить
Есть ли какое-нибудь решение для РИБ ? я так понимаю данное не будет работать, просто у нас в справочнике пользователей 1044 записи, я думаю система нехило подвиснет.
можно попробывать снизить нагрузку на сервер путем чистки кеша, сделать обработку которая через 1 минуту после отправки сообщение -> очистит кеш базы, имхо, может помочь