Как автоматически создать задачу или запустить процесс при изменении статуса в 1С:Документооборот 3.0

Программист 1С v8.3 (Управляемые формы) 1С:Документооборот IT и автоматизация бизнеса
← На главную

В современных бизнес-процессах автоматизация уведомлений и задач при смене жизненного цикла документа является критически важной. В 1С:Документооборот 3.0 (релиз 3.0.14 и выше) подходы к решению этой задачи значительно изменились по сравнению с версией 2.1. Теперь мы оперируем не просто бизнес-процессами, а «действиями» и «правилами обработки». Рассмотрим подробно, как реализовать автоматическое создание задачи (ознакомления или исполнения) при изменении статуса договора.

Анализ архитектурных особенностей 1С:Документооборот 3.0

Прежде чем переходить к коду, давайте проанализируем ситуацию. В версии 3.0 объект ЗадачаИсполнителя всегда жестко связан с определенным бизнес-процессом (действием). Мы не можем просто создать «висящую в воздухе» задачу. Поэтому наша цель — запустить процесс, который, в свою очередь, сформирует задачи нужным пользователям. Выясним причину, по которой автору темы рекомендовали использовать именно правила запуска: это позволяет избежать внесения изменений в конфигурацию и сохраняет поддержку базы.

Способ №1: Использование правил обработки документов (без программирования)

Разберем по шагам наиболее правильный путь с точки зрения методологии 1С. В версии 3.0 основным инструментом управления документом являются Правила обработки. Мы можем настроить систему так, чтобы при достижении определенного статуса автоматически запускалось нужное действие.

  1. Перейдем в раздел Настройка и администрирование — Правила обработки.
  2. Для конкретного вида документа (например, «Договор аренды») создадим или отредактируем схему обработки.
  3. В схеме добавим действие Ознакомление или Исполнение.
  4. В настройках действия укажем условие запуска. Проанализируем ситуацию: нам нужно условие по статусу. В 1С:ДО 3.0 статус — это не просто реквизит, а состояние, которое может меняться в зависимости от выполнения этапов.
  5. Если нам нужно запустить задачу именно при ручном изменении статуса, воспользуемся механизмом Автозапуска. В настройках автозапуска можно указать скрипт на встроенном языке, который проверит: Объект.Статус = Справочники.СтатусыДокументов.Действует.

Способ №2: Скрипты в пользовательском режиме (Дополнительные обработчики)

Если типовых правил обработки недостаточно, или логика выбора исполнителей слишком сложна (например, исполнители выбираются пользователем прямо на форме в момент смены статуса), мы можем использовать Дополнительные обработчики событий. Это позволяет написать код, который выполнится при записи объекта.

Рассмотрим пример логики такого скрипта:


// Проверяем, что статус изменился на нужный нам
Если Объект.Статус = Справочники.СтатусыДокументов.Действует Тогда
    // Инициализируем структуру параметров для запуска
    ПараметрыЗапуска = Новый Структура;
    ПараметрыЗапуска.Вставить("Документ", Объект.Ссылка);
    
    // Вызываем процедуру запуска обработки
    // В ДО 3.0 рекомендуется использовать программный интерфейс
    РаботаСОбработкойДокументов.ЗапуститьОбработку(Объект.Ссылка);
КонецЕсли;

Важный момент: чтобы пользователи, выбранные на форме, попали в задачу, они должны быть сохранены в объекте. Рекомендуем использовать для этого Дополнительные реквизиты (тип «Список пользователей» или «Пользователь»). Проанализируем почему: скрипты часто выполняются на сервере в фоновом задании, и данные, которые не записаны в базу (а существуют только «в памяти» формы), будут им недоступны.

Способ №3: Программный запуск через API Документооборота

Если вы разрабатываете расширение или модифицируете конфигурацию, рассмотрим подробнее, как программно инициировать процесс. В версии 3.0 крайне не рекомендуется создавать объект бизнес-процесса напрямую через СоздатьОбъект(). Вместо этого следует использовать методы модуля РаботаСОбработкойДокументов.

Посмотрим на пример кода, который запускает обработку для документа:


// Сначала необходимо убедиться, что для документа настроены правила
Если РаботаСОбработкойДокументов.ЕстьНастроеннаяОбработка(СсылкаНаДокумент) Тогда
    // Запуск процесса обработки (автоматически создаст задачи по схеме)
    РаботаСОбработкойДокументов.ЗапуститьОбработку(СсылкаНаДокумент);
Иначе
    // Если правил нет, можно создать задачу программно через Поручение
    ДанныеБП = Новый Структура;
    ДанныеБП.Вставить("Предмет", СсылкаНаДокумент);
    ДанныеБП.Вставить("Исполнители", СписокИсполнителей);
    ДанныеБП.Вставить("Описание", "Просим ознакомиться с изменением статуса договора.");
    
    // Вызов интеграционного метода создания простого поручения
    // (Требуется наличие прав у текущего пользователя)
КонецЕсли;

Работа с детекторами событий (для произвольных справочников)

Автор вопроса упоминает «Справочник Договор». Если это не типовой вид документа 1С:ДО, а ваш кастомный справочник, то стандартные правила обработки к нему не применятся. В этом случае нам помогут Бизнес-события.

Проанализируем алгоритм настройки:

  1. Создаем новый Детектор события (раздел «Настройка и администрирование»).
  2. В качестве условия детектора выбираем «Изменение объекта» и указываем реквизит Статус.
  3. Создаем Правило бизнес-события, которое будет реагировать на срабатывание детектора.
  4. В правиле указываем действие: «Запустить процесс». В качестве шаблона процесса выбираем заранее подготовленный шаблон «Ознакомление».

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

Нюансы передачи участников с формы

Часто возникает ситуация, когда список тех, кому должна уйти задача, определяется пользователем динамически. Рассмотрим, как это корректно обработать. В 1С:ДО 3.0 для этого идеально подходят Автоподстановки. Вы можете создать свою автоподстановку в коде (расширении), которая будет считывать данные из табличной части документа или его дополнительных реквизитов. Таким образом, в шаблоне процесса в поле «Исполнитель» будет стоять, например, ИзДопРеквизита_СписокОзнакомления, и система сама подставит туда нужных людей в момент формирования задач.

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

← На главную