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