gifts2017

Отправка сообщений пользователям

Опубликовал kojinandrej Кожин (kojinandrej) в раздел Обработки

Предполагаю что в организациях где работает больше 10-15 человек, звонить каждому и сообщать пользователям какую либо информацию. Я обыскал на всех ресурсах так того что требуется не нашел.

Нашел более подходящее http://infostart.ru/public/74444/. Но пришлось немного попотеть что-бы работало на 8.2. 

Итак приступим:

  1. В модуле обычного приложения в процеду ПриНачалеРаботыСистемы добавляем текст

          

          Форма = Обработки.ОповещенияПользователя.ПолучитьФорму("Форма");
         
Форма.Открыть();

     2.  Создаем ОбщийМодуль под названием "опМодуль" в модуле вставляем текст

         

     Функция ВывестиОповещение(ИмяОтчета);
   
     ИмяФайла = ПолучитьИмяВременногоФайла();
   
     Отчет = Справочники.ВнешниеОбработки.НайтиПоНаименованию(ИмяОтчета);
   
     ДвоичныеДанные = Отчет.ХранилищеВнешнейОбработки.Получить();
   
     ДвоичныеДанные.Записать(ИмяФайла);
   
     опФорма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
   
     опФорма.Открыть();
   
     УдалитьФайлы(ИмяФайла);
    КонецФункции

    Процедура
ПроверкаНовыхОповещений() Экспорт

   
     ОтборПользователей = Новый Структура("Пользователь");
   
     ОтборПользователей.Пользователь = ПараметрыСеанса.ТекущийПользователь;
   
     Оповещения = РегистрыСведений.ОповещениеПользователей.Выбрать(ОтборПользователей);
   
     КолОп = 0;
         Пока
Оповещения.Следующий() Цикл
            Если
Оповещения.Просмотрено Тогда
            Продолжить;
            КонецЕсли;
           
КолОп = КолОп + 1;
        КонецЦикла;  
         Если (
КолОп>0) Тогда
   
       ВывестиОповещение("Оповещения пользователя");
         КонецЕсли;
       КонецПроцедуры

       Процедура
ЗадатьИнтервал(Интервал) Экспорт
   
      ПодключитьОбработчикОжидания("ПроверкаНовыхОповещений",Интервал,5);
       КонецПроцедуры

       Процедура
ОчиститьИнтервал() Экспорт
         
ОтключитьОбработчикОжидания("ПроверкаНовыхОповещений");
       КонецПроцедуры

   3.  Создаем регистр сведений "ОповещениеПользователей". Добавляем измерения: "Пользователь" Тип:"СправочникСсылка.Пользователи", "Дата" Тип:"Дата", "Владелец"  Тип:"СправочникСсылка.Пользователи", Ресурсы: "Просмотрено" Тип: "Булево", "Оповещение" Тип: "Строка"

 

   4.  Добавляем в конфигурацию Обработки из файла и пользуемся.

 Принцип Работы:

  При запуске 1с справой стороны в трее открыто оповещение пользователей. Открываем обработку Оповестить, пишим текст сообщения и отметив получателей отправляем сообщение.

  Когда сообщение приходит получателю, то форма оповещени появляется с правой стороны. Что бы сообщение считалось прочитаным, его необходимо открыть двойным щелчком правой клавиши мыши и оно откроется в новом окне как показао на третем изображении. В дальнейшем эти сообщения можно будет просматривать во вкладке "Просмотреные" 

  PS Так же в архиве добавлен отчет для просмотра ознакомления с сообщением пользователей(спасибо за шаблон отчета http://infostart.ru/public/20333/

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Сообщения.rar
.rar 61,60Kb
26.07.16
356
.rar 61,60Kb 356 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Ю М (mtv:)) 14.01.12 18:14
(0) Идея заслуживает внимания.
2. kojinandrej Кожин (kojinandrej) 15.01.12 12:38
3. Александр Овсянников (_LEV_) 16.01.12 09:50
Нужно будет посмотреть. Спасибо.
4. kojinandrej Кожин (kojinandrej) 16.01.12 11:07
(3) _LEV_, не зачто пользуйтесь и не забудьте плюсовать
5. Fomix (fomix) 17.01.12 09:28
Ломать ради оповещения типовую конфу - О-Д-Н-А-К-О!!!
6. kojinandrej Кожин (kojinandrej) 17.01.12 10:55
(5) fomix, а у тебя есть другие варианты???
7. Fomix (fomix) 17.01.12 10:57
(6) kojinandrej, Да хотя бы через стандартный механизм оповещений
8. kojinandrej Кожин (kojinandrej) 17.01.12 13:22
(7) fomix, пользуйся стандартом, если не хочишь пилять. Я выложил для тех, кого стандарт не устраивает!!!!
9. Fomix (fomix) 17.01.12 13:24
(8) kojinandrej, Так я не против )))
10. Татьяна Разинкина (105raz) 18.01.12 06:29
У кого замочек на конфе снят - конечно полезно. Меня, например, заколебало уже обзванивать пользователей с просьбой выйти из базы!
11. Николай Задоя (ADM1NZ) 18.01.12 16:24
12. Наталья (bahcha8) 19.01.12 09:13
Попробовала в УПП, работает хорошо, но если в списке Новые есть уже оповещение - то следующее новое пользователь не получает - никогда не получает.А так оч удобно
13. Serg Kondrasgov (SergDi) 19.01.12 12:01
8.2 я правильно понял, управляемые формы тоже поддерживаются?
14. Наталья (bahcha8) 19.01.12 12:10
8.2, управляемые формы поддерживаются, работаем в толстом клиенте
15. Наталья (bahcha8) 19.01.12 12:27
Да, и время отправки всегда 00:00:00 - не удобно
16. kojinandrej Кожин (kojinandrej) 19.01.12 13:29
Так, при получении показывает время отправления сообщения
17. Алексей Фурманов (Aleksey-29) 19.01.12 13:59
можно и так, только использовать типовое решение правильнее.
Прикрути шаблоны оповещений, будет удобнее.
18. Наталья (bahcha8) 19.01.12 14:46
так время отправление всегда разное, а показывает всегда нули
19. kojinandrej Кожин (kojinandrej) 19.01.12 18:21
(18) bahcha8, не знаю как у тебя у меня показывает нормальное время не нули. проверял через какую либо консоль дата и время в регистр записуется?
20. MOHAX (MOHAX1905) 20.01.12 13:54
Конфа всёравно правленная, поэтому воспользуюсь. Спасибо)
21. Гость 20.01.12 14:32
22. Ольга Василенко (Volga1904) 24.01.12 19:43
23. Сергей Зобнин (Zoba) 25.01.12 00:45
24. Александр Кузяшин (white125) 25.01.12 02:09
не знаю насколько целесообразно отправлять пользователям сообщения именно через 1с
25. Александр Кузяшин (white125) 25.01.12 02:10
а шаблоны сообщений можно добавить?
26. Артур Голиков (liveAp4u) 25.01.12 13:49
Обработка понравилась.
Есть ряд минусов:
1. Ставлю галочку отправить всем, пишу сообщение. В регистр они попадают на ожидаение. Потом еще раз отправляю всем другое сообщение. Весь свписок со старыми извещениями пропадает.
2. Соответсвенно у пользователя та же проблема, что в пункте 1.

Можно как-то решить?
27. Руслан Микулович (rumik007) 25.01.12 14:32
мы у себя используем IChat v1.21 b6 + сервер(хотя мона и без него) для локальной сети уже очень давно, очень довольны.

Есть вопросик, если пользователь не в базе, то как с ним связаться ???
28. Алексей Гришков (asg1975) 01.02.12 09:58
На мой взгляд проще использовать для этого сторонние программы. Тот же IChat. Саму идею плюсую!
29. Yalo (yalo) 01.02.12 10:26
30. Дмитрий Денисов (Uncore) 07.02.12 17:37
(18) проверьте у измерения Дата в регистре сведений должен стоять состав даты: Дата и время. По умолчанию ставится просто Дата, поэтому и нули во времени.
По поводу проблемы, описанной в (26), предлагаю автору добавить в регистр еще одно измерение НомерСообщения. При записи нового сообщения если уже существует для данного пользователя сообщение, увеличивать номер на 1. И тогда можно отправлять пользователям сколько угодно сообщений, ничего не пропадет :)
31. Taras Варварич (itar59) 07.02.12 18:35
обычный лив мессенджер прекрасно держит под 7 виндой.
32. Наталья (bahcha8) 07.02.12 21:24
(30) Uncore, Про дату - Да, я уже поправила, а вот НомерСообщение - попробую, Спасибо
34. Алексей Аборин (commo) 10.02.12 14:27
Спасибо. Буду пугать пользователей )
35. grigory пкш (dryms) 04.06.12 15:01
Здравствуйте. обработка, конечно интересная, но зачем так ломать типовую конфу. Можно сделать внешнюю обработку, которая рассылает письма пользователям (в справочнике пользователи можно указать е-майл).
36. alma soft (alma-soft) 04.06.12 16:38
спасибо автору за работу, идея хорошая попробуем использовать вот только не всем подойдет изменения в конфигурации ради сообщений хотя если текущих изменений и так много то почему бы не сделать еще одно.
37. Sergey Ponomarev (SPonomareff) 08.06.12 11:37
День добрый.

У меня вопрос по поводу следующей ошибки:


{Обработка.ОповещенияПользователя.Форма.Форма.Форма(6)}: Ошибка при вызове метода контекста (Выбрать)
Оповещения = РегистрыСведений.ОповещениеПользователей.Выбрать(ОтборПользователей);

Что делать?
38. Alex Nikulin (Al-77) 27.06.12 17:27
Я так понимаю если пользователь закроет форму тогда он не увидит сообщение?
39. Lena Ivanova (slelvi) 27.06.12 23:05
Как раз нужно подобное реализовать у клиента! возьму идею на заметочку!!!
40. Альтаир (Altair777) 02.07.12 13:33
Интересно, кто автор этой разработки? Складывается впечатление что не автор публикации.
Ни одного пожелания за полгода не было выполнено. И описание не вполне соответствует действительности.
В частности, измерение "Дата" регистра сведений "ОповещениеПользователей" должен быть не просто "Дата", а "Дата и время".
41. Альтаир (Altair777) 05.07.12 14:39
Автор! Я тащусь с кода :)

	КолОп = 0;
	Пока Оповещения.Следующий() Цикл
		Если Оповещения.Просмотрено Тогда
			Продолжить;
		КонецЕсли;
		КолОп = КолОп + 1;
	КонецЦикла;  
	Если (КолОп>0) Тогда
		ВывестиОповещение("Оповещения пользователя");
	КонецЕсли;
...Показать Скрыть


Найдите 10 отличий:

	ЕстьОповещение = Ложь;
	Пока Оповещения.Следующий() Цикл
		Если Не Оповещения.Просмотрено Тогда
			ЕстьОповещение = Истина;
			Прервать;
		КонецЕсли;
	КонецЦикла;  
	Если ЕстьОповещение Тогда
		ВывестиОповещение("Оповещения пользователя");
	КонецЕсли;
...Показать Скрыть
42. Альтаир (Altair777) 05.07.12 15:11
0 > Создаем регистр сведений "ОповещениеПользователей". Добавляем измерения: "Пользователь" Тип:"СправочникСсылка.Пользователи"

Автор не знает что для того чтобы сработал метод:

	ОтборПользователей = Новый Структура("Пользователь");
	ОтборПользователей.Пользователь = ПараметрыСеанса.ТекущийПользователь;
	Оповещения = РегистрыСведений.ОповещениеПользователей.Выбрать(ОтборПользователей);


должно быть так: в качестве полей для отбора могут задаваться измерения или реквизиты, для которых в конфигураторе признак индексирования установлен в значение "Индексировать" или установлен признак "Ведущее".
43. Денис Вахитов (Dr.DragoN) 05.07.12 15:18
А корпоративная почта нынче не почёте?)))
44. Альтаир (Altair777) 05.07.12 15:49
(43) Dr.DragoN, почта - это долго и не факт что будет прочитана. Ведь 1С может быть открыта в терминале, а почтовая программа на локальном компе. И у юзеров будет отмазка.
Я сейчас тоже внедряю нечто подобное. Чтобы при нединамическом обновлении конфигурации разослать сообщения пользователям, а потом через пару минут с чистой совестью завершить их сеансы.
И сообщения хочу принципиально выводить в 1С. Если пользоватль увидел сообщение и не отреагировал - это его проблемы.
А если не увидел, значит он в этот момент не работал в базе и, опять же, это его проблемы :)
45. Konstantin Kirillov (k352) 10.09.12 13:32
Вообще то хотелось бы не просто рассылать сообщения, а и закрывать корректно сеансы в 1С.
46. Konstantin Kirillov (k352) 12.12.12 11:23
Так есть механизм закрытия сеансов?
47. kojinandrej Кожин (kojinandrej) 12.12.12 12:00
48. Евгений Иванов (Tom1) 24.03.13 14:01
Проще для этих целей было бы использовать net send.
49. Юлия Пухова (luchyk007) 30.04.13 08:14
Спасибо, оценим Вашу обработку.
50. V P (Vovus) 21.08.13 12:10
А где <<?>>опМодуль.ОчиститьИнтервал();
{Форма.Форма.Форма(74,2)}: Переменная не определена (опМодуль)
<<?>>опМодуль.ЗадатьИнтервал(600);
{Форма.Форма.Форма(79,2)}: Переменная не определена (опМодуль)
<<?>>опМодуль.ЗадатьИнтервал(1200);
51. Vlad Shestakov (nail_90) 13.09.13 13:04
Добрый день! При отправлении массового сообщения сервер нагружается на 100 процентов пока большая часть пользователей не прочитает новое сообщение, как можно от этого избавиться ?
52. kojinandrej Кожин (kojinandrej) 25.09.13 13:39
Надо время от времени чистить регистр, тогда не будет грузить
53. Роман Хусяинов (rom-x) 15.11.13 09:40
Есть ли какое-нибудь решение для РИБ ? я так понимаю данное не будет работать, просто у нас в справочнике пользователей 1044 записи, я думаю система нехило подвиснет.
54. Антон Чехов (yurets86) 25.11.13 15:59
можно попробывать снизить нагрузку на сервер путем чистки кеша, сделать обработку которая через 1 минуту после отправки сообщение -> очистит кеш базы, имхо, может помочь
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа