Как настроить расписание регламентного задания в 1С для выполнения 1-го и 15-го числа месяца?

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

При настройке периодических задач в платформах 1С:Предприятие разработчики часто сталкиваются с ограничением штатного конструктора расписаний. Объект РасписаниеРегламентногоЗадания позволяет задать запуск в определенный день недели, с интервалом в N дней или в N-й день от начала/конца месяца. Однако выбрать одновременно несколько произвольных дат (например, 1-е и 15-е числа) в рамках одного объекта расписания платформа не позволяет.

Рассмотрим подробнее основные технические способы решения этой задачи, их плюсы и минусы, а также инструментарий для проверки работы расписаний.

Способ 1. Ежедневный запуск с проверкой даты в коде обработчика

Разберем наиболее универсальный подход. В этом варианте расписание регламентного задания настраивается на ежедневный запуск (например, один раз в сутки в 01:00). При вызове процедура-обработчик проверяет текущую дату и запускает бизнес-логику только тогда, когда число месяца соответствует условию.

Посмотрим на пример реализации данного метода в модуле:


Процедура ВыполнитьРегламентноеЗадание() Экспорт

    ТекущийДень = День(ТекущаяДата());
    
    // Проверяем, является ли день 1-м или 15-м числом месяца
    Если ТекущийДень = 1 Или ТекущийДень = 15 Тогда
        // Вызов основной процедуры обработки
        ВыполнитьОсновнуюОбработку();
    КонецЕсли;

КонецПроцедуры

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

  1. Универсальность: код легко адаптировать под любые сложные условия (например, запуск в 1-й и 11-й рабочие дни месяца с учетом производственного календаря).
  2. Простота администрирования: в конфигураторе и в списке регламентных заданий базы создается всего один объект.

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

Способ 2. Создание нескольких регламентных заданий с общим обработчиком

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

Проанализируем порядок действий при этом подходе:

  1. В конфигураторе или пользовательском режиме создается первое регламентное задание (например, "Обработка данных (1-е число)"), в расписании которого на закладке "Месячные" указывается запуск в 1-й день от начала месяца.
  2. Создается второе регламентное задание (например, "Обработка данных (15-е число)"), в расписании которого указывается запуск в 15-й день от начала месяца.
  3. Оба регламентных задания связываются с одной и той же экспортной процедурой общего модуля.

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

Способ 3. Динамическое планирование через очередь заданий или внешние средства

В сложных архитектурных решениях применяются дополнительные варианты организации очереди фоновых процессов:

  1. Использование подсистемы "Очередь заданий" БСП: процедура после успешного выполнения рассчитывает точную дату следующего запуска (ближайшее 1-е или 15-е число с учетом праздников) и программно создает однократную запись в очереди фоновых заданий.
  2. Внешний планировщик (Cron / Планировщик задач Windows): запуск регламентного процесса делегируется операционной системе. Внешний планировщик по точной Cron-маске (например, 0 2 1,15 * *) вызывает HTTP-сервис базы 1С или запускает сеанс 1cv8.exe с параметрами обработки.

Инструменты для отладки и проверки расписаний

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

  1. Обработка "Консоль регламентных и фоновых заданий": позволяет вручную запустить экспортную процедуру любого задания в фоновом режиме без ожидания наступления планового времени, а также оперативно проверить параметры расписания.
  2. Журнал регистрации: позволяет проанализировать фактические моменты запусков фоновых процессов, проверить статус их завершения и отследить ошибки выполнения.
← На главную