Как отложить выполнение задачи в 1С:Документооборот, чтобы она появилась в списке только в нужную дату?

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

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

Метод 1. Использование штатного механизма «Отложенный старт»

Многие пользователи ошибочно полагают, что отложенный старт настраивается только в шаблоне процесса для всех документов сразу. На самом деле, в версии КОРП этот механизм можно использовать гибко для каждого конкретного случая. Разберем этот алгоритм по шагам:

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

Как это работает в системе:

  1. Процесс создается, но переходит в состояние «Ожидание старта».
  2. Никакие задачи по этому процессу не формируются.
  3. Специальное регламентное задание ВыполнениеОтложенныхСтартовБизнесПроцессов периодически проверяет такие процессы.
  4. Как только наступает указанная дата, система автоматически стартует процесс, и первая задача появляется у исполнителя.

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

Метод 2. Задача-заглушка и механизм эскалации

Если процесс уже запущен, но на определенном этапе (например, перед оплатой) нужно сделать паузу, проанализируем вариант с использованием эскалации задач. Этот метод подходит, если вы хотите видеть, что процесс идет, но исполнитель не должен приступать к работе раньше срока.

Разберем реализацию этого метода:

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

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

Метод 3. Программная фильтрация списка задач через расширение

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

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

Посмотрим на пример кода, который может быть размещен в расширении для формы списка задач:


&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    // Устанавливаем фильтр, чтобы видеть только те задачи, 
    // у которых дата откладывания пустая или уже наступила
    ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Предмет.ОтложитьДо");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
    ЭлементОтбора.ПравоеЗначение = ТекущаяДата();
    ЭлементОтбора.Использование = Истина;
    
    // Также нужно добавить условие для пустых дат
    // (Группа ИЛИ для гибкости настройки)
КонецПроцедуры

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

Метод 4. Возможности версии 3.0: этап «Ожидание» и «Фокусировка»

Если вы планируете переход или уже работаете в 1С:Документооборот 3.0, ситуация упрощается. Разберем новые инструменты системы:

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

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

Практические советы по выбору решения

Выясним, какой из методов лучше выбрать в зависимости от ваших условий:

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

← На главную