Регламентные задания 1С — это объекты конфигурации, которые сервер запускает по расписанию без участия пользователя: обмены, загрузка курсов, закрытие задач, очистка устаревших данных. Каждое срабатывание выполняется как фоновое задание — отдельный серверный сеанс, который не блокирует работу пользователей. Фоновые задания можно запускать и вручную из кода, когда пользователю нужно запустить длительную операцию и продолжить работу.
В конфигурациях на БСП к этому добавляется подсистема «Регламентные задания»: рабочее место администратора, управление заданиями по функциональным опциям и программный интерфейс, который работает и в обычной базе, и в модели сервиса. Разберу, как делать правильно.
Свойства регламентного задания
| Свойство | Что задаёт | На что обратить внимание |
|---|---|---|
| Имя метода | Экспортная процедура неглобального серверного общего модуля | Модуль должен компилироваться на сервере |
| Ключ | Группировка заданий с одним методом | В пределах ключа одновременно выполняется не больше одного фонового задания |
| Расписание | Когда запускать | Задаётся в конфигураторе и переопределяется в режиме Предприятия |
| Использование | Включено ли задание | Для заданий, зависящих от функциональных опций, по умолчанию выключайте |
| Предопределенное | Создаётся ли задание автоматически в единственном экземпляре | Снимайте, если экземпляров должно быть несколько |
| Количество повторов, интервал повтора | Повтор при аварийном завершении | Не ставьте повторы операциям, которые не идемпотентны |
Два правила, которые чаще всего нарушают:
Задания, зависящие от функциональных опций, не включают в метаданных. Если задание «Получение и отправка почты» нужно только при включённой опции «Использовать почтовый клиент», флажок «Использование» в конфигураторе снимается, а включение задания привязывается к опции. Иначе задание будет запускаться впустую в каждой базе.
Задания, у которых экземпляров много, не делают предопределёнными. Обмен с каждой базой-узлом по своему расписанию, запуск каждой дополнительной обработки по своему расписанию — это множество экземпляров одного метаданного, их создают программно.
Регламентные задания в БСП
В БСП связь с функциональными опциями описывается в процедуре ПриОпределенииНастроекРегламентныхЗаданий общего модуля РегламентныеЗаданияПереопределяемый. Подсистема сама включает и выключает задание, когда меняется опция.
// РегламентныеЗаданияПереопределяемый
Процедура ПриОпределенииНастроекРегламентныхЗаданий(Настройки) Экспорт
Настройка = Настройки.Добавить();
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ЗагрузкаЗаказовСайта;
Настройка.ФункциональнаяОпция = Метаданные.ФункциональныеОпции.ИспользоватьИнтеграциюССайтом;
КонецПроцедурыСостав колонок таблицы настроек (например, признаки работы в модели сервиса) зависит от версии БСП — смотрите описание процедуры в своём модуле.
Метод задания в конфигурации на БСП начинается с вызова ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания. Он проверяет, можно ли сейчас выполнять задание (например, не идёт ли обновление информационной базы), и устанавливает нужные параметры сеанса.
// Обработчик регламентного задания ЗагрузкаЗаказовСайта.
Процедура ЗагрузкаЗаказовСайта() Экспорт
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(
Метаданные.РегламентныеЗадания.ЗагрузкаЗаказовСайта);
Попытка
ИнтеграцияССайтомСервер.ЗагрузитьНовыеЗаказы();
Исключение
ЗаписьЖурналаРегистрации("ИнтеграцияССайтом.ЗагрузкаЗаказов", УровеньЖурналаРегистрации.Ошибка, , ,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение;
КонецПопытки;
КонецПроцедурыПовторный ВызватьИсключение после записи в журнал нужен, чтобы задание завершилось с ошибкой и это было видно в списке заданий, а не «успешно» с ошибкой где-то в журнале.
Изменение расписания из кода
Для изменения свойств заданий используйте модуль РегламентныеЗаданияСервер — он учитывает модель сервиса и права. Прямую работу с менеджером РегламентныеЗадания оставьте для конфигураций без БСП:
// Без БСП: включить предопределённое задание и запускать каждые 15 минут.
Задание = РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания.ЗагрузкаЗаказовСайта);
Расписание = Новый РасписаниеРегламентногоЗадания;
Расписание.ПериодПовтораДней = 1;
Расписание.ПериодПовтораВТечениеДня = 900;
Задание.Расписание = Расписание;
Задание.Использование = Истина;
Задание.Записать();Рабочее место «Регламентные и фоновые задания»
В типовых конфигурациях оно открывается из раздела «Администрирование» — «Обслуживание» — «Регламентные операции». Возможности:
- список заданий с состоянием и датой последнего запуска;
- переход в журнал регистрации с отбором по заданию;
- изменение использования, расписания, ключа и параметров повтора;
- ручной запуск задания;
- список фоновых заданий с результатами и сообщениями об ошибках.
Для сопровождения это первое место, куда смотреть, когда «обмен не идёт». В рамках сопровождения 1С я начинаю с него и с журнала регистрации.
Фоновые задания для длительных операций

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




