Многие разработчики при работе с конфигурациями 1С стремятся минимизировать вмешательство в типовой код, чтобы облегчить процесс последующих обновлений. Расширения конфигурации стали отличным инструментом для этих целей. Однако долгое время одним из главных ограничений была невозможность создания объекта РегламентныеЗадания непосредственно в расширении. Проанализируем эту ситуацию и разберем по шагам, как решить данную задачу в зависимости от используемой версии платформы.
Если вы используете платформу «1С:Предприятие» версии 8.3.23 или выше, проблема решается штатным образом. Разработчики 1С услышали пожелания сообщества и добавили полноценную поддержку регламентных заданий в механизм расширений. Рассмотрим подробнее, как это работает сейчас:
РегламентноеЗадание можно добавить прямо в дерево метаданных вашего расширения. Больше не нужно придумывать сложные схемы или использовать справочники дополнительных обработок.Если обновление платформы пока невозможно, выясним, как можно выкрутиться из ситуации. В обсуждениях специалисты выделили два основных рабочих компромисса.
Вариант 1: Использование механизма дополнительных отчетов и обработок (БСП)
Вместо того чтобы пытаться добавить метаданные в расширение, логику работы выносят во внешнюю обработку. Библиотека стандартных подсистем (БСП) имеет встроенный справочник дополнительных отчетов и обработок. Посмотрим на алгоритм действий:
Этот способ позволяет вообще не снимать конфигурацию с поддержки и не использовать расширения для фоновых задач.
Вариант 2: Метод «Пустышки» с минимальным изменением конфигурации
Если архитектура требует именно программного контроля над регламентным заданием и допускается минимальное вмешательство в типовую конфигурацию, применяется следующий подход. Мы добавляем в основную базу только «каркас», а всю логику пишем в расширении:
РегламентноеЗадание (пустышку).&Вместо или &После) и уже там пишем реальную бизнес-логику.Пример перехвата вызова в модуле расширения:
&Вместо("ВыполнитьФоновуюЗадачу")
Процедура Расш_ВыполнитьФоновуюЗадачу()
// Здесь размещаем весь полезный код нашего регламентного задания
// Основная конфигурация при этом содержит только пустую процедуру-заглушку
ВыполнитьОбработкуДанных();
КонецПроцедуры
Оба обходных пути активно использовались на практике, однако с переходом на версию 8.3.23 необходимость в них отпадает. Рекомендуем использовать штатный функционал расширений, что сделает архитектуру ваших решений более прозрачной и надежной.