Случается ситуация, когда нужно в бизнес-процессе сделать параллельный порядок исполнения(кто первый встал, того и тапки), но при этом дополнительно уведомлять смежных исполнителей путем рассылки вопросов(можете заменить на свой вариант).
Писалось на конфе: Документооборот 8 КОРП, редакция 2.1 (2.1.14.4), платформа 8.3.13.1690
При закрытии основной задачи все порождённые вопросы закрываются автоматически.
Автору процесса вопросы не приходят.
//УведомлениеПараллельныхИсполнителей //Подписка: Задача выполнена Задача = Событие.Источник; БПроцесс = Задача.БизнесПроцесс; ТекШаг = 0; врИсполнителиСтрокой= «»; Если ЗначениеЗаполнено(Задача) И ТипЗнч(БПроцесс) = Тип(«БизнесПроцессСсылка.Исполнение») Тогда //При выполнении задачи закрыть все вопросы Запрос = Новый Запрос( «ВЫБРАТЬ | ЗадачаИсполнителя.Ссылка КАК Ссылка |ИЗ | БизнесПроцесс.РешениеВопросовВыполненияЗадач КАК РешениеВопросовВыполненияЗадач | ЛЕВОЕ СОЕДИНЕНИЕ Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя | ПО (ЗадачаИсполнителя.БизнесПроцесс = РешениеВопросовВыполненияЗадач.Ссылка) |ГДЕ | РешениеВопросовВыполненияЗадач.ПредметРассмотрения = «Рассмотрение вопроса: Выполнена смежная задача:%»» | И ЗадачаИсполнителя.Выполнена = ЛОЖЬ»); Запрос.УстановитьПараметр(«ПредметРассмотрения», Задача); НайтиВопросы = Запрос.Выполнить().Выбрать(); Пока НайтиВопросы.Следующий() Цикл ТекЗадача = НайтиВопросы.Ссылка.ПолучитьОбъект(); ТекЗадача.РезультатВыполнения = «#АВТО: Выполнение задачи: «+СокрЛП(Задача); ТекЗадача.ВыполнитьЗадачу(); КонецЦикла; // Расчитать шаги выполнения ИсполнителиДляУведомления = БПроцесс.Исполнители.Выгрузить(); ИсполнителиДляУведомления.Колонки.Добавить(«Шаг»); РаботаСБизнесПроцессамиКлиентСервер.ЗаполнитьШаг(ИсполнителиДляУведомления); // Определить текущий шаг по задаче НайтиТекШаг = ИсполнителиДляУведомления.Найти(Задача,»ЗадачаИсполнителя»); Если НайтиТекШаг <> Неопределено Тогда ТекШаг = НайтиТекШаг.Шаг; КонецЕсли; //Удалить строки лишних шагов, у кого задача выполнена и текущего исполнителя //Если в шаге больше одной строки то это параллельное исполнение Сч = 0; Пока Сч < ИсполнителиДляУведомления.Количество() Цикл Если ИсполнителиДляУведомления[Сч].Шаг <>ТекШаг Тогда ИсполнителиДляУведомления.Удалить(Сч); ИначеЕсли ИсполнителиДляУведомления[Сч].Исполнитель = Задача.Исполнитель ИЛИ ИсполнителиДляУведомления[Сч].Исполнитель = БПроцесс.Автор Тогда ИсполнителиДляУведомления.Удалить(Сч); ИначеЕсли НЕ ЗначениеЗаполнено(ИсполнителиДляУведомления[Сч].ЗадачаИсполнителя) Тогда ИсполнителиДляУведомления.Удалить(Сч); ИначеЕсли ИсполнителиДляУведомления[Сч].ЗадачаИсполнителя.Выполнена Тогда ИсполнителиДляУведомления.Удалить(Сч); Иначе Сч = Сч + 1; КонецЕсли; КонецЦикла; //Создаем вопросы(уведомления) Для каждого ТекИсполн из ИсполнителиДляУведомления Цикл //Соберём список оставшихся исполнителей трИсполнителиСтрокой = «»; Для каждого врТекИсполн из ИсполнителиДляУведомления Цикл Если НЕ врТекИсполн.Исполнитель = ТекИсполн.Исполнитель Тогда трИсполнителиСтрокой = трИсполнителиСтрокой+Символы.ПС+врТекИсполн.Исполнитель; КонецЕсли; КонецЦикла; НовыйВопрос = БизнесПроцессы.РешениеВопросовВыполненияЗадач.СоздатьБизнесПроцесс(); НовыйВопрос.ВидВопроса = Перечисления.ВидыВопросовВыполненияЗадач.Иное; НовыйВопрос.Описание = «Выполнена смежная задача: «+СокрЛП(Задача)+ ?(СтрДлина(трИсполнителиСтрокой)>0, Символы.ПС+»Исполнители кроме Вас: «+трИсполнителиСтрокой, «»); НовыйВопрос.ПредметРассмотрения = ТекИсполн.ЗадачаИсполнителя; НовыйВопрос.ГлавнаяЗадача = ТекИсполн.ЗадачаИсполнителя; НовыйВопрос.Дата = ТекущаяДатаСеанса(); НовыйВопрос.СрокИсполнения = ТекущаяДатаСеанса(); НовыйВопрос.Автор = БПроцесс.Автор; //От кого НовыйВопрос.ИнициаторПроцесса= ТекИсполн.Исполнитель;//Кому НовыйВопрос.Записать(); НовыйВопрос.Старт(); //Создать связь с основным процессом ЗаписьДБПроцессы = РегистрыСведений.ДочерниеБизнесПроцессы.СоздатьМенеджерЗаписи(); ЗаписьДБПроцессы.РодительскийПроцесс= БПроцесс; ЗаписьДБПроцессы.СвязующаяЗадача = ТекИсполн.ЗадачаИсполнителя; ЗаписьДБПроцессы.ДочернийПроцесс = НовыйВопрос.Ссылка; ЗаписьДБПроцессы.Записать(); врИсполнителиСтрокой = врИсполнителиСтрокой +Символы.ПС+ ТекИсполн.Исполнитель; КонецЦикла; КонецЕсли; //Записываем результат в ЖР Если СтрДлина(врИсполнителиСтрокой)>0 Тогда ЗаписьЖурналаРегистрации(«ТМ.Уведомление параллельных исполнителей», УровеньЖурналаРегистрации.Информация,Задача.Метаданные(),Задача.Ссылка, «Автор процесса: » +СокрЛП(БПроцесс.Автор)+Символы.ПС+ «Выполнил(а) задачу: » +СокрЛП(Задача.Исполнитель)+Символы.ПС+ «Задача: » +СокрЛП(Задача)+Символы.ПС+ «Отправлен(ы) вопрос(ы): » +врИсполнителиСтрокой); КонецЕсли;
И ещё один обработчик, для автоматического закрытия ознакомлений:
13 Бизнес события — отрывок из самоучителя 1С:Документооборот
Бизнес-события — Настройка и администрирование «1С:Документооборот» — 1С:Учебный центр №1
//АвтоЗакрытиеОзнакомленияСОтветомНаВопросВыполненаСмежнаяЗадача //Подписка: Создание задачи Задача = Событие.Источник; Если ВРег(Лев(Задача.Наименование, 59)) = «ОЗНАКОМИТЬСЯ С ОТВЕТОМ НА ВОПРОС: ВЫПОЛНЕНА СМЕЖНАЯ ЗАДАЧА:» Тогда ТекущаяЗадача = Задача.ПолучитьОбъект(); ТекущаяЗадача.ВыполнитьЗадачу(); КонецЕсли;
Статья про настройку обработчиков Бизнес-событий:
UPD 2023/11/14 Добавил связь с основным процессом
Источник: open-budget.ru
Автоматическое создание входящего документа из исходящего в 1С Документооборот
Автоматическое создание входящего документа из исходящего в 1С Документооборот
Статья описывает подход к автоматизации создания и регистрации входящих документов при регистрации исходящих при взаимодействии в системе 1С Документооборот двух организаций. Статья даёт ответы на следующие вопросы:
- Как запрограммировать и настроить дополнительные обработчики бизнес-событий?
- Как автоматизировать взаимодействие двух организаций в 1С Документооборот при обмене корреспонденцией?
- Как программно создавать входящие документы?
- Как копировать файлы из одного документа в другой?
- Как программно регистрировать документы?
Цель – исключить ручное заведение входящих документов при отправке исходящего документа между организациями, работающими в системе.
Для создания нового обработчика необходимо войти в меню Настройка и администрирование – Дополнительные обработчики, создать новый дополнительный обработчик бизнес-события и назвать его «автосоздание_входящих». Далее необходимо заполнить код обработчика и выбрать ответственного.
После создания обработчика на вкладке «Подписки» формы обработчика добавляем подписку на событие «Регистрация исходящего документа». Подписка предназначена для связи вида бизнес-события и обработчика. В данном случае выбран предопределенный вид события.
После настройки остаётся установить флаг «Обработчик влючен» на форме обработчика.
Первичный анализ событий и результатов работы обработчика можно производить с использованием регистра сведений «Произошедшие бизнес-события» (меню Все функции — регистры сведений). Для каждого зарегистрированного события после его обработки дополнительным обработчиком бизнес-событий устанавливается либо флаг «Обработано», либо флаг «Не удалось обработать».
Дополнительный анализ при неудачной обработке можно производить с использованием журнала регистрации изменений.
Источник: adsc.ru
Бизнес-события в 1С:Документооборот
Лицензия на сервер + 100 рабочих мест. Электронная поставка.
10 000 руб.
Консультации по 1С:Документооборот
Оперативные консультации по 1С. Не тратьте время — мы поможем решить проблему любой сложности.
от 700 руб.
Настройка 1С:Документооборот
Настройка и доработка 1С:Документооборот для борьбы с ошибками. Гарантия на все результаты работ.
от 2 600 руб.
1С:Документооборот версии КОРП
Идеально подходит для средних, крупных компаний и холдингов со сложным документооборотом
Внедрение 1С ЭДО
Типовой функционал, встроенный в прикладные решения 1С
1С:Документооборот помимо настроек различных параметров имеет очень полезный механизм бизнес-событий. Его можно использовать, если стандартных возможностей системы уже не хватает, но уходить с поддержки не хочется. Например, нужно автоматически регистрировать служебные записки после их утверждения, чтобы не усложнять работу пользователей лишней ненужной работой.
Бизнес-события – это отображение факта, что произошло некое важное для организации событие, которое подтверждено изменением данных в информационной базе. К ним можно привязать специальные обработчики, которые помогут реализовывать те или иные механизмы.
В типовой версии уже предустановлены готовые бизнес-события, они формируются автоматом и применяются для разнообразных механизмов (ук примеру, по видам событий «Создание задачи» и «Выполнение задачи» могут быть заданы автоматические уведомления).
Приглашаем на
бесплатный вебинар!
06 июня в 11:00 мск
Для готовых видов бизнес-событий можно писать свои обработчики для расширения функционала системы. Также в системе можно задать собственные бизнес-события и привязывать к ним обработчики событий. Все это практически безгранично расширяет возможности системы.
Бизнес-события состоят из нескольких частей:
- детекторы событий (типовые и пользовательские);
- реестр произошедших событий;
- обработчики событий (типовые и пользовательские).
Для использования механизма бизнес-событий в настройках программы должна быть установлена соответствующая галочка. Зайдем в «Настройки программы», в раздел «Настройка и администрирование».
Перейдем по гиперссылке «Общие настройки».
В настройках должна быть установлена галочка «Бизнес-события».
Программой «1С:Документооборот» в разделе «Настройка и администрирование-Бизнес-события» предусмотрен справочник «Виды бизнес-событий».
В справочнике уже заложены предопределенные бизнес-события, которые фиксируются системой автоматически.
Перечень типовых бизнес-событий в системе:
- Возобновление процесса
- Добавление в категорию
- Завершение процесса
- Задача выполнена
- Захват файла для редактирования
- Изменение брони
- Изменение внутреннего документа
- Изменение входящего документа
- Изменение значения показателя процесса
- Изменение исходящего документа
- Изменение мероприятия
- Изменение отсутствия
- Изменение проекта
- Изменение проектной задачи
- Изменение состава комплекта
- Изменение файла
- Назначение ответственным за документ
- Освобождение файла
- Остановка процесса
- Отмена выполнения задачи
- Перенаправление задачи
- Перерегистрация внутреннего документа
- Перерегистрация входящего документа
- Перерегистрация исходящего документа
- Подошел срок задачи
- Получение входящего письма
- Прерывание процесса
- Просрочена задача
- Регистрация внутреннего документа
- Регистрация входящего документа
- Регистрация исходящего документа
- Создание брони
- Создание внутреннего документа
- Создание входящего документа
- Создание задачи
- Создание исходящего документа
- Создание контрагента
- Создание мероприятия
- Создание отсутствия
- Создание проекта
- Создание проектной задачи
- Создание сообщения
- Создание файла
- Старт процесса
Как только какое-либо событие произошло, происходит запись этого события в регистр сведений «Произошедшие бизнес-события» (доступен в меню «Все функции»).
В этом регистре отображается вид события, источник записи, автор и отметка об обработке записи.
Так, например, при создании нового внутреннего документа «Договор аренды» в регистре появляется запись «Создание внутреннего документа», при формировании файла договора в регистре появляется запись «Создание файла» и т.д.
Пользователь может создавать свои бизнес-события и привязать к ним обработчики событий – типовые или пользовательские. Справочник «Дополнительные обработчики» доступен в разделе «Настройка и администрирование-Бизнес-события».
С помощью кнопки «Создать» пользователь может задать дополнительный обработчик бизнес-событий.
В карточке указывается наименование обработчика, код обработки события и устанавливается галочка «Обработчик включен».
В меню «Подписки» пользователь указывает подписку для данного обработчика (кнопка «Создать»).
Связь обработчика и вида события производится путем выбора его из справочника.
Бизнес-событие может запускаться при создании документа (внутреннего, входящего, исходящего, его регистрации, получении входящего и т.п.).
Связь вида бизнес-события с обработчиком указывается в данной форме.
Кроме типовых бизнес-событий в системе можно добавлять свои события. Для этого необходимо сделать следующее:
- В справочнике «Виды бизнес-событий» добавить новое бизнес-событие;
- Перейти к созданию детектора бизнес-событий*. У детектора установить флаг «Детектор включен».
- Создать дополнительный обработчик. Установить у обработчика флаг «Обработчик включен». Настроить у обработчика подписку на событие.
*Детектор бизнес события – это механизм, который отслеживает выполнение заданного условия и создает определенное событие в информационной базе.
Детектор отслеживает события. Как только условие детектора выполнено, система фиксирует новое бизнес-событие. Затем новое бизнес-событие в соответствии с подписками на него будет обработано связанным обработчиком.