При настройке периодических задач в платформах 1С:Предприятие разработчики часто сталкиваются с ограничением штатного конструктора расписаний. Объект РасписаниеРегламентногоЗадания позволяет задать запуск в определенный день недели, с интервалом в N дней или в N-й день от начала/конца месяца. Однако выбрать одновременно несколько произвольных дат (например, 1-е и 15-е числа) в рамках одного объекта расписания платформа не позволяет.
Рассмотрим подробнее основные технические способы решения этой задачи, их плюсы и минусы, а также инструментарий для проверки работы расписаний.
Разберем наиболее универсальный подход. В этом варианте расписание регламентного задания настраивается на ежедневный запуск (например, один раз в сутки в 01:00). При вызове процедура-обработчик проверяет текущую дату и запускает бизнес-логику только тогда, когда число месяца соответствует условию.
Посмотрим на пример реализации данного метода в модуле:
Процедура ВыполнитьРегламентноеЗадание() Экспорт
ТекущийДень = День(ТекущаяДата());
// Проверяем, является ли день 1-м или 15-м числом месяца
Если ТекущийДень = 1 Или ТекущийДень = 15 Тогда
// Вызов основной процедуры обработки
ВыполнитьОсновнуюОбработку();
КонецЕсли;
КонецПроцедуры
Преимущества метода:
Если задача требует привязки к графику рабочих дней, штатный механизм расписаний 1С также не поможет, так как он работает исключительно по астрономическому календарю. В этом случае внутри обработчика используется функция библиотеки стандартных подсистем (БСП) КалендарныеГрафики.ЭтоРабочийДень().
Если внесение изменений в код обработчика нежелательно или требуется полностью доверить управление расписанием администратору базы через пользовательский режим, применяют дублирование регламентных заданий.
Проанализируем порядок действий при этом подходе:
Особенности способа: данный вариант отлично подходит для небольшой базы с малым количеством регламентных процедур. Однако при масштабировании, если в системе присутствуют сотни задач, удвоение количества записей в списке РегламентныеЗадания может усложнить навигацию и мониторинг для системного администратора.
В сложных архитектурных решениях применяются дополнительные варианты организации очереди фоновых процессов:
0 2 1,15 * *) вызывает HTTP-сервис базы 1С или запускает сеанс 1cv8.exe с параметрами обработки.В платформе 1С:Предприятие отсутствует штатный визуальный графический инструмент для моделирования и демонстрации будущих точек срабатывания расписания. Для проверки и отладки созданных алгоритмов рекомендуется использовать следующие средства: