Регламентное задание в 1С 8.3: от метода в модуле до расписания
Содержание
Регламентное задание в 1С создают в Конфигураторе: Общие → Регламентные задания → Добавить, указывают экспортную процедуру серверного общего модуля и задают расписание. Если менять конфигурацию нельзя, тот же результат даёт дополнительная обработка с командой «Вызов серверного метода»: её регистрируют в базе и настраивают расписание прямо в пользовательском режиме.
Типичная ситуация: бухгалтер каждое утро вручную выгружает остатки для сайта или загружает курсы, а потом забывает это сделать в пятницу. Такие операции и стоит отдать заданию: оно выполнится ночью, без участия человека, и оставит след в журнале регистрации.
Какой способ создания выбрать
Сначала решите, где будет жить код задания. От этого зависит, кто и как его потом поддерживает.
| Способ | Когда подходит | Что учесть |
|---|---|---|
| Объект «Регламентное задание» в Конфигураторе | Своя или доработанная конфигурация, есть программист | Типовая конфигурация снимается с полной поддержки или нужен перенос в расширение |
| Регламентное задание в расширении конфигурации | Типовая база на поддержке, задачу решает код на сервере | Расширения доступны с платформы 8.3.6; после обновления типовой проверяйте работу |
| Дополнительная обработка с серверной командой | Типовая конфигурация на БСП, нельзя трогать метаданные | Работает только в конфигурациях с подсистемой «Дополнительные отчеты и обработки» |
| Настройка уже существующего задания | Нужное действие уже есть в типовой (курсы валют, загрузка банковских выписок, ЭДО) | Создавать ничего не надо, только включить и задать расписание |
💡 Начните с последней строки. В БП 3.0, ЗУП 3.1 и УТ 11 десятки готовых заданий: обновление курсов валют, обмен с банком, получение документов ЭДО, полнотекстовый поиск. Часто «создать задание» на деле означает включить существующее.
Список готовых заданий в типовых на БСП открывается так: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания.
Перед созданием своего задания подготовьте:
- 🧩 процедуру, которая решает задачу целиком без участия пользователя: без вопросов, предупреждений и открытия форм;
- 👤 служебного пользователя, под которым задание будет работать;
- 🕒 понятное расписание: когда запускать и сколько примерно длится выполнение;
- 💾 копию базы , если правите конфигурацию.
Создание регламентного задания в Конфигураторе: по шагам
Этот путь для тех, у кого открыт доступ к конфигурации. Если база типовая и на поддержке, те же шаги выполняйте в расширении.
Шаг 1. Подготовьте метод в общем модуле
Задание вызывает процедуру общего модуля. Требования к модулю и процедуре:
- Общий модуль с установленным флагом «Сервер». Флаг «Глобальный» не ставьте.
- Процедура объявлена с ключевым словом
Экспорт. - Внутри нет интерактивных действий:
Предупреждение(),Вопрос(), открытие форм на сервере невозможны.
Пример процедуры для конфигурации на БСП:
Процедура ВыгрузкаОстатковДляСайта() Экспорт
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(
Метаданные.РегламентныеЗадания.ВыгрузкаОстатковДляСайта);
ЗаписьЖурналаРегистрации("Выгрузка остатков для сайта",
УровеньЖурналаРегистрации.Информация, , ,
"Выгрузка запущена по расписанию");
// здесь вызов вашей процедуры выгрузки
КонецПроцедуры
Вызов ПриНачалеВыполненияРегламентногоЗадания в начале процедуры — требование БСП. Он проверяет, можно ли сейчас выполнять задание: например, не включена ли блокировка работы с внешними ресурсами. В конфигурации без БСП эту строку уберите.
Шаг 2. Добавьте объект метаданных
- В дереве конфигурации раскройте
Общие → Регламентные задания. - Нажмите «Добавить». Откроется палитра свойств нового объекта.
- Заполните «Имя» и «Синоним». Имя должно совпадать с тем, что вы передаёте в
Метаданные.РегламентныеЗадания. - В поле «Имя метода» нажмите кнопку выбора и укажите процедуру из шага 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";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = "Выгрузка остатков для сайта";
Команда.Идентификатор = "ВыгрузкаОстатков";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Команда.ПоказыватьОповещение = Ложь;
Возврат ПараметрыРегистрации;
КонецФункции
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
Если ИдентификаторКоманды = "ВыгрузкаОстатков" Тогда
ЗаписьЖурналаРегистрации("Выгрузка остатков для сайта",
УровеньЖурналаРегистрации.Информация, , ,
"Команда выполнена по расписанию");
КонецЕсли;
КонецПроцедуры
Тип команды «Вызов серверного метода» здесь ключевой. Только для таких команд в карточке обработки появляется настройка расписания: команды, которые открывают форму, по расписанию не запускаются.
Регистрация и расписание
- Откройте
Администрирование → Печатные формы, отчеты и обработки, включите флажок «Дополнительные отчеты и обработки» и перейдите по одноимённой ссылке. - Нажмите «Добавить из файла» и выберите файл
.epf. Программа покажет предупреждение о безопасности — подтвердите, если обработку писали вы или проверенный разработчик. - В карточке на вкладке команд найдите строку вашей команды и откройте ячейку расписания.
- Задайте расписание, включите флажок использования и запишите карточку.
⚠️ Обработка с отключённым безопасным режимом выполняется с полными правами на сервере. Загружайте только код, который вы прочитали целиком.
Настройка расписания и периодичности
Окно расписания одинаковое в Конфигураторе и в пользовательском режиме. В нём четыре вкладки.
| Вкладка | Что настраивается | Пример |
|---|---|---|
| Общее | Дата начала и окончания, повтор через N дней | Каждый день с 01.11 без даты окончания |
| Дневное | Время начала и окончания, повтор через N секунд, пауза, время завершения | С 08:00 до 20:00 каждые 900 секунд |
| Недельное | Дни недели, повтор через N недель | Понедельник и четверг |
| Месячное | Месяцы, день месяца, день недели в месяце | 1-е число каждого месяца |
Несколько практических правил:
- ⏱ Повтор внутри дня задаётся в секундах. «Каждые 15 минут» — это 900, «каждый час» — 3600.
- 🌙 Тяжёлые операции (пересчёт итогов, выгрузки на тысячи позиций) ставьте на ночь, когда нет пользователей.
- 🔁 Платформа не запускает второй экземпляр того же задания, пока первый не закончил. Если задание идёт 20 минут, а повтор стоит каждые 5 минут, реальных запусков будет меньше.
- 📅 Месячное расписание на 31-е число в коротких месяцах не сработает. Если нужна обработка «за прошедший месяц», надёжнее запускать задание 1-го числа следующего месяца.
Готовая строка расписания видна внизу окна текстом, например «Каждый день; с 2:00:00 один раз в день». Сверяйте её с тем, что задумали.
Под каким пользователем выполнять задание
Задание работает от имени пользователя, указанного в его настройке. В пользовательском режиме БСП поле «Пользователь» есть на форме задания в списке регламентных и фоновых заданий.
Рекомендации:
- Создайте отдельного служебного пользователя, например «Регламентные задания». Так в журнале сразу видно, что запись сделал робот, а не сотрудник.
- Дайте ему ровно те права, которые нужны процедуре. Если задание проводит документы, нужен доступ к этим документам и их регистрам.
- Если в базе включены ограничения доступа на уровне записей, проверьте, что пользователь видит нужные организации и склады. Иначе задание отработает «успешно», но обработает пустую выборку.
- Пароль служебного пользователя не раздавайте сотрудникам.
💡 Если права недостаточны, код упадёт с ошибкой «Недостаточно прав». Это лучший случай: ошибка видна в журнале. Хуже, когда ограничение по записям молча скрывает данные. Проверяйте результат, а не только статус.
Где задания выполняются: файловая и клиент-серверная база
От варианта работы базы зависит, запустится ли задание вообще.
Клиент-серверный вариант. Задания выполняет кластер серверов 1С. В консоли администрирования, в свойствах информационной базы, есть флаг «Блокировка регламентных заданий включена». Если он стоит, ни одно задание не стартует.
Файловый вариант. Отдельного сервера нет. Задания выполняются, только пока база открыта хотя бы у одного пользователя. Ночные запуски в файловой базе срабатывают, если на каком-то компьютере оставлен запущенный сеанс 1С или база опубликована на веб-сервере.
⚠️ В файловой базе не планируйте критичные операции на время, когда все выходят из программы. Для надёжной ночной работы нужна клиент-серверная база .
Контроль выполнения и журнал регистрации
Проверять задание нужно в первые дни после настройки. Вот где смотреть.
- 📋 Список регламентных и фоновых заданий (путь — в первом разделе). В колонках видно состояние, время последнего запуска и признак ошибки. Двойной щелчок по строке открывает подробности и текст последней ошибки.
- 📓 Журнал регистрации (
Администрирование → Обслуживание → Журнал регистрации). Отберите события группы «Фоновое задание»: запуск, успешное завершение, ошибка выполнения. В колонке «Пользователь» будет служебный пользователь из прошлого раздела. - ✍️ Собственные записи через
ЗаписьЖурналаРегистрации, как в примерах кода. Пишите в журнал, что именно сделано: «выгружено 1 240 позиций», а не просто «готово».
Почему задание не запускается и как это исправить
Большинство проблем сводится к нескольким причинам. Ищите по симптому.
Частые вопросы
Можно ли запустить регламентное задание вручную, не дожидаясь расписания?
Чем регламентное задание отличается от фонового?
Сохранятся ли мои настройки расписания после обновления типовой конфигурации?
Можно ли передать параметры в регламентное задание?
Параметры — массив значений, которые попадут в параметры процедуры. Так одна процедура работает для разных организаций.