← Назад к вопросам
Как работают регламентные задания и чем они отличаются от фоновых задач?
2.2 Middle🔥 201 комментариев
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Общее определение
Регламентные задания — это встроенный механизм 1С для выполнения кода по расписанию (по времени). Фоновые задачи — это механизм для асинхронного запуска операций (без ожидания результата).
Регламентные задания
Назначение
Выполнение операций по расписанию:
- Закрытие месяца в конце месяца
- Синхронизация с внешней системой каждый час
- Очистка архивных данных ночью
- Расчёт аналитических показателей раз в день
Структура метаданных
// Регламентное задание определяется в конфигурации
// Параметры:
// - Имя: "ЗакрытиеМесяца"
// - Процедура: "МодульПриложение.ЗакрытиеМесяцаПроцедура"
// - Расписание: "0 0 * * 28 *" (в 00:00 28-го числа)
// - Использовать внешнее соединение: Нет/Да
// - Безопасный режим: Да/Нет
Пример регламентного задания
Процедура ЗакрытиеМесяцаПроцедура() Экспорт
Попытка
ТекДата = ТекущаяДата();
ДатаЗакрытия = КонецДня(ДатаДобавитьМесяцев(ТекДата, -1));
// Логика закрытия месяца
ЛогикаЗакрытияМесяца(ДатаЗакрытия);
ЗаписатьВЖурнал("РегламентныеЗадания", "ЗакрытиеМесяца выполнено");
Исключение
ЗаписатьВЖурнал("РегламентныеЗадания", ИнформацияОбОшибке().Описание);
КонецПопытки;
КонецПроцедуры
Расписание (CRON)
┌───────── Минута (0-59)
│ ┌───────── Час (0-23)
│ │ ┌───────── День месяца (1-31)
│ │ │ ┌───────── Месяц (1-12)
│ │ │ │ ┌───────── День недели (0-6)
│ │ │ │ │
0 2 * * * – Каждый день в 02:00
0 */6 * * * – Каждые 6 часов
0 0 1 * * – 1-го числа в 00:00
30 10 * * 1-5 – Понедельник-пятница в 10:30
Фоновые задачи
Назначение
Выполнение операций асинхронно:
- Отправка писем в фоне
- Генерация больших отчётов
- Синхронизация данных
- Обработка очереди задач
Создание и выполнение
// 1. Создаём параметры
ПараметрыЗадачи = Новый Структура;
ПараметрыЗадачи.Вставить("Контрагент", КонтрагентСсылка);
ПараметрыЗадачи.Вставить("Счёт", СчётОсновной);
// 2. Ставим задачу в очередь (не ждём)
ИдентификаторЗадачи = ФоновыеЗадачи.Выполнить(
"МодульОбработки.ОтправитьСчётПочтой",
ПараметрыЗадачи,
"Отправка счёта №" + Номер
);
// 3. Сразу возвращаемся пользователю
Сообщить("Отправка счёта запланирована");
Процедура фоновой задачи
Процедура ОтправитьСчётПочтой(Контрагент, Счёт) Экспорт
// Вызывается в отдельном сеансе асинхронно
СчётОбъект = Счёт.ПолучитьОбъект();
ПотребительФиз = Контрагент.ЭлектроннаяПочта;
// Генерируем PDF
Отчёт = Отчёты.СчётФактура.ПолучитьМакет("Макет1");
ДанныеОтчёта = Отчёт.Выполнить(СчётОбъект);
// Отправляем почту
СообщениеПочты = Новый ИнтернетПочтаСообщение;
СообщениеПочты.Тема = "Счёт на оплату";
СообщениеПочты.Получатели.Добавить(ПотребительФиз);
КонецПроцедуры
Отслеживание результата
// Проверить статус
ЗадачаСведения = ФоновыеЗадачи.ПолучитьСведения(ИдентификаторЗадачи);
Если ЗадачаСведения.Состояние = СостояниеФоновойЗадачи.Выполнена Тогда
Результат = ЗадачаСведения.ПолучитьРезультат();
ИначеЕсли ЗадачаСведения.Состояние = СостояниеФоновойЗадачи.Ошибка Тогда
Сообщить("Ошибка: " + ЗадачаСведения.ОписаниеОшибки);
КонецЕсли;
Сравнительная таблица
| Параметр | Регламентные | Фоновые |
|---|---|---|
| Запуск | По расписанию | Немедленно, асинхронно |
| Блокировка | Нет | Нет |
| Результат | Логируется | Можно получить |
| Периодичность | Повторяющиеся | Одноразовые |
| Агент 1С | Требуется | Не требуется |
| Пример | Еженочное закрытие | Отправка письма |
Когда что использовать?
Регламентные задания:
- Операции по расписанию
- Перестройка БД
- Гарантия выполнения
Фоновые задачи:
- Быстрые операции
- Асинхронная обработка
- Нужен результат
- Очередь обработки
Практический пример: комбинация
// Регламентное задание (раз в день)
Процедура ЕжеДневнаяОбработка() Экспорт
// Находим недосланные счёта
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Документ.Счёт ГДЕ Статус = &Чернв");
Результат = Запрос.Выполнить().Выгрузить();
// Для каждого счёта запускаем фоновую задачу
Для Каждого Строка Из Результат Цикл
Параметры = Новый Структура("Счёт", Строка.Ссылка);
ФоновыеЗадачи.Выполнить(
"МодульОбработки.ОтправитьСчётАсинхронно",
Параметры
);
КонецЦикла;
КонецПроцедуры
Правильное использование обоих механизмов обеспечивает эффективное выполнение длительных операций без блокировки интерфейса.
Похожие вопросы
- Почему нельзя использовать запросы в цикле?
- Для каких случаев обращение через точку опасно?
- Какие задачи администрирования СУБД важны для 1С-разработчика?
- В чем разница между HTTP и Web-сервисами?
- Имеет ли значение порядок измерений в регистрах 1С?
- Что такое сеанс в 1С и как он используется?
- Когда появляется виртуальная таблица субконто для регистра бухгалтерии?
- Можно ли передавать между запросами временную таблицу?
- Какие универсальные коллекции нельзя передавать между клиентом и сервером?
- Для чего нужна закладка "Индексированные"?
- Что такое определяемые типы в 1С?
- В чём разница между директивами &НаСервере и &НаСервереБезКонтекста?
- Зачем дорабатывать проведение документа через подписку?
- Для чего нужна конструкция РАЗРЕШЕННЫЕ?
- Опиши принцип работы со сторонними API
- Какие знаешь типы блокировок бд?
- Какие наборы данных можно использовать в СКД?
- Сколько таблиц используется для хранения констант?
- Почему возникает ошибка «В данной транзакции уже происходили ошибки»?
- Что такое XDTO в 1С и зачем он нужен?