1С:Документооборот помимо настроек различных параметров имеет очень полезный механизм бизнес-событий. Его можно использовать, если стандартных возможностей системы уже не хватает, но уходить с поддержки не хочется. Например, нужно автоматически регистрировать служебные записки после их утверждения, чтобы не усложнять работу пользователей лишней ненужной работой.
Бизнес-события – это отображение факта, что произошло некое важное для организации событие, которое подтверждено изменением данных в информационной базе. К ним можно привязать специальные обработчики, которые помогут реализовывать те или иные механизмы.
В типовой версии уже предустановлены готовые бизнес-события, они формируются автоматом и применяются для разнообразных механизмов (ук примеру, по видам событий «Создание задачи» и «Выполнение задачи» могут быть заданы автоматические уведомления).
Для готовых видов бизнес-событий можно писать свои обработчики для расширения функционала системы. Также в системе можно задать собственные бизнес-события и привязывать к ним обработчики событий. Все это практически безгранично расширяет возможности системы.
Бизнес-события состоят из нескольких частей:
- детекторы событий (типовые и пользовательские);
- реестр произошедших событий;
- обработчики событий (типовые и пользовательские).
Для использования механизма бизнес-событий в настройках программы должна быть установлена соответствующая галочка. Зайдем в «Настройки программы», в раздел «Настройка и администрирование».
Перейдем по гиперссылке «Общие настройки».
В настройках должна быть установлена галочка «Бизнес-события».
Программой «1С:Документооборот» в разделе «Настройка и администрирование-Бизнес-события» предусмотрен справочник «Виды бизнес-событий».
В справочнике уже заложены предопределенные бизнес-события, которые фиксируются системой автоматически.
Перечень типовых бизнес-событий в системе:
- Возобновление процесса
- Добавление в категорию
- Завершение процесса
- Задача выполнена
- Захват файла для редактирования
- Изменение брони
- Изменение внутреннего документа
- Изменение входящего документа
- Изменение значения показателя процесса
- Изменение исходящего документа
- Изменение мероприятия
- Изменение отсутствия
- Изменение проекта
- Изменение проектной задачи
- Изменение состава комплекта
- Изменение файла
- Назначение ответственным за документ
- Освобождение файла
- Остановка процесса
- Отмена выполнения задачи
- Перенаправление задачи
- Перерегистрация внутреннего документа
- Перерегистрация входящего документа
- Перерегистрация исходящего документа
- Подошел срок задачи
- Получение входящего письма
- Прерывание процесса
- Просрочена задача
- Регистрация внутреннего документа
- Регистрация входящего документа
- Регистрация исходящего документа
- Создание брони
- Создание внутреннего документа
- Создание входящего документа
- Создание задачи
- Создание исходящего документа
- Создание контрагента
- Создание мероприятия
- Создание отсутствия
- Создание проекта
- Создание проектной задачи
- Создание сообщения
- Создание файла
- Старт процесса
Как только какое-либо событие произошло, происходит запись этого события в регистр сведений «Произошедшие бизнес-события» (доступен в меню «Все функции»).
В этом регистре отображается вид события, источник записи, автор и отметка об обработке записи.
Так, например, при создании нового внутреннего документа «Договор аренды» в регистре появляется запись «Создание внутреннего документа», при формировании файла договора в регистре появляется запись «Создание файла» и т.д.
Пользователь может создавать свои бизнес-события и привязать к ним обработчики событий – типовые или пользовательские. Справочник «Дополнительные обработчики» доступен в разделе «Настройка и администрирование-Бизнес-события».
С помощью кнопки «Создать» пользователь может задать дополнительный обработчик бизнес-событий.
В карточке указывается наименование обработчика, код обработки события и устанавливается галочка «Обработчик включен».
В меню «Подписки» пользователь указывает подписку для данного обработчика (кнопка «Создать»).
Связь обработчика и вида события производится путем выбора его из справочника.
Бизнес-событие может запускаться при создании документа (внутреннего, входящего, исходящего, его регистрации, получении входящего и т.п.).
Связь вида бизнес-события с обработчиком указывается в данной форме.
Кроме типовых бизнес-событий в системе можно добавлять свои события. Для этого необходимо сделать следующее:
- В справочнике «Виды бизнес-событий» добавить новое бизнес-событие;
- Перейти к созданию детектора бизнес-событий*. У детектора установить флаг «Детектор включен».
- Создать дополнительный обработчик. Установить у обработчика флаг «Обработчик включен». Настроить у обработчика подписку на событие.
*Детектор бизнес события – это механизм, который отслеживает выполнение заданного условия и создает определенное событие в информационной базе.
Детектор отслеживает события. Как только условие детектора выполнено, система фиксирует новое бизнес-событие. Затем новое бизнес-событие в соответствии с подписками на него будет обработано связанным обработчиком.
Мы познакомились с мощным и очень полезным механизмом бизнес-событий в 1С:Документооборот, который позволяет существенно расширять типовые возможности системы, не внося изменений в конфигурацию и не снимая ее с поддержки. Таким образом, можно достаточно серьезно расширить функционал системы, не лишая ее стандартных обновлений.
Чтобы правильно настроить и использовать все богатые возможности 1С:Документооборот, обращайтесь к профессионалам, мы сделаем вашу работу с документами легкой и эффективной.
antipod13 5 / 5 / 3 Регистрация: 14.07.2015 Сообщений: 393 |
||||||||
1 |
||||||||
1C 8.x Не срабатывает дополнительная обработка у бизнес события документооборот04.02.2020, 12:52. Показов 3113. Ответов 4 Метки нет (Все метки)
Или не срабатывают бизнес события
Код процедуры
и ничего, ни сообщения , ни изменения наименования, ни ошибок
0 |
1142 / 689 / 203 Регистрация: 22.04.2013 Сообщений: 5,159 Записей в блоге: 1 |
|
04.02.2020, 13:00 |
2 |
ну так тестируй. входит ли в процедуру
0 |
5 / 5 / 3 Регистрация: 14.07.2015 Сообщений: 393 |
|
04.02.2020, 13:21 [ТС] |
3 |
не взходит, у меня головная боль, много предстоит писать обработчиков, а как запустить отладку не знаю, я по этому код обработчика хочу перенести в общий модуль, надеясля что отладку этим получу, а тут вообще событие не вызывается, три события
0 |
1808 / 1228 / 442 Регистрация: 16.01.2015 Сообщений: 5,394 |
|
04.02.2020, 14:50 |
4 |
antipod13, проверь свойства общего модуля. Должно быть сервер обращение к серверу
0 |
5 / 5 / 3 Регистрация: 14.07.2015 Сообщений: 393 |
|
04.02.2020, 14:57 [ТС] |
5 |
я уже код изменил, ушел пока от вызова общего модуля. У меня похоже просто события не стартуют
0 |
Бизнес-события
Как сделать, чтобы по документу при наступлении определенного условия автоматически стартовал процесс.
В системе 1С: Документооборот существует понятие бизнес-событий (событий произошедших в программе). Для того чтобы можно было использовать этот механизм, необходимо его включить в настройках программы:
Для классификации таких событий есть специальный справочник «Виды бизнес событий» (сами же события система записывает в регистр сведений «Произошедшие бизнес-события»). Также важными частями механизма бизнес-событий являются детекторы бизнес-событий и обработчики бизнес-событий, но о них ниже.
Рассмотрим пример – нужно автоматически отправлять в обработку все зарегистрированные служебные записки, файлы которых сотрудники подписали электронной подписью. Тогда условием будет – документ зарегистрирован, файл документа подписан электронной подписью, и по данному документу нет комплексного процесса «Обработка записки».
Создадим вид для бизнес-события, которое будет формироваться при наступлении данного условия.
Теперь нужно добавить «Детектор бизнес-события». Детектор бизнес-события — это как раз та часть механизма, которая отслеживает выполнение условия и создает соответствующее событие в системе.
Добавим новый детектор в справочнике «Детекторы бизнес-событий». В его карточке укажем вид бизнес-события, который создали ранее. В поле «Выражение на встроенном языке» необходимо написать код, который проверяет, есть ли хотя бы один объект, для которого условие истинно. Если есть, то переменной «Результат» нужно присвоить значение Истина. В этом случае система создаст бизнес-событие с указанным видом.
ВАЖНО: Если не установлен флаг «Детектор включен», код детектора исполняться не будет!
В нашем случае нужен запрос, который проверяет, что есть документы с выполненным условием (к документу приложен файл, подписанный электронной подписью и по этому документу нет процессов обработки). Если такие документы есть — значит наше событие произошло. Таким образом событие будет сгенерировано, когда в системе есть один или несколько документов, для которых все условия выполнились, и по ним нужно стартовать процесс.
Код детектора:
ВидыДокументов = Новый Массив;
ВидыДокументов.Добавить(Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию(«Служебная записка», Истина));
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
|ИЗ
| Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Файлы КАК Файлы
| ПО ВнутренниеДокументы.Ссылка = Файлы.ВладелецФайла
| ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.КомплексныйПроцесс.Предметы КАК КомплексныйПроцессПредметы
| ПО ВнутренниеДокументы.Ссылка = КомплексныйПроцессПредметы.Предмет
|ГДЕ
| КомплексныйПроцессПредметы.Предмет ЕСТЬ NULL
| И ВнутренниеДокументы.ВидДокумента В(&ВидыДокументов)
| И НЕ ВнутренниеДокументы.ПометкаУдаления
| И Файлы.ПодписанЭП = ИСТИНА
| И НЕ Файлы.ПометкаУдаления»;
Запрос.УстановитьПараметр(«ВидыДокументов», ВидыДокументов);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Результат = Истина;
КонецЕсли;
Выполнение детекторов и формирование событий выполняет регламентное задание «Обработка детекторов бизнес-событий». Это задание исполняется один раз в минуту и выполняет все детекторы событий с флагом Включен.
Далее необходимо выполнить обработку сформированных бизнес-событий. В нашем случае это запуск процессов по документам. Для обработки бизнес-события в программе используется справочник «Дополнительные обработчики-бизнес событий».
В нем также необходимо написать код на встроенном языке, который будет выполнять необходимые действия. В нашем случае фрагмент кода должен находить конкретные документы, для которых выполнились условия, и создавать для них процессы.
Код обработчика:
ВидыДокументов.Добавить(Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию(«Служебная записка», Истина));
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ВнутренниеДокументы.Ссылка
|ИЗ
| Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Файлы КАК Файлы
| ПО ВнутренниеДокументы.Ссылка = Файлы.ВладелецФайла
| ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.КомплексныйПроцесс.Предметы КАК КомплексныйПроцессПредметы
| ПО ВнутренниеДокументы.Ссылка = КомплексныйПроцессПредметы.Предмет
|ГДЕ
| КомплексныйПроцессПредметы.Предмет ЕСТЬ NULL
| И ВнутренниеДокументы.ВидДокумента В(&ВидыДокументов)
| И НЕ ВнутренниеДокументы.ПометкаУдаления
| И Файлы.ПодписанЭП = ИСТИНА
| И НЕ Файлы.ПометкаУдаления»;
Запрос.УстановитьПараметр(«ВидыДокументов», ВидыДокументов);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
ШаблонПроцесса = Справочники.ШаблоныКомплексныхБизнесПроцессов.НайтиПоНаименованию(«Обработка записок», Истина);
Пока Выборка.Следующий() Цикл
Документ = Выборка.Ссылка;
БизнесПроцессОбъект = БизнесПроцессы.КомплексныйПроцесс.СоздатьБизнесПроцесс();
БизнесПроцессОбъект.ЗаполнитьПоШаблонуИПредмету(ШаблонПроцесса, Документ, Документ.Подготовил);
БизнесПроцессОбъект.Записать();
Если ПолучитьФункциональнуюОпцию(«ИспользоватьФоновыйСтартПроцессов») Тогда
РегистрыСведений.ПроцессыДляЗапуска.ДобавитьПроцессДляФоновогоСтарта(БизнесПроцессОбъект.Ссылка);
Иначе
БизнесПроцессОбъект.Старт();
КонецЕсли;
КонецЦикла;
КонецЕсли;
Обработчик бизнес-события и бизнес-событие необходимо связать между собой при помощи команды Подписки
в панели навигации обработчика. В открывшемся списке нужно нажать Создать и указать ссылку на созданный ранее вид бизнес-события.
После этого необходимо проверить работу детектора и обработчика, если код написан без ошибок — новые события будут появляться и обрабатываться встроенным механизмом.
Отлаживать же механизм можно частями — проконтролировать появление новых событий можно, открыв регистр сведений «Произошедшие бизнес события» (все события механизм запишет сюда), срабатывание обработчика можно увидеть тут-же по появлению флага «Обработано», а саму правильность кода обработчика — по появлению запланированного результата (в нашем примерe — создан процесс по документу).
Добрый день, подскажите где искать ошибку!
Документооборот 8 КОРП, редакция 2.1 (2.1.7.9)
Создан дополнительный обработчик бизнес-события — Автоматическая регистрация служебной записки при утверждении и автозаполнение файла по шаблону. На одной базе (тестовой) все прекрасно отрабатывает. А на другой (рабочей, расположена на другом сервере) спотыкается на автозаполнении файла. Если строку «ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, Файло, Истина);» закомментировать, то на рабочей базе обработчик срабатывает, рег номер присваивается (без автозаполнения файла).
Как понять в чем может быть проблема?
Для настройки отладки в конфигураторе 1С надо зайти через главное меню в раздел Отладка – Подключение… Откроется форма подключения к сеансам для отладки. Если конфигуратор запущен на сервере 1С и есть активный серверный или клиентский сеанс, то в разделе «Доступные предметы отладки» сразу можно увидеть строки с указанием пользователя и типа сеанса клиент или сервер.
Форма подключения и настройки отладки в Конфигураторе 1С
В принципе, на этом вся настройка может быть закончена, можно выбрать нужный сеанс и подключиться к нему для отладки. Однако, часто бывает что мы увидим пустой список предметов отладки. Если это ваш случай, то читаем дальше.
Итак, при настройке отладки в конфигураторе 1С надо учесть два момента.
Первое, если вы запустили Конфигуратор не на сервере 1С, то для поиска предметов отладки надо указать имя или IP адрес сервера 1С (если хотим отлаживать не серверный, а клиентский сеанс другого пользователя, то соответственно клиентского компьютера). Для этого ставим флажок «Искать предметы отладки на удалённом компьютере» и рядом в поле вводим имя компьютера, например – srv1c.
Второе. Бывают случаи, когда сервер 1С (тестовый к примеру) запущен не на типовых портах по умолчанию из диапазона 1560-1591, а, например, на портах 1660-1691. Тогда надо по кнопке «Настройка» в форме настройки отладчика указать тот диапазон портов для поиска предметов отладки который был задан в строке запуска службы сервера 1С. В моем случае ставим диапазон 1560-1900, это потому что у меня есть еще запущены тестовые сервера 1С на диапазонах портов 1760-1791 и 1860-1891. После этого нажимаем в правом верхнем углу значок «Обновить» и видим появившиеся предметы отладки. Видно что у серверного сеанса порт указан 1660, это как раз тот сеанс который подключен к тестовому серверу 1С, запущенному на диапазоне портов 1660-1691.
Теперь можно выбрать нужный сеанс и нажать кнопку «Подключить», предмет отобразиться в нижней части формы в разделе «Подключенные предметы отладки».
Все, после этого, запускаем на выполнение программу и отладчик должен остановиться на точке останова, которую вы поставили на сроке кода. В стеке вызовов можно посмотреть где в данный момент выполняется код, на сервер или на клиенте.
Если после всех настроек список доступных предметов отладки так и остался пустым, то следует проверить включен ли режим отладки на сервер 1С. Вот здесь можно посмотреть как включить отладку на сервере 1С.
Если же вам надо подключиться к клиентскому сеансу, то надо проверить включена ли доступность отладки у этого клиентского сеанса. Для это в режиме 1С:Предприятие открываем меню Настройки — Параметры…
В окне настройки параметров в поле «Отладка в текущем сеансе» выбираем «Разрешена (протокол TCP/IP)», то же можно указать в поле «Отладка при перезапуске», чтобы каждый раз не выполнять данную настройку в случае многократного перезапуска клиентского сеанса.
После этой настройки в конфигураторе обновляем список доступных предметов отладки, если все сделано правильно, там должен появится данный клиентский сеанс.
Следует еще сказать про то как подключаться для отладки web-сервисов http-сервисов и фоновых заданий. Так как эти сеансы не имеют постоянного подключения, а запускаются только на время выполнения, бывает, что очень короткое, подключиться к ним вручную очень непросто. Поэтому по кнопке «Автоматическое подключение» заходим в настройки и ставим галочки напротив пунктов «Web-сервисы», «HTTP-сервисы» и «Фоновые задания».
Теперь нам не надо вручную искать предмет отладки и нажимать кнопку «Подключить». Система сама подключиться к запущенному сеансу и сработает точка останова поставленная на строке кода.
В общем это все основные моменты которые нужно знать о настройке отладки в Конфигураторе 1С по протоколу TCP/IP. Однако бывает что из-за блокировок брандмауера или фаервола отладка работать не будет. О том как это исправить тут.