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

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

При настройке комплексных процессов или схем обработки в 1С:Документооборот администраторы часто сталкиваются с ограничением: стандартный функционал позволяет отложить старт этапа только на фиксированное количество дней. Однако в реальной практике дата начала задачи часто зависит от реквизитов документа — например, от желаемой даты поставки или срока окончания аренды. В этой статье мы разберем, как обойти это ограничение и реализовать динамическую паузу в процессе — для этого подойдёт автоматизация расчета календарного плана и запуска задач.

Проблема стандартного механизма

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

Решение 1: Организационный подход (контроль исполнителем)

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

Преимущества этого метода:

  1. Прозрачность: задача видна в списке «Задачи мне», и исполнитель может планировать свое время.
  2. Гибкость: если обстоятельства изменятся, срок задачи можно перенести через штатный механизм «Запрос на перенос срока».
  3. Простота: не требуется никакого кода.

Для того чтобы исполнители не пугались задач, которые «висят» долго, рекомендуется изменить наименование этапа на более подходящее, например, «Сопровождение и контроль исполнения заказа».

Решение 2: Использование бизнес-событий (для 1С:ДО 2.1 и 3.0)

Если задача категорически не должна появляться в списке до определенного момента, воспользуемся механизмом бизнес-событий. Мы можем настроить старт процесса или этапа не по завершению предыдущего, а по наступлению конкретного события в системе.

Разберем алгоритм настройки:

  1. Создаем новое Дополнительное бизнес-событие.
  2. Пишем небольшое регламентное задание или используем Детектор событий, который будет проверять документы.
  3. Как только текущая дата становится больше или равна дате из реквизита документа, детектор генерирует событие.
  4. В настройках процесса указываем «Стартовать по событию».

Решение 3: Программная установка даты в 1С:Документооборот 3.0

В версии 3.0 подход к процессам изменился — теперь мы работаем со Схемами обработки. Здесь у нас появляется больше свободы для использования скриптов. Если нам нужно программно вычислить дату старта из дополнительного реквизита, мы можем использовать встроенные функции управления свойствами.

Выясним причину, по которой код новичков часто не работает: обращение к доп. реквизитам по наименованию крайне ненадежно. Рассмотрим правильный пример получения значения даты из доп. реквизита ДатаНачалаДействия:


// Получаем ссылку на дополнительный реквизит
РеквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Дата начала действия (Заявка на технику)");

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

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

Решение 4: Работа с регистром «Очередь отложенных стартов»

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

При записи в этот регистр следует учитывать:

Решение 5: Создание технического этапа «Ожидание»

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

Посмотрим на шаги реализации:

  1. Исполнителем этапа назначается специально созданный Пользователь-Бот (или роль «Система»).
  2. В схеме процесса после этого этапа ставится Условие.
  3. Регламентное задание раз в час проверяет все задачи, назначенные на «Бота».
  4. Если дата в документе наступила, задание программно завершает задачу «Ожидание» с результатом «Готово», и процесс идет дальше.

Этот метод хорош тем, что в карте маршрута любой пользователь видит: «Процесс не завис, он официально ждет даты Х».

Важные технические ограничения

Проанализируем работу регламентных заданий. Механизм отложенного старта в 1С:ДО не является «мгновенным». Он обслуживается регламентным заданием Отложенный старт процессов — есть готовый мониторинг и контроль выполнения регламентных заданий.

На что это влияет:

  1. Если задание настроено на запуск раз в 30 минут, то даже если ваша дата наступила в 12:05, задача может появиться только в 12:30.
  2. Если база работает в файловом варианте, регламентные задания не будут выполняться, пока не открыт хотя бы один сеанс пользователя.
  3. При программной установке даты через Дополнительные реквизиты всегда проверяйте наличие прав у пользователя, запускающего процесс, на чтение этих реквизитов.

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

← На главную