При настройке комплексных процессов или схем обработки в 1С:Документооборот администраторы часто сталкиваются с ограничением: стандартный функционал позволяет отложить старт этапа только на фиксированное количество дней. Однако в реальной практике дата начала задачи часто зависит от реквизитов документа — например, от желаемой даты поставки или срока окончания аренды. В этой статье мы разберем, как обойти это ограничение и реализовать динамическую паузу в процессе — для этого подойдёт автоматизация расчета календарного плана и запуска задач.
В шаблонах процессов 1С:ДО (версии 2.1) настройка отложенного старта жестко привязана к числу. Мы можем указать, что задача должна стартовать через 5 дней после завершения предыдущего этапа, но не можем указать «стартовать 15 сентября», если эта дата записана в дополнительном реквизите документа. Рассмотрим подробнее, какие инструменты у нас есть для решения этой задачи в разных версиях программы.
Прежде чем приступать к программированию, проанализируем ситуацию: зачем нам «прятать» задачу от исполнителя? Если мы создадим задачу сразу, но установим ей срок исполнения в будущем (например, через месяц), система позволит нам строить отчеты по исполнительской дисциплине, видеть загрузку и прогнозировать работу. — для этой задачи есть инструментарий управления задачами 1С:Документооборот из внешних систем.
Преимущества этого метода:
Для того чтобы исполнители не пугались задач, которые «висят» долго, рекомендуется изменить наименование этапа на более подходящее, например, «Сопровождение и контроль исполнения заказа».
Если задача категорически не должна появляться в списке до определенного момента, воспользуемся механизмом бизнес-событий. Мы можем настроить старт процесса или этапа не по завершению предыдущего, а по наступлению конкретного события в системе.
Разберем алгоритм настройки:
В версии 3.0 подход к процессам изменился — теперь мы работаем со Схемами обработки. Здесь у нас появляется больше свободы для использования скриптов. Если нам нужно программно вычислить дату старта из дополнительного реквизита, мы можем использовать встроенные функции управления свойствами.
Выясним причину, по которой код новичков часто не работает: обращение к доп. реквизитам по наименованию крайне ненадежно. Рассмотрим правильный пример получения значения даты из доп. реквизита ДатаНачалаДействия:
// Получаем ссылку на дополнительный реквизит
РеквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Дата начала действия (Заявка на технику)");
// Получаем значение свойства из документа
Если ЗначениеЗаполнено(РеквизитСсылка) Тогда
ДатаСтарта = УправлениеСвойствами.ЗначениеСвойства(Объект.Ссылка, РеквизитСсылка);
// Если дата получена, устанавливаем отложенный старт
Если ЗначениеЗаполнено(ДатаСтарта) Тогда
// Код для записи в очередь отложенных стартов или настройки параметров обработки
КонецЕсли;
КонецЕсли;
Важно помнить, что в версии 3.0 настройки этапов хранятся в правилах обработки. Для динамического управления рекомендуется использовать Скрипты в правилах обработки, которые выполняются перед началом действия.
Технически все задачи, которые ждут своего времени, попадают в специальный регистр сведений ОчередьОтложенныхСтартов. Проанализируем ситуацию: если мы программно создаем задачу или процесс, мы можем напрямую внести запись в этот регистр, указав точную дату и время, когда регламентное задание должно «пробудить» наш процесс.
При записи в этот регистр следует учитывать:
ДатаВремя.Это наиболее «визуальный» способ для пользователей. Вместо того чтобы использовать скрытый механизм отложенного старта, мы добавляем в схему процесса этап «Ожидание наступления даты».
Посмотрим на шаги реализации:
Этот метод хорош тем, что в карте маршрута любой пользователь видит: «Процесс не завис, он официально ждет даты Х».
Проанализируем работу регламентных заданий. Механизм отложенного старта в 1С:ДО не является «мгновенным». Он обслуживается регламентным заданием Отложенный старт процессов — есть готовый мониторинг и контроль выполнения регламентных заданий.
На что это влияет:
Дополнительные реквизиты всегда проверяйте наличие прав у пользователя, запускающего процесс, на чтение этих реквизитов.Подводя итог, можно сказать: для простых случаев лучше использовать перенос сроков или технический этап ожидания. Для сложных автоматизированных систем оптимальным будет использование бизнес-событий или прямая программная работа со схемами обработки в версии 3.0.