В практике разработчика 1С часто встречается ситуация, когда штатный механизм расписания РегламентныеЗадания начинает вести себя непредсказуемо. Одной из наиболее раздражающих проблем является сбой настройки «последний день месяца», при которой задание, вопреки логике, начинает запускаться ежедневно в указанное время. Проанализируем, почему это происходит, и рассмотрим пошагово, как гарантированно добиться корректной работы системы.
Для начала разберем, как платформа 1С:Предприятие интерпретирует настройки расписания. Когда мы указываем «выполнять последнего числа месяца», менеджер заданий вычисляет дату следующего запуска сразу после завершения текущего сеанса. Однако в архитектуре планировщика существует несколько уровней фильтрации: общие параметры, дневное расписание, недельное и месячное. Если в этих вкладках возникает логический конфликт, платформа может «сбросить» более сложный фильтр (месячный) и оставить только самый простой (дневной).
Рассмотрим подробнее основные причины сбоев:
ScheduledJobs могут оставаться «фантомные» записи.Выясним причину через интерфейс настройки. Часто проблема кроется в избыточных данных на вкладках, которые кажутся нам неактивными. Проанализируем алгоритм правильной настройки:
Откройте форму настройки расписания и проверьте следующие параметры:
Как советуют опытные специалисты, иногда помогает «встряска» планировщика через установку конкретной даты начала. Попробуем установить дату начала на несколько дней раньше конца месяца. Это заставляет систему заново пересчитать весь цикл выполнения.
Поскольку механизм расписания «последний день месяца» исторически считается нестабильным, разберем наиболее надежный метод, который используют ведущие разработчики. Вместо того чтобы полагаться на капризный планировщик, мы переложим логику проверки даты на само задание. При необходимости можно использовать подсистему регулярных заданий для выполнения задач по графикам.
Алгоритм действий:
Рассмотрим пример кода, который необходимо вставить в самое начало вашей экспортной процедуры:
Процедура ВыполнитьРассылкуОтчетов() Экспорт
// Проверяем, является ли сегодня последний день месяца
ТекущаяДатаСеанса = ТекущаяДата();
Если КонецДня(ТекущаяДатаСеанса) <> КонецМесяца(ТекущаяДатаСеанса) Тогда
// Если сегодня не последний день, просто выходим из процедуры
Возврат;
КонецЕсли;
// Далее идет основной код вашего задания
// ...
КонецПроцедуры
Этот метод гарантирует, что даже если МенеджерЗаданий вызовет процедуру по ошибке на следующий день, полезный код не выполнится. Мы рекомендуем использовать именно этот подход для критически важных бизнес-процессов (закрытие месяца, начисление премий, итоговые рассылки).
Проанализируем ситуацию, когда удаление и создание задания не помогает. Это часто происходит из-за того, что в серверном кэше сохраняются параметры старого объекта РегламентноеЗадание. Посмотрим, как правильно произвести «глубокую» очистку:
1C:Enterprise Server Administration.snccntxt и reg_XXXX на сервере (это удалит кэш сеансов и настроек).Если ваша конфигурация построена на базе Библиотеки стандартных подсистем (БСП), мы настоятельно рекомендуем не настраивать расписание через дерево объектов в Конфигураторе. Разберем по шагам правильный путь:
В режиме «1С:Предприятие» перейдите в раздел «Администрирование» — «Обслуживание» — «Регламентные и фоновые задания». Настройка через этот интерфейс задействует программные механизмы БСП, которые более корректно записывают параметры в информационную базу и обновляют внутренние таблицы планировщика, минимизируя риск «зацикливания» задания на ежедневном повторе.
Также стоит проверить настройку «Безопасный режим». В некоторых случаях ограничения прав доступа в безопасном режиме мешают заданию корректно обновить свой статус «Дата следующего запуска», из-за чего оно дублируется.
Подводя итог, можно сказать, что проблема ежедневного срабатывания вместо ежемесячного — это комплексный баг, сочетающий в себе нюансы интерфейса и кэширования платформы. Для достижения 100% стабильности мы рекомендуем:
КонецМесяца() вычислится неверно в момент перехода суток.Используя предложенные методы, мы обеспечим точное соблюдение графика работ и избавимся от лишней нагрузки на систему и почтовые сервисы.