Документация Формулы
Разделы документации

Руководство

Обзор руководства

Бизнес-процессы и задачи

Бизнес-процессы и задачи

КОНСТРУКТОР

Планировщик задач

Планировщик — серверный механизм, который запускает ваш код по расписанию, без участия человека и без открытого браузера. Типичные задачи:

  • выгрузка и загрузка данных из внешних систем;
  • отправка ежедневных писем или отчётов;
  • очистка и архивация старых записей;
  • пересчёты и служебные операции ночью.

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

Планировщики создаются в Конструкторе: раздел Планировщик → Добавить. Внутри одного планировщика может быть много задач.

# Шапка планировщика

ЭлементЧто делает
Имя планировщикаНазвание
Индикатор Сервер запущен / Сервер остановленЗелёная точка — задачи выполняются; серая — нет
Задач: NСколько задач в планировщике
След: hh:mmВремя ближайшего запуска
Запустить сервер (зелёная)Включает выполнение задач
Остановить серверВыключает выполнение задач
🗑Удаляет планировщик целиком (диалог «Удалить планировщик? Это действие необратимо.»)

# Экран «Задачи планировщика»

Список задач в виде карточек. Кнопка Новая задача (зелёная, с плюсом).

На каждой карточке:

ЭлементЧто показывает
Зелёная или серая точкаЗадача активна / выключена. Выключенная карточка показывается бледнее
Название задачиИмя
КомпонентКакой компонент выполняется
РасписаниеОписание расписания словами, например «Каждые 5 минут»
След. запуск:Когда задача выполнится в следующий раз
Запусков:Сколько раз она уже выполнялась
Последний запуск:успех (зелёная галочка) или ошибка (красный крест)
Кнопка ▶ / ⏸Включить или выключить задачу
РедактироватьОткрывает форму задачи
ЛогОткрывает журнал выполнений. Иконка меняется по результату последнего запуска
🗑Удалить задачу (диалог «Удалить задачу? Это действие необратимо.»)

Если задач нет: «Нет созданных задач» и подсказка «Нажмите "Новая задача" для создания».

# Форма задачи

# Основное

ПолеЧто означает
Название задачиИмя, по которому вы узнаёте задачу
КомпонентЧто именно выполнять. Значение по умолчанию — «Выберите компонент»
ОписаниеСвободный текст
Активна (задача будет выполняться по расписанию)Галочка. Снятая галочка отключает выполнение

Код берётся из подключённого компонента. См. Компоненты.

# Режим запуска

РежимЧто происходит
1 · Один разЗадача выполнится один раз и отключится
N · НесколькоЗадача выполнится указанное число раз (поле Максимальное количество запусков)
∞ · НепрерывноЗадача выполняется по расписанию бесконечно

Для режимов «Один раз» и «Несколько» появляется дополнительное поле количества запусков.

# Расписание

Выберите тип, затем заполните поля типа:

ТипНастройкиПример
ИнтервалИнтервал (секунды)300 — каждые 5 минут
ЕжедневноВремя запуска02:00
ЕженедельноДень недели, ВремяПонедельник, 09:00
ЕжемесячноДень месяца, Время1, 00:00
CronCron выражение0 */6 * * * — каждые 6 часов

Примеры Cron-выражений:

text
*/5 * * * *     каждые 5 минут
0 */2 * * *     каждые 2 часа
0 0 * * 0       каждое воскресенье в полночь
0 0 1 * *       1-го числа каждого месяца в полночь

# Код задачи

Задача вызывает функцию из компонента. Имя функции — onSchedule (если её нет — вызывается main). Функция получает два аргумента: formApi и объект задачи.

javascript
// Компонент «Синхронизация товаров»
async function onSchedule(formApi, schedulerTask) {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();

  for (const item of data) {
    await formApi.create('Справочник', 'Товары', {
      'Наименование': item.name,
      'Артикул': item.sku,
      'Цена': item.price
    });
  }

  const ctx = formApi.getContext();
  // ctx = { currentUser, task: { id, name, componentId, ... } }
  return `Синхронизировано: ${data.length}`;
}

# Журнал выполнений («Лог»)

Каждая задача ведёт журнал последних 50 запусков. Кнопка Лог в карточке задачи открывает диалог с записями.

Каждая запись содержит:

ЭлементЧто показывает
СтатусУспех или ошибка
Время и длительностьКогда выполнялось и сколько миллисекунд заняло
Вывод consoleТо, что код напечатал через console.log, warn, error
Возвращено:Значение, которое вернула функция
Ошибка:Текст ошибки и стек вызова, если выполнение упало

Если задача ещё ни разу не выполнялась: «Задача ещё не выполнялась» и «Журнал появится после первого запуска планировщика». Кнопка Закрыть закрывает диалог.

Журнал обновляется сам — открытый лог показывает новые выполнения без перезагрузки страницы.

# Что доступно в коде задачи

ДоступноНедоступно
formApi.create, update, delete, read, readListРабота с табличными частями (getTabularSection и подобные)
Отправка почты, вызовы внешних сервисовgetValue / setValue — в серверном контексте нет формы
getContext() → { currentUser, task }post / unpost — проведение делается записью поля «Проведён»

Особенности:

  • код выполняется в изолированном окружении с таймаутом;
  • ошибка одной задачи не останавливает планировщик;
  • после ошибки следующий запуск задачи переносится на минуту;
  • read() не разворачивает ссылочные реквизиты автоматически, как в интерфейсе.

# Надёжность и производительность

СвойствоЗначение
Проверка расписанияКаждую 1 секунду
Рекомендуемый минимальный интервал60 секунд
Счётчики и журналСохраняются автоматически после каждого выполнения
Влияние на конфигурациюСтатистика выполнения — не изменение конфигурации, версия не меняется

# Частые проблемы

ПроблемаЧто проверить
Задача не выполняетсяЗапущен ли сервер (зелёный индикатор), стоит ли галочка Активна, верно ли расписание
Ошибка выполненияСинтаксис JavaScript, использование await для асинхронных операций, журнал Лог
Компонент не найденКомпонент существует и содержит код
Планировщик не запускаетсяОшибки в консоли сервера, занят ли порт, загружены ли метаданные

# Смотрите также