Регламентные задания 1С 8.3: расписание, свои задания в конфигураторе и разбор зависаний
Содержание
Регламентное задание в 1С — это процедура на сервере, которую платформа запускает сама по расписанию: загрузить курсы валют, получить письма, обменяться данными, обновить полнотекстовый индекс. Настроить его в типовой конфигурации можно без конфигуратора: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. Там включают и выключают задания, меняют расписание и смотрят, чем закончился последний запуск.
Способов работы три, и выбирают их по задаче. Включить или перенастроить готовое задание — в пользовательском режиме, это пять минут. Добавить своё — в конфигураторе или расширении, нужен программист. Разобраться, почему задание не работает , — журнал регистрации и консоль кластера. Механизм общий для платформы 8.3, поэтому всё ниже одинаково для Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других конфигураций на БСП.
Как устроено регламентное задание и чем оно отличается от фонового
Регламентное задание — объект метаданных. В конфигураторе он лежит в ветке Общие → Регламентные задания. У объекта есть несколько главных свойств:
- 🧩 Имя метода — экспортная процедура общего модуля, которая выполняется на сервере;
- ✅ Использование — включено задание или нет;
- 📅 Расписание — когда и как часто запускать;
- 🔁 Количество повторных попыток и интервал — что делать, если запуск завершился аварийно;
- 📌 Предопределённое — задание существует в базе всегда, его нельзя удалить из списка.
Фоновое задание — это уже сам процесс выполнения. Его запускает код через ФоновыеЗадания.Выполнить() или платформа по расписанию регламентного. Проще говоря, регламентное задание — «будильник», а фоновое — то, что делается, когда он прозвенел.
| Что | Регламентное задание | Фоновое задание |
|---|---|---|
| Где описано | Объект метаданных + запись в базе | Создаётся в момент запуска |
| Кто запускает | Планировщик платформы по расписанию | Код программы или регламентное задание |
| Живёт | Постоянно, пока есть в конфигурации | До окончания выполнения |
| Видно в консоли кластера | Нет | Да, как сеанс «Фоновое задание» |
В клиент-серверной базе задания выполняют рабочие процессы кластера, даже если в базе нет ни одного пользователя. В файловой базе своего сервера нет: задания выполняет одно из запущенных клиентских приложений. Закрыли все сеансы — расписание стоит. Это частая причина жалоб «вечером курсы загрузились, а ночью обмен не прошёл».
Виды регламентных заданий в типовых конфигурациях
На практике задания делят на три группы. От группы зависит, где их настраивать.
- Предопределённые. Описаны в конфигурации и есть в каждой базе: загрузка курсов валют, обновление классификатора банков, обновление агрегатов, удаление устаревших данных журнала. Их можно включить, выключить и перенастроить, но не удалить.
- Динамические (непредопределённые). Создаются программно по шаблону из метаданных. Так работают, например, сценарии обмена данными и учётные записи почты: на каждый сценарий или ящик — своя запись со своим расписанием.
- Из дополнительных обработок. В конфигурациях на БСП подключённую внешнюю обработку
можно запускать по расписанию. Расписание задают в карточке обработки:
Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки, у команды обработки включают флажок запуска по расписанию.
Третий вариант часто упускают. Если нужно раз в час выгружать остатки на сайт, а снимать конфигурацию с поддержки не хочется — оформите выгрузку как дополнительную обработку и поставьте её команду на расписание. Конфигурация остаётся типовой.
По назначению типичные задания выглядят так:
| Группа | Примеры | Что будет, если выключить |
|---|---|---|
| Обмен и интеграции | Синхронизация данных, обмен с ЭДО, получение писем | Данные перестанут приходить автоматически |
| Классификаторы | Курсы валют, банки, адресный классификатор | Справочники устареют |
| Обслуживание базы | Обновление и слияние индекса полнотекстового поиска, итоги, агрегаты | Медленнее поиск и отчёты |
| Очистка | Удаление устаревших версий объектов, временных файлов | База растёт быстрее |
Включаем и настраиваем расписание в пользовательском режиме
Пользователю для этого нужны полные права. Порядок одинаков для БП 3.0, ЗУП 3.1 и УТ 11.
- Откройте
Администрирование → Обслуживание. - Раскройте группу Регламентные операции и перейдите по ссылке Регламентные и фоновые задания.
- На вкладке регламентных заданий найдите нужное в списке. Колонки показывают, включено ли оно, когда запускалось и с каким результатом.
- Откройте задание двойным щелчком. Поставьте флажок Включено.
- Перейдите по ссылке расписания и задайте период.
- Укажите пользователя, от имени которого выполнять задание, если поле есть в форме.
- Сохраните и закройте.
Чтобы проверить настройку сразу, не дожидаясь расписания, выделите задание и выполните его вручную командой в панели списка. Результат появится в колонке состояния и на вкладке фоновых заданий.
Как читать форму расписания
Расписание задаётся на нескольких вкладках:
- 📆 Общие — дата начала и окончания, повтор каждые N дней;
- 🗓 Недельное — дни недели, в которые задание работает;
- 📅 Месячное — месяцы и числа;
- ⏰ Дневное — время начала и окончания в течение суток, повтор каждые N секунд, пауза после завершения.
Пример для обмена с сайтом: каждый день, с 08:00 до 20:00, повторять каждые 900 секунд. Получится 48 запусков за смену: 12 часов × 4 запуска в час.
Поле «повторять через» в дневном расписании задаётся в секундах, а не в минутах. Значение 60 означает запуск каждую минуту — для тяжёлого обмена это слишком часто.
Создаём своё регламентное задание в конфигураторе
Свои задания лучше делать в расширении: при обновлении типовой конфигурации они не потеряются, а конфигурация останется на поддержке.
- Создайте в расширении общий модуль с флажком Сервер. Флажок Вызов сервера для задания не нужен.
- Напишите в нём экспортную процедуру без параметров, например
ВыгрузкаОстатковНаСайт(). - В ветке
Общие → Регламентные заданиядобавьте новый объект. - В свойстве Имя метода выберите процедуру из шага 2.
- Отметьте Предопределённое и Использование, если задание должно работать сразу.
- Задайте расписание и количество повторных попыток.
- Обновите конфигурацию базы данных.
Процедура задания в конфигурации на БСП начинается с вызова служебного метода — он проверяет, можно ли сейчас выполнять задание, и записывает это в журнал:
Процедура ВыгрузкаОстатковНаСайт() Экспорт
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(
Метаданные.РегламентныеЗадания.ВыгрузкаОстатковНаСайт);
// Здесь сама выгрузка
КонецПроцедуры
Если нужно много однотипных заданий — по одному на склад или на ящик, — делайте объект непредопределённым и создавайте записи кодом:
Процедура СоздатьЗаданиеВыгрузки(Наименование) Экспорт
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(
Метаданные.РегламентныеЗадания.ВыгрузкаОстатковНаСайт);
Задание.Наименование = Наименование;
Задание.Использование = Истина;
Расписание = Новый РасписаниеРегламентногоЗадания;
Расписание.ПериодПовтораДней = 1;
Расписание.ПериодПовтораВТечениеДня = 3600; // раз в час, в секундах
Задание.Расписание = Расписание;
Задание.Записать();
КонецПроцедуры
Предопределённое задание кодом не создают, его находят: РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания.ВыгрузкаОстатковНаСайт).
Почему регламентное задание не выполняется или зависает
Сначала посмотрите на сам список заданий: дату последнего запуска и состояние. Потом — в журнал регистрации: Администрирование → Обслуживание → Журнал регистрации, отбор по приложению «Фоновое задание». Текст ошибки там обычно сразу называет причину.
Что делать с зависшим заданием
Зависшее фоновое задание можно отменить на вкладке фоновых заданий в той же форме. Если не помогает — завершите его сеанс в консоли администрирования серверов: в списке сеансов базы ищите приложение «Фоновое задание».
Принудительное завершение обрывает транзакцию задания. Обмен или загрузка, прерванные посередине, откатятся, и их придётся запустить заново. Не завершайте рабочий процесс целиком — вместе с ним оборвутся сеансы всех пользователей на этом процессе.
Чтобы зависание не повторялось, поищите причину в журнале регистрации за время перед остановкой. Типичные кандидаты — недоступный сервер обмена, долгий запрос без отбора и пересечение с другим тяжёлым заданием.
Файловая база: как гарантировать выполнение
Для файловой базы на отдельном компьютере держат открытым один сеанс под служебным пользователем. Параметр командной строки /AllowExecuteScheduledJobs управляет тем, будет ли конкретный клиент выполнять задания: с ключом -Off — не будет, с -Force — будет. Так можно назначить «исполнителем» один служебный клиент и разгрузить рабочие места бухгалтеров.
Нагрузка на сервер: как развести задания по времени
Десяток заданий, стартующих в одну минуту, тормозит базу заметнее, чем любой отчёт. Порядок действий простой.
- Отключите лишнее. Не ведёте валютный учёт — курсы раз в сутки не нужны. Не используете ЭДО — выключите его задания. Каждое выключенное задание — минус фоновый сеанс.
- Разнесите тяжёлые задания. Обновление индекса полнотекстового поиска, слияние индекса, пересчёт итогов и удаление устаревших данных ставьте на ночь и с разницей во времени: например, 01:00, 02:00, 03:00.
- Уберите частые повторы. Обмен раз в минуту почти всегда можно заменить обменом раз в 10–15 минут.
- Ограничьте время работы. В дневном расписании задайте время окончания, чтобы задание не стартовало в часы закрытия месяца.
- Вынесите задания на отдельный сервер. В кластере из нескольких рабочих серверов в свойствах рабочего сервера задают требования назначения функциональности. Для объекта «Фоновое задание» можно указать, что выполнять его нужно на выделенном сервере, — тогда обмены не мешают пользователям.
Повторные попытки полезны для обменов по сети, где сбой бывает случайным. Для задания с ошибкой в данных они только удваивают нагрузку: задание будет падать снова и снова.
Права и пользователь, от имени которого работает задание
Регламентное задание выполняется на сервере от имени пользователя, указанного в его настройках. Если в базе есть пользователи, а поле пустое, поведение зависит от конфигурации — надёжнее указать пользователя явно.
Рекомендации практика:
- 👤 Заведите служебного пользователя, например «Регламентные задания». Не привязывайте задания к сотруднику — уволится, учётную запись отключат, обмены встанут.
- 🔐 Дайте ему только нужные роли. Для обмена — права на обмен и чтение нужных справочников, а не «Полные права» по умолчанию.
- 🚫 Запретите интерактивный вход. Служебному пользователю не нужен вход в программу, только выполнение заданий.
- 📝 Проверяйте журнал. Все записи задания в журнале регистрации идут от этого пользователя, по нему удобно делать отбор.
Настраивать расписание и включать задания в типовых конфигурациях может только администратор с полными правами. Обычный пользователь видит результат — загруженные курсы, полученные письма, — но не саму форму управления.
Блокировку регламентных заданий в консоли кластера ставит администратор сервера. Если её сняли «чтобы заработало», а база оказалась тестовой копией, из неё уйдут реальные письма и обмены. Перед снятием блокировки уточните, какая это база.