gifts2017

Подсистема оповещения о событиях создания или изменения объектов на почту

Опубликовал Алекс Климанов (fuxic) в раздел Программирование - Практика программирования

Подсистема оповещения на почту пользователей о создании новых элементов справочников, проведении документов, установке и снятии пометок на удаление на объекты, настраиваемое по отбору изменение реквизитов, табличных частей.

В своей работе решал задачу оперативного извещения пользователей о создании и изменении объектов во внутренней системе учета. Для получения опреативных извещений о создании, удалении пользователей, изменении договоров, создании внутренних сообщений (внутренние доработки УТ), заявок на транпортировку сотрудников, документов событий, задач, вопросов, их решений, поступлении оплат для запуска и распределения работ.

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

Объекты для объединения с вашей конфигурацией - все с префиксом "СОП_":

1. общий модуль "СОП_ОбщегоНазначения";

2. 4 подписки на событие - в объектах подписки надо выбрать те объекты по которым планируете реализовать оповещения;

3. обработка "СОП_УправлениеОповещениямиПоЭлектроннойПочте";

4. регистр сведений "СОП_СохраненныеНастройки" // аналогичный типовому, кроме разрешения пользователю быть пустым

Также в приложенным к скачиванию dt настроены оповещения для документа "Вопрос" и справочника "Пользователи", поскольку могут возникнуть вопросы по настройке представления письма, приходящего на почту.

Само письмо и его красоту можно нарисовать даже в Word, что и было сделано для упрощения редактирования в случае предачи поддержки третьим лицам, от этого немножко увеличивается письмо, но зато упрощается "рисование".

Например могут приходить такие сообщения:

или


Для работы первое что надо делать - это объединить все объекты в файле приложенном к публикации и в подписках на события выбрать объекты оповещения. Для документов не используется событие создания без проведения, чтобы не усложнять никому жизнь и их надо выбрать в подписках на событие со словом "Документ". Надеюсь вы сами разберетесь почему для документов отдельные подписки.

Затем запустите обработку "Управление оповещениями по почте":

Выберите настраиваемый для оповещения объект конфигурации:

Далее следует "придумать" как будет выглядеть ваше письмо в формате HTML. Для упрощения внутри фирмы научил рисовать в word, хотя это не слишком красивое решения, но зато избавило от лишней траты времени пользователей. Пример настройки визуального представления можете найти в приложенной базе и на картинке ниже. Ключевые и служебные реквизиты объекта оповещения выделяется в письме-шаблоне тегами "##", хотя можно использовать и другие начальные и конечные теги:

Подредактировать шаьлон можно в любое время и после, если вдруг повятся новые важные реквизиты или таличные части, а то и супер выделение жирным или цветом () важной информации. Но чтобы теги отработали надо немного попрограммировать, нажав кнопку "Теги"  в шапке:

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

Осталось только настроить события оповещения, нажав кнопку рядом с "тегами":

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

 

Тестировалось на Управлении торговлей 10.2/10.3.

// Не было потребности, но возможно необходимо решение:
// - при работе с регистрами сведений при изменении настроек;
// - при изменении документов с товарными/материальными позициями - количество, цена, резерв, списание
//  (например оприходовали на удаленный склад картину Леонардо (ос)
//  или подписали контракт на поставку песка в дубаи (нма)- надо быстро обрадовать директора)

// Важные моменты:
// 1. Адрес получателей берется из регистра сведений "Контактная информация" по предопределенному элементу "СлужебныйАдресЭлектроннойПочтыПользователя".
// 2. Учетная запись для отправления писем может быть встроенной на базе типовых решений 1С,
//     но чтобы не выкладывать типовую фирмы 1С доработал настройку отдельно.
// 3. Параметр сеанса "ТекущийПользователь" нужен чтобы письма не приходили самому себе.
// 4. Для документов запись без проведения не берется за событие, чтобы не спамить. Для изменения понадобится доработать самим.


В приложеном для скачания архиве сама конфигурация для объединения (на 8.1) и база с настройками для тестирования и проверки функционала. И скриншоты в помощь.

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

Наименование Файл Версия Размер Кол. Скачив.
MaleNotifocationSystem (СОП)
.rar 435,81Kb
24.04.12
118
.rar 435,81Kb 118 Скачать

См. также

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

Комментарии

0. Алекс Климанов (fuxic) 24.04.12 17:54
Подсистема оповещения на почту пользователей о создании новых элементов справочников, проведении документов, установке и снятии пометок на удаление на объекты, настраиваемое по отбору изменение реквизитов, табличных частей.

Перейти к публикации

1. Владимир Каракозов (karakozov) 25.04.12 13:49
Замечательная идея.Что только с этими оповещениями делать ))) + за революционность решения.Сначала было подумал, что данный механизм позволить отслеживать изменения в коллективных справочниках фундаментально.Но потом подумал что поток информации, нужно будет кому то постоянно разбирать.Попробую воспользоваться механизмом чисто в прикладных целях.Посмотрим +
2. Андрей Якшин (YakshinAnd) 25.04.12 14:45
Конечно извещение об изменениях объектов мне не пригодится, но вот сам механизм массовой отправки на почту того или иного события я возьму на заметку. Спасибо.
3. Сергей Сытько (8SiriuS8) 25.04.12 15:24
А я возьму на вооружение оформление письма и работу с тегами... сами события оповещения у меня сделаны гибче
4. Andrey Dyak (electronik) 25.04.12 16:24
Замечательная идея.Что только с этими оповещениями делать. У меня база 150 гб + 500 пользователей если все регистрировать то почтовый сервер просто умрет. Хотя автору большое спасибо за идею, обязательно возьму ее на вооружение. Так Держать 5+++++
5. Алекс Климанов (fuxic) 26.04.12 09:48
(2) YakshinAnd, Пользуйтесь с удовольствием!

(3) 8SiriuS8, На здоровье!

(4) electronik, Спасибо! Наша база до 100 человек, поэтому нагрузка меньше. Но когда оповещения ломаются, звонки и письма сыпятся целый день)
6. Денис Васильев (Denis_Viktorovich) 26.04.12 20:40
(4) electronik, расскажи что про свое предприятие где 500 пользователей 1С? Просто интересно!
soft-servis; +1 Ответить
7. BigB (BigB) 27.04.12 13:14
(0) Если объекты будут меняться в транзакции, а потом транзакция будет отменена, то что тогда?
8. Алекс Климанов (fuxic) 27.04.12 13:28
(7) BigB, такие вещи вы проектируете сами. Можете заложить константу или настройку в оповещения для выключения/включения.

Можно предусмотреть отсрочку отправки для этого. Например у нас по первости, из-за проблем с почтовым сервером и из-за работы в разных концах города, отправка отнимала 2-3 секунды, которые мешали жить. Для этого отправку делал фоновой задачей, чтобы отсылка шла по мере освобождения ресурсов и не мешала работе пользователя.

Для транзакций - только отсрочка отправки на 5-10 минут - время выполнения ваших механизмов. Или накопление истории писем в регистре с возможностью отката. Придется немного импровизировать. Удачи!
9. Осипов Сергей (fixin) 24.05.12 13:43
Клево, что формализовали. Сам такой велосипед недавно делал. Плюс ко всему, еще и высылал форму документа (у меня была задача высылать информацию о продажах со скидкой).

Только у меня почта не сразу отправлялась, а накапливалась в документах, а потом робот ее рассылал раз в три минуты... Чтобы отправка почты не мешала процессу. А то серваки почтовые могут быть недоступны и т.п.

Как у вас с надежностью по этому вопросу?
10. Алекс Климанов (fuxic) 25.05.12 09:44
(9) fixin,

Оповещения идут по 5 документам (события, заявки, вопросы, решения, платежки) и трем справочникам (сообщения, пользователи, договора), а также задачи. Задачи и платежки генерятся пакетно загрузкой и распределением, а вопросы и сообщения идут постоянно от пользователей в оперативном режиме. Для ускорения из-за временных проблем с почтовиком использовал отправку через фоновые задания, интервал отправки письма составлял 1-10 минут и не мешал пользователям, но падала оперативность. Сейчас таких проблем нет, но уверен настройка истории и интервала отправки и перенос на сервер через регламентное задание, решат такие проблемы.
11. Осипов Сергей (fixin) 25.05.12 13:34
(10) хз. я просто создавал документ "Письмо" и отправлял периодически эти письма.
Это проще, чем оперативно ждать ответа от сервера и т.п. и не мешает юзверям.
А если почтовик не доступен (упал инет)? не давать проводить или не информировать? Лучше дать провести, но потом оповестить, когда почта заработает, имхо.
12. Артем Пиженков (pizhenkov) 29.08.12 23:02
Спасибо! Работа на 5+

Все работает! Прикрутил к бух 2.0
13. Ivan Haos (haous) 03.10.12 15:54
А для УТП для Украины 8.2 подойдет данная обработка?
14. zac zac (zac) 11.01.13 15:10
У меня такой вопрос, а на документообороте работать эта подсистема будет ?
15. Михаил Косовов (z8491) 06.11.14 10:17
Отличная подсистема, демка работает на ура , не получается прикрутить к УПП 1.3 предприятие 8.2
16. bluntschi (bluntschi) 06.11.14 14:32
добрый день, добавила функционал Ваш в Комплексную, во внутренний заказ, но при проведении пишет:

ОбщийМодуль.СОП_ОбщегоНазначения.Модуль(891)}: Ошибка при вызове метода контекста (НайтиСтроки)
		Если ТЧдо.НайтиСтроки(СтруктураКлючевыхРеквизитов).Количество() = 0 Тогда 
по причине:
Неверное имя колонки
...Показать Скрыть



как быть? может быть подскажите
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа