Регламентное задание в 1С 8.3: включаем готовое, пишем своё и ставим расписание

· 10 мин

Содержание

Готовую регламентную операцию в 1С 8.3 включают без программиста: Администрирование → Обслуживание, группа «Регламентные операции», ссылка Регламентные и фоновые задания. Откройте нужное задание, поставьте флажок включения и задайте расписание. Новое задание, которого нет в типовой, создают только в конфигураторе: объект метаданных плюс экспортная процедура в серверном общем модуле.

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

Регламентные операции и регламентные задания: о чём речь

Регламентное задание — это процедура, которую платформа 1С запускает сама, по расписанию, без участия пользователя. Каждое задание описано в конфигурации отдельным объектом метаданных в ветке Общие → Регламентные задания.

Типичные задания в типовых конфигурациях:

  • 💱 загрузка курсов валют;
  • 🏦 обновление классификатора банков;
  • 🔄 синхронизация данных и обмены по расписанию;
  • 🔍 обновление индекса полнотекстового поиска ;
  • 📨 получение и отправка почты, документов ЭДО;
  • 🧹 удаление устаревших данных, очистка журнала регистрации.

В Бухгалтерии словом «регламентные операции» называют ещё и операции закрытия месяца: начисление амортизации, переоценку валюты, закрытие счетов затрат. Это обычные документы, их проводят в обработке «Закрытие месяца». К расписанию и фоновому выполнению они отношения не имеют.

У задания есть два вида экземпляров:

ВидСколько бываетКто создаётПример
Предопределённоеровно одно на объект метаданныхплатформа при обновлении базызагрузка курсов валют
Непредопределённоесколько угоднопрограммный кодотдельное задание на каждую учётную запись почты

Предопределённое задание удалить нельзя, только выключить. Непредопределённые создаёт и удаляет сама конфигурация, когда вы, например, добавляете новый узел обмена.

Что нужно проверить до настройки

Перед тем как трогать задания, выясните три вещи.

1. Права. Список регламентных заданий в пользовательском режиме доступен с полными правами или с ролью администратора системы. Рядовой бухгалтер ссылку в разделе «Обслуживание» обычно не видит. Чтобы создать новый объект метаданных, нужен доступ к конфигуратору и снятая с поддержки (или открытая для изменения) конфигурация.

2. Вариант работы базы. Это главное, что определяет, будут ли задания вообще выполняться.

ВариантКто запускает заданияЧто нужно
Клиент-серверныйкластер серверов 1С, сам по себеснят флажок «Блокировка регламентных заданий включена» в свойствах базы в консоли кластера
Файловыйодин из открытых клиентских сеансовдолжен быть запущен хотя бы один сеанс 1С с этой базой

В файловой базе ночью, когда все вышли из программы, ничего не выполнится. Для надёжного запуска держат отдельный сеанс на компьютере, который не выключают. Сеансу можно явно разрешить выполнение заданий параметром запуска /AllowExecuteScheduledJobs -Force.

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

Как включить регламентную операцию в пользовательском режиме

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

Шаг 1. Откройте список заданий

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

Шаг 2. Найдите задание

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

Шаг 3. Включите и настройте

Откройте задание двойным щелчком. В карточке:

  1. Поставьте флажок включения.
  2. Укажите пользователя, от имени которого задание будет работать.
  3. Нажмите ссылку с расписанием и задайте периодичность (подробно — в следующем разделе).
  4. Нажмите Записать и закрыть.

Шаг 4. Проверьте запуск вручную

Выделите задание в списке и нажмите Выполнить сейчас. На закладке фоновых заданий появится строка со статусом. Если задание завершилось с ошибкой, текст ошибки виден в карточке фонового задания и в журнале регистрации (Администрирование → Обслуживание → Журнал регистрации, отбор по событиям регламентных заданий).

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

Как создать новое регламентное задание в конфигураторе

Свой автоматический процесс, например ночную выгрузку остатков в файл для сайта, делают в три этапа.

Этап 1. Процедура в общем модуле

Создайте общий модуль (или используйте существующий) с флажком Сервер. Процедура должна быть экспортной:

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

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

    // Основная логика: запрос к регистру остатков и запись файла
    // ...

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

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

Этап 2. Объект метаданных

В дереве конфигурации откройте Общие → Регламентные задания и добавьте новый объект. Основные свойства:

  • Имя метода — выберите процедуру из этапа 1 (ИмяМодуля.ВыгрузитьОстаткиДляСайта).
  • Предопределённое — включите, если нужен один экземпляр на базу.
  • Использование — включено ли задание сразу после обновления базы.
  • Ключ — строка, которая различает экземпляры одного задания.
  • Количество повторных попыток при аварийном завершении и Интервал повторных попыток — сколько раз и через сколько секунд перезапускать задание после ошибки.
  • Расписание — можно задать прямо здесь, его потом поменяют в пользовательском режиме.

Этап 3. Обновление базы и проверка

Выполните Конфигурация → Обновить конфигурацию базы данных. Новое предопределённое задание появится в списке Регламентные и фоновые задания. Включите его, запустите кнопкой Выполнить сейчас и убедитесь, что оно завершается без ошибок.

Если конфигурация на поддержке и снимать её не хочется, сначала проверьте, нельзя ли решить задачу штатными средствами: обменом по расписанию, загрузкой по расписанию из настроек подсистемы. Изменение типовой конфигурации усложняет каждое следующее обновление.

Расписание регламентного задания: как задать время и частоту

Расписание задают в стандартном окне платформы. В нём четыре закладки.

ЗакладкаЧто настраивается
Общеедата начала и окончания действия расписания, повтор раз в N дней
Дневноевремя начала и окончания, повтор в течение дня каждые N секунд, пауза между запусками
Недельноев какие дни недели выполнять, повтор раз в N недель
Месячноемесяцы, конкретное число месяца или день недели в месяце

Закладки работают вместе: задание запустится, только если момент подходит под все условия сразу.

Примеры настроек

ЗадачаКак настроить
Курсы валют каждое утро«Общее»: повтор каждый 1 день; «Дневное»: время начала 07:00
Обмен с сайтом в рабочее время«Дневное»: начало 08:00, окончание 20:00, повтор каждые 900 секунд; «Недельное»: пн–пт
Очистка устаревших данных«Недельное»: только воскресенье; «Дневное»: начало 03:00
Сверка в конце месяца«Месячное»: число 28, все месяцы; «Дневное»: начало 22:00

900 секунд — это 15 минут. Значение «повторять через» задаётся именно в секундах, частая ошибка — ввести 15 и получить запуск каждые 15 секунд.

Не ставьте тяжёлые задания чаще, чем они успевают отработать. Платформа не запустит новый экземпляр, пока не завершился предыдущий, поэтому слишком частое расписание не ускорит работу, а лишь создаст постоянную нагрузку на сервер.

Ночные задания разносите по времени: резервное копирование , пересчёт итогов и обмены в одну минуту мешают друг другу и дольше держат блокировки.

Фоновое или регламентное задание: в чём разница

Оба вида выполняются на сервере, без формы и без участия пользователя. Разница в том, кто и когда их запускает.

ПризнакРегламентное заданиеФоновое задание
Описано в метаданныхда, отдельным объектомнет
Кто запускаетплатформа по расписаниюкод конфигурации в нужный момент
Повторяетсяда, по расписаниюодин раз
Как создаётся в кодеРегламентныеЗадания.СоздатьРегламентноеЗадание()ФоновыеЗадания.Выполнить()
Типичный примерночная загрузка курсовдолгое формирование отчёта, чтобы не «замораживать» форму

Каждый запуск регламентного задания на деле выполняется как фоновое задание. Поэтому на закладке фоновых заданий видны и ручные запуски, и плановые.

Как выбрать:

  • 📅 нужно «каждый день в 7:00» или «каждые 10 минут» — регламентное;
  • 🖱 нужно «сейчас, после нажатия кнопки», а операция долгая — фоновое;
  • ⚡ нужно «сразу после проведения документа» — фоновое или очередь (см. следующий раздел).

Запуск по условию, событию или извне

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

Очередь плюс частое задание

Документ при записи кладёт ссылку на себя в регистр сведений , например ОчередьОтправкиНаСайт. Регламентное задание раз в минуту читает регистр, обрабатывает записи и удаляет их.

Почему не запустить фоновое задание прямо из обработки проведения: проведение идёт в транзакции. Фоновое задание стартует в отдельном сеансе раньше, чем транзакция зафиксируется, и может прочитать старые данные или не найти документ вовсе. Если транзакция откатится, задание отправит на сайт то, чего в базе нет. Очередь от этого защищает.

Свой экземпляр задания на каждый объект

Когда одно и то же действие нужно выполнять с разными параметрами (несколько складов, несколько почтовых ящиков), создают непредопределённые экземпляры. Метаданные при этом одни:

УстановитьПривилегированныйРежим(Истина);

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

Параметры = Новый Массив;
Параметры.Добавить("Север");
Задание.Параметры = Параметры;

Расписание = Новый РасписаниеРегламентногоЗадания;
Расписание.ПериодПовтораДней = 1;
Расписание.ВремяНачала = Дата(1, 1, 1, 8, 0, 0);
Расписание.ВремяКонца = Дата(1, 1, 1, 20, 0, 0);
Расписание.ПериодПовтораВТечениеДня = 1800; // каждые 30 минут
Задание.Расписание = Расписание;

Задание.Использование = Истина;
Задание.Записать();

Процедура в общем модуле в этом случае принимает параметр: Процедура ВыгрузитьОстаткиДляСайта(Склад) Экспорт. Для таких экземпляров снимите в метаданных флажок «Предопределённое». В конфигурациях на БСП для создания и изменения заданий удобнее программный интерфейс модуля РегламентныеЗаданияСервер: он корректно работает и в модели сервиса.

Запуск из внешней системы

Если момент запуска определяет внешняя программа, у неё два пути. Первый — HTTP-сервис в конфигурации: внешняя система делает запрос, сервис кладёт задачу в очередь или запускает фоновое задание. Второй — планировщик заданий Windows, который открывает 1С с параметром /Execute и путём к внешней обработке. Второй способ проще, но занимает лицензию на время работы и требует хранить пароль пользователя в командной строке.

Почему регламентное задание не выполняется

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

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

Не снимайте блокировку регламентных заданий в тестовой копии базы без необходимости. Копия начнёт отправлять отчётность, письма и обмены с теми же настройками, что и рабочая, и контрагенты получат дубли.

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

Можно ли запустить регламентное задание вручную, не дожидаясь расписания?
Да. В списке Регламентные и фоновые задания выделите задание и нажмите Выполнить сейчас. Оно выполнится как фоновое задание, расписание не изменится.
Почему в списке два одинаковых задания с разными названиями?
Скорее всего, одно из них предопределённое, а другое создано программно для отдельного объекта: узла обмена, учётной записи, организации. Это нормально, они отличаются ключом и параметрами.
Сколько регламентных заданий может выполняться одновременно?
В клиент-серверном варианте несколько разных заданий работают параллельно, ограничение задают ресурсы кластера. Один и тот же экземпляр параллельно себе не запускается. В файловом варианте задания выполняются по очереди внутри сеанса.
Занимает ли регламентное задание лицензию?
Сеансы фоновых и регламентных заданий на сервере клиентскую лицензию не занимают. Лицензию занимает клиентский сеанс, который держат открытым в файловой базе, и запуск 1С из планировщика Windows.
Можно ли поменять расписание типового задания, не меняя конфигурацию?
Да. Расписание, флажок включения и пользователь хранятся в базе, а не в конфигурации. Их меняют в пользовательском режиме, и обновление релиза эти настройки не сбрасывает.