gifts2017

Подсистема алертов (уведомлений, отчетов) или "ползи, улитка, по склону Фудзи"

Опубликовал Павел (Odin-s) в раздел Программирование - Работа с интерфейсом

Универсальная подсистема для платформ 8.1 и 8.2, предназначенная для быстрого формирования и отправки алертов (уведомлений, отчетов) пользователям:
- удобное представление результатов запросов в виде таблиц
- простой механизм генерации отчетов на данных из внешних источников
- назначение постоянных и интерактивных получателей
- проверки и отчеты на основе регламентных заданий, интерактивных действий пользователей
"Кто владеет информацией тот, владеет миром" - не обязательно быть Ротшильдом, чтобы постичь эту несложную сентенцию.  

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

На самом деле, при небольшой помощи программиста, 1С может работать очень полезно: рассылать отчеты, предупреждать, информировать, контролировать, и так далее и так далее.

Надеюсь, что представленная в этой публикации подсистема получилось достаточно удобной для применения в реальных условиях.

 

Физика её проста:

1. Для начала осознаём портебность в автоматизации некоторого процесса (поступление денег по сделке на счет, выход нового сотрудника на работу, квартальный финансовый отчет, рассылка курсов валют, всевозможные проверки обмена данными и т.п.). Как правило, осознание наступает в виде стучащегося в дверь (коммуникатор, почту) пользователя.

2. Именуем задачу и заносим в справочник.

3. Назначаем получателей алерта (уведомления, отчета).

4. Пишем запрос к данным, выводим результат в электронное письмо.

5. Определяем время выполнения задачи - по расписанию или при интерактивном действии. Если по расписанию - то настраиваем регламентное задание. Если при интерактивном действии - нужную подписку на события.

6. Радуемся наступившей Гармонии вместе с пользователем алерта (кадровиком, бухгалтером, сисадмином, директором, оператором, менеджером, с самим собой - бывает и такое).

 

Всего в моей организации в двух системах (БП и ЗУП) настроено около 60 различных алертов - и это не предел, я думаю. Системы взаимодействуют с внешними источниками (различные БД, СКУД), и контролировать это взаимодействие подчас не простая задача.

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

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

 

Состав подсистемы:

        - Конфигурации.ПодсистемаАлертов
        - Подсистемы.паПодсистемаАлертов
        - Интерфейсы.паПодсистемаАлертов
        - Роли.паНастройкаПодсистемыАлертов
        - ОбщиеМодули.паУниверсальныеМеханизмыСервис
        - ОбщиеМодули.паУправлениеАлертами
        - ОбщиеМодули.паФормированиеАлертов
        - РегламентныеЗадания.паОтправкаАлертов
        - РегламентныеЗадания.паКонтрольРегламентныхЗаданий
        - Константы.паУчетнаяЗаписьПоУмолчанию
        - Константы.паИндивидуальнаяРассылкаАлертов
        - Справочники.паБазыДляСинхронизации
        - Справочники.паТипыАлертов
        - РегистрыСведений.паНазначениеАлертов

 

Модуль паУниверсальныеМеханизмыСервис

Содержит вспомогательные процедуры и функции. В т.ч. процедуры, описывающие подключение к внешним базам через ADODB с  выгрузкой результата запроса в таблицу значений с типизированными полями (эту таблицу можно сразу отправить пользователю или использовать в запросе 1С как виртуальную таблицу). Так же в этом модуле находится простая процедура, конвертирующая ТабДок любой сложности в html-код (например, таким образом можно настроить рассылку расчетных листков по почте, в теле письма) - увы, только в клиентском контексте.

Модуль паУправлениеАлертами

Главный модуль, формирующий алерты. Конвертация таблиц значений происходит по принципу html-таблиц, понимаемых любой почтовой оболочкой. В результате сохраняется электронное письмо-алерт, которое отправляется регламентным заданием при помощи встроенного почтового клиента.

Модуль паФормированиеАлертов

Этот модуль предназначен для процедур, используемых регламентными заданиями или интерактивными вызовами для формирования алерта.

Регламентное задание паОтправкаАлертов

Основное регламентное задание, рассылающее сформированные письма по расписанию (например, раз в 5 минут).

 

Константа паУчетнаяЗаписьПоУмолчанию (при некоторых условиях требует типизации!)

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

Константа паИндивидуальнаяРассылкаАлертов

Из-за отсутствия унифицированного механизма отправки почты в конфигурациях 1С, рассылка может происходить по схеме "1 письмо - 1 получатель" (БП) или "1 письмо - много получателей" (УТ, ЗУП). 


Справочник паБазыДляСинхронизации

Справочник может пригодиться для хранения строк подключения к внешним источникам данных.


Справочник паТипыАлертов

Содержит наименование типа алерта и признак отправки (общий).
 

Регистр сведений паНазначениеАлертов (измерение Сотрудник требует типизации!)

Описывает адресатов для каждого типа алертов и признак отправки (частный). Поле Сотрудник перед использованием подсистемы необходимо типизировать в составной тип: Справочник.ФизическиеЛица, строка. Строка может понадобиться при назначении алертов на группы рассылок. Так же нуждается в доработке получение почтового адреса физлица в том случае, если он не хранится в регистре КонтактнаяИнформация (см. функцию паУправлениеАлертами.ПолучитьАдресатов)

 

В качестве бонуса-примера предлагаю ознакомиться с реламентным заданием паКонтрольРегламентныхЗаданий. Если Вам доводилось забывать ставить обратно галочку "Использование регламентных заданий" в консоли после утреннего бэкапа или удаления помеченных объектов - и затем выслушивать от пользователей "У меня не обновилось!", "Мне не пришло письмо!" - такое задание не будет лишним. Так же регламентные задания имеют свойство иногда ломаться (например, после обновления на новый релиз или при изменении свойств внешнего источника), что не всегда удается своевременно обнаружить.

 

Итак, краткая инструкция:

1. Типизируем измерение регистра и константу.

2. Создаем предопределенный ТипАлерта.

3. Назначаем алерт пользователю (или не назначаем, если пользователи интерактивные).

4. Создаем регламентное задание или подписку на события.

5. Создаем процедуру с запросом и формированием алерта (уведомления, отчета, таблицы) в модуле паФормированиеАлертов, вызываем её из п.4.

 

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

На все вопросы, связанные с подсистемой и настройкой 1С буду рад ответить.
  

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

Наименование Файл Версия Размер Кол. Скачив.
ПодсистемаАлертов_81.cf
.cf 24,08Kb
01.12.11
107
.cf 24,08Kb 107 Скачать
ПодсистемаАлертов_82.cf
.cf 25,45Kb
01.12.11
94
.cf 25,45Kb 94 Скачать

См. также

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

Комментарии

0. Павел (Odin-s) 01.01.70 03:00
Универсальная подсистема для платформ 8.1 и 8.2, предназначенная для быстрого формирования и отправки алертов (уведомлений, отчетов) пользователям:
- удобное представление результатов запросов в виде таблиц
- простой механизм генерации отчетов на данных из внешних источников
- назначение постоянных и интерактивных получателей
- проверки и отчеты на основе регламентных заданий, интерактивных действий пользователей

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

1. Роман (Raminus) 02.12.11 09:07
2. Kom-off (Kom-off) 02.12.11 09:10
За цитату из БГ, однозначно, плюс.
3. Taras Варварич (itar59) 02.12.11 10:59
а какие перспективы развития идеи!!!!
4. Сергей (necropunk) 05.12.11 15:25
Вещь однозначно полезная. Плюс автору. Сам нечто похожее писал в свое время, будет время - посмотрю обязательно поподробнее.
5. Vladimir (Boroda) 05.12.11 21:54
Круто! Надо будет обязательно посмотреть и использовать! Спасибо и за обработки, и за идею.
6. Елена из Средиземья (Lacrimosa0000) 06.12.11 15:40
Сама думала о реализации подобного функционала. Интересно будет посмотреть наработки автора.
7. Михаил Максименков (mvmaxim) 07.12.11 21:45
Да, неплохо! Сама идея не нова, я и раньше нечто подобное видел, и сам делал, но продуманный подход к реализации заслуживает уважения!
Есть необходимость реализовать подобную систему без использования электронной почты, т.е. чтобы все взаимодействие происходило только внутри 1С. Пока получаются только кривоватые заплатки, законченной идеи как оформить в подсистему пока нет. Может кто-нибудь уже делал что-то такое (использование задач не совсем удовлетворяет потребности)?
8. Игорь (_ink_) 08.12.11 14:33
Задумка очень интересная и нужная, но в своей фирме заметил, что чем больше всяких окошек, алертов, и прочих напоминалок выскакивает, тем быстрее пользователи привыкают закрывать их не читая. Поэтому к информации, рассылаемой нужно очень обдуманно относиться и не слать всё подряд.
9. Александр Прокопенко (babylon_5) 09.12.11 13:19
Идея действительно классная. Буду тестить.
10. Михаил Максименков (mvmaxim) 10.12.11 09:22
(8) - это лечится легко - хранится история алертов, либо они все дублируются на e-mail руководителя, и если сотрудник не выполнил задание в срок, а напоминание ему об этом было, с него удерживается штраф. У нас на предприятии так людей учили регулярно проверять свою электронную почту.
Как бы все-таки все свинтить только в 1С...
11. Максим Кузнецов (Makushimo) 10.12.11 12:51
Шикарная идея
однозначно использую
спасибо.
12. VVV (V_V_V) 15.12.11 17:29
Идея хорошая.
Версия 8.2 установилась в режиме совместимости с 8.1. Это только у меня так или так и должно быть?
13. VVV (V_V_V) 15.12.11 17:53
Прочитал "Так же в этом модуле находится простая процедура, конвертирующая ТабДок любой сложности в html-код". В Модуле паУниверсальныеМеханизмыСервис ничего подобного не нашел, но в Модуле паУправлениеАлертами есть ВернутьТекстАлертаВHTML - это оно?
14. Павел (Odin-s) 15.12.11 20:31
15. Павел (Odin-s) 15.12.11 20:40
(8) _ink_, Верно. Оптимальные формы алертов: 1. исключение/ошибка (т.е. уведомление о внештатной ситуации), 2. предупреждение о завершении какого-то срочного процесса, требующее реакции пользователя и 3. регулярная отчетность, которую можно подготовить без участия пользователя. Такие алерты не глядя не закроешь :)
16. Павел (Odin-s) 15.12.11 20:45
(12) V_V_V, я сейчас перечитал описание своей публикации и понял, что немного переборщил - система не является полностью универсальной, т.к. требует наличие типовой конфигурации для реализации всего замысла. Т.е. как самостоятельная конфигурация ценности не представляет - поэтому не важно, в каком режиме она устанавливается :)
Кстати, мне дали разумный совет интегрировать эту подсистему с БСП - вот это, как раз, будет универсальным решением (по крайней мере, я на это надеюсь - вопрос с возможностью интеграции ещё не изучал).
17. Павел (Odin-s) 15.12.11 20:47
(13) V_V_V, да, это оно. Первая функция, с которой всё началось :)
18. Padonak-XXI (DMSDeveloper) 21.12.11 10:18
Разработка как раз в тему. Нужно что то подобное. только задача несколько другая. Нужно получать каждый день данные из центра, парсить их и рассылать ответственным.

А в самой подсистеме данные созданных алертов не хранятся?
Если нет, то стоит подумать над такой возможностью. ИМХО.
19. Saili 20.01.12 10:48
Спасибо. Интересная разработка и полезная. С хорошими перспективами развития. Очень в тему.
Что-то такое действительно нужно.
20. Александр Хоменко (scape) 22.02.12 10:13
А по русски нельзя было назвать, система уведомлений например. Совсем сбрендили уже с английскими словами уродцами )-:
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа