Регламентное задание в 1С 8.3: от метода в модуле до расписания

· 10 мин

Содержание

Регламентное задание в 1С создают в Конфигураторе: Общие → Регламентные задания → Добавить, указывают экспортную процедуру серверного общего модуля и задают расписание. Если менять конфигурацию нельзя, тот же результат даёт дополнительная обработка с командой «Вызов серверного метода»: её регистрируют в базе и настраивают расписание прямо в пользовательском режиме.

Типичная ситуация: бухгалтер каждое утро вручную выгружает остатки для сайта или загружает курсы, а потом забывает это сделать в пятницу. Такие операции и стоит отдать заданию: оно выполнится ночью, без участия человека, и оставит след в журнале регистрации.

Какой способ создания выбрать

Сначала решите, где будет жить код задания. От этого зависит, кто и как его потом поддерживает.

СпособКогда подходитЧто учесть
Объект «Регламентное задание» в КонфигуратореСвоя или доработанная конфигурация, есть программистТиповая конфигурация снимается с полной поддержки или нужен перенос в расширение
Регламентное задание в расширении конфигурацииТиповая база на поддержке, задачу решает код на сервереРасширения доступны с платформы 8.3.6; после обновления типовой проверяйте работу
Дополнительная обработка с серверной командойТиповая конфигурация на БСП, нельзя трогать метаданныеРаботает только в конфигурациях с подсистемой «Дополнительные отчеты и обработки»
Настройка уже существующего заданияНужное действие уже есть в типовой (курсы валют, загрузка банковских выписок, ЭДО)Создавать ничего не надо, только включить и задать расписание

💡 Начните с последней строки. В БП 3.0, ЗУП 3.1 и УТ 11 десятки готовых заданий: обновление курсов валют, обмен с банком, получение документов ЭДО, полнотекстовый поиск. Часто «создать задание» на деле означает включить существующее.

Список готовых заданий в типовых на БСП открывается так: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания.

Перед созданием своего задания подготовьте:

  • 🧩 процедуру, которая решает задачу целиком без участия пользователя: без вопросов, предупреждений и открытия форм;
  • 👤 служебного пользователя, под которым задание будет работать;
  • 🕒 понятное расписание: когда запускать и сколько примерно длится выполнение;
  • 💾 копию базы , если правите конфигурацию.

Создание регламентного задания в Конфигураторе: по шагам

Этот путь для тех, у кого открыт доступ к конфигурации. Если база типовая и на поддержке, те же шаги выполняйте в расширении.

Шаг 1. Подготовьте метод в общем модуле

Задание вызывает процедуру общего модуля. Требования к модулю и процедуре:

  1. Общий модуль с установленным флагом «Сервер». Флаг «Глобальный» не ставьте.
  2. Процедура объявлена с ключевым словом Экспорт.
  3. Внутри нет интерактивных действий: Предупреждение(), Вопрос(), открытие форм на сервере невозможны.

Пример процедуры для конфигурации на БСП:

Процедура ВыгрузкаОстатковДляСайта() Экспорт

	ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(
		Метаданные.РегламентныеЗадания.ВыгрузкаОстатковДляСайта);

	ЗаписьЖурналаРегистрации("Выгрузка остатков для сайта",
		УровеньЖурналаРегистрации.Информация, , ,
		"Выгрузка запущена по расписанию");

	// здесь вызов вашей процедуры выгрузки

КонецПроцедуры

Вызов ПриНачалеВыполненияРегламентногоЗадания в начале процедуры — требование БСП. Он проверяет, можно ли сейчас выполнять задание: например, не включена ли блокировка работы с внешними ресурсами. В конфигурации без БСП эту строку уберите.

Шаг 2. Добавьте объект метаданных

  1. В дереве конфигурации раскройте Общие → Регламентные задания.
  2. Нажмите «Добавить». Откроется палитра свойств нового объекта.
  3. Заполните «Имя» и «Синоним». Имя должно совпадать с тем, что вы передаёте в Метаданные.РегламентныеЗадания.
  4. В поле «Имя метода» нажмите кнопку выбора и укажите процедуру из шага 1: ИмяМодуля.ВыгрузкаОстатковДляСайта.

Шаг 3. Решите, предопределённое задание или нет

Здесь главное различие, которое путает новичков.

  • ✅ Предопределённое — флаг «Предопределенное» включён. Экземпляр задания создаётся платформой автоматически, один на базу. Расписание и флаг «Использование» можно задать прямо в свойствах объекта.
  • ⚙️ Непредопределённое — флаг выключен. Объект метаданных есть, но экземпляров нет. Их создают кодом, и их может быть несколько с разными параметрами.

Для «одно действие по расписанию» обычно хватает предопределённого. Непредопределённое нужно, когда одно и то же действие запускается для разных организаций, складов или файлов.

Создание экземпляра непредопределённого задания кодом:

Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(
	Метаданные.РегламентныеЗадания.ВыгрузкаОстатковДляСайта);

Расписание = Новый РасписаниеРегламентногоЗадания;
Расписание.ПериодПовтораДней = 1;
Расписание.ВремяНачала = Дата(1, 1, 1, 2, 0, 0);

Задание.Расписание = Расписание;
Задание.Наименование = "Ночная выгрузка остатков";
Задание.Использование = Истина;
Задание.Записать();

Задание запустится каждый день в 02:00.

Шаг 4. Заполните остальные свойства

  • Использование — включает задание. Без этого флага расписание не работает .
  • Ключ — нужен, если экземпляров несколько: по ключу их различают в коде.
  • Количество повторов при аварийном завершении и Интервал повтора — сколько раз и через сколько секунд платформа перезапустит задание после ошибки.

Шаг 5. Обновите конфигурацию базы данных

Сохраните конфигурацию и выполните Конфигурация → Обновить конфигурацию базы данных (F7). Если меняется структура данных, для обновления нужен монопольный доступ: предупредите пользователей заранее. Для расширения — сохраните его и обновите отдельно.

Создание задания без изменения конфигурации

В типовых БП 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на БСП свой код можно поставить на расписание через внешнюю обработку . Конфигурация при этом остаётся на полной поддержке.

Модуль объекта обработки

Обработке нужны две вещи: функция регистрации и процедура выполнения команды.

Функция СведенияОВнешнейОбработке() Экспорт

	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Версия = "1.0";
	ПараметрыРегистрации.БезопасныйРежим = Ложь;

	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = "Выгрузка остатков для сайта";
	Команда.Идентификатор = "ВыгрузкаОстатков";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	Команда.ПоказыватьОповещение = Ложь;

	Возврат ПараметрыРегистрации;

КонецФункции

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт

	Если ИдентификаторКоманды = "ВыгрузкаОстатков" Тогда
		ЗаписьЖурналаРегистрации("Выгрузка остатков для сайта",
			УровеньЖурналаРегистрации.Информация, , ,
			"Команда выполнена по расписанию");
	КонецЕсли;

КонецПроцедуры

Тип команды «Вызов серверного метода» здесь ключевой. Только для таких команд в карточке обработки появляется настройка расписания: команды, которые открывают форму, по расписанию не запускаются.

Регистрация и расписание

  1. Откройте Администрирование → Печатные формы, отчеты и обработки, включите флажок «Дополнительные отчеты и обработки» и перейдите по одноимённой ссылке.
  2. Нажмите «Добавить из файла» и выберите файл .epf. Программа покажет предупреждение о безопасности — подтвердите, если обработку писали вы или проверенный разработчик.
  3. В карточке на вкладке команд найдите строку вашей команды и откройте ячейку расписания.
  4. Задайте расписание, включите флажок использования и запишите карточку.

⚠️ Обработка с отключённым безопасным режимом выполняется с полными правами на сервере. Загружайте только код, который вы прочитали целиком.

Настройка расписания и периодичности

Окно расписания одинаковое в Конфигураторе и в пользовательском режиме. В нём четыре вкладки.

ВкладкаЧто настраиваетсяПример
ОбщееДата начала и окончания, повтор через N днейКаждый день с 01.11 без даты окончания
ДневноеВремя начала и окончания, повтор через N секунд, пауза, время завершенияС 08:00 до 20:00 каждые 900 секунд
НедельноеДни недели, повтор через N недельПонедельник и четверг
МесячноеМесяцы, день месяца, день недели в месяце1-е число каждого месяца

Несколько практических правил:

  • ⏱ Повтор внутри дня задаётся в секундах. «Каждые 15 минут» — это 900, «каждый час» — 3600.
  • 🌙 Тяжёлые операции (пересчёт итогов, выгрузки на тысячи позиций) ставьте на ночь, когда нет пользователей.
  • 🔁 Платформа не запускает второй экземпляр того же задания, пока первый не закончил. Если задание идёт 20 минут, а повтор стоит каждые 5 минут, реальных запусков будет меньше.
  • 📅 Месячное расписание на 31-е число в коротких месяцах не сработает. Если нужна обработка «за прошедший месяц», надёжнее запускать задание 1-го числа следующего месяца.

Готовая строка расписания видна внизу окна текстом, например «Каждый день; с 2:00:00 один раз в день». Сверяйте её с тем, что задумали.

Под каким пользователем выполнять задание

Задание работает от имени пользователя, указанного в его настройке. В пользовательском режиме БСП поле «Пользователь» есть на форме задания в списке регламентных и фоновых заданий.

Рекомендации:

  1. Создайте отдельного служебного пользователя, например «Регламентные задания». Так в журнале сразу видно, что запись сделал робот, а не сотрудник.
  2. Дайте ему ровно те права, которые нужны процедуре. Если задание проводит документы, нужен доступ к этим документам и их регистрам.
  3. Если в базе включены ограничения доступа на уровне записей, проверьте, что пользователь видит нужные организации и склады. Иначе задание отработает «успешно», но обработает пустую выборку.
  4. Пароль служебного пользователя не раздавайте сотрудникам.

💡 Если права недостаточны, код упадёт с ошибкой «Недостаточно прав». Это лучший случай: ошибка видна в журнале. Хуже, когда ограничение по записям молча скрывает данные. Проверяйте результат, а не только статус.

Где задания выполняются: файловая и клиент-серверная база

От варианта работы базы зависит, запустится ли задание вообще.

Клиент-серверный вариант. Задания выполняет кластер серверов 1С. В консоли администрирования, в свойствах информационной базы, есть флаг «Блокировка регламентных заданий включена». Если он стоит, ни одно задание не стартует.

Файловый вариант. Отдельного сервера нет. Задания выполняются, только пока база открыта хотя бы у одного пользователя. Ночные запуски в файловой базе срабатывают, если на каком-то компьютере оставлен запущенный сеанс 1С или база опубликована на веб-сервере.

⚠️ В файловой базе не планируйте критичные операции на время, когда все выходят из программы. Для надёжной ночной работы нужна клиент-серверная база .

Контроль выполнения и журнал регистрации

Проверять задание нужно в первые дни после настройки. Вот где смотреть.

  • 📋 Список регламентных и фоновых заданий (путь — в первом разделе). В колонках видно состояние, время последнего запуска и признак ошибки. Двойной щелчок по строке открывает подробности и текст последней ошибки.
  • 📓 Журнал регистрации (Администрирование → Обслуживание → Журнал регистрации). Отберите события группы «Фоновое задание»: запуск, успешное завершение, ошибка выполнения. В колонке «Пользователь» будет служебный пользователь из прошлого раздела.
  • ✍️ Собственные записи через ЗаписьЖурналаРегистрации, как в примерах кода. Пишите в журнал, что именно сделано: «выгружено 1 240 позиций», а не просто «готово».
Задание работает правильно, если
Выполнено: 0 / 5

Почему задание не запускается и как это исправить

Большинство проблем сводится к нескольким причинам. Ищите по симптому.

Диагностика: выберите симптом

Частые вопросы

Можно ли запустить регламентное задание вручную, не дожидаясь расписания?
Да. В списке регламентных и фоновых заданий выделите задание и нажмите кнопку немедленного выполнения в командной панели. Оно запустится как фоновое задание.
Чем регламентное задание отличается от фонового?
Регламентное — это настройка: что и по какому расписанию выполнять. Фоновое — сам запуск. Каждое срабатывание регламентного задания создаёт фоновое.
Сохранятся ли мои настройки расписания после обновления типовой конфигурации?
Расписание хранится в данных базы, а не в конфигурации, поэтому обычное обновление его не сбрасывает. После крупного обновления всё равно проверьте список заданий: новый релиз может добавить или отключить предопределённые задания.
Можно ли передать параметры в регламентное задание?
Да, для непредопределённых заданий. У экземпляра есть свойство Параметры — массив значений, которые попадут в параметры процедуры. Так одна процедура работает для разных организаций.
Почему задание с повтором каждые 60 секунд нагружает сервер?
Каждый запуск — новый фоновый сеанс. Частые запуски тяжёлой процедуры занимают рабочие процессы. Ставьте интервал не меньше реального времени выполнения с запасом.