Регламентные задания – это отдельный механизм платформы, позволяющий автоматически выполнять какие-то действия по заданному расписанию. Регламентные задания можно создать и настроить в конфигураторе, в ветке метаданных “Общие”. На основе добавленных в конфигураторе регламентных заданий можно средствами языка 1С создавать отдельные экземпляры регламентных заданий с разными настройками, которые будут храниться в информационной базе.
Фоновые задания – это объекты языка 1С, которые служат для асинхронного выполнения прикладных задач. Они запускаются в отдельных системных сеансах, могут порождать подчиненные фоновые задания, и тем самым позволяют реализовать параллельную обработку данных.
Регулярно встречаю тиражируемую с сайта на сайт информацию, что фоновые задания – это объект, порождаемый регламентными заданиями. Это не так. Фоновые задания действительно могут создаваться на основе регламентных. Но могут быть созданы и полностью независимо при помощи встроенного языка.
Особенности выполнения фоновых заданий файловом и клиент-серверном вариантах
Механизмы выполнения фоновых заданий в файловом и клиент-серверном вариантах различаются.
В файловом варианте необходимо создать выделенный клиентский процесс, который будет заниматься выполнением фоновых заданий. Для этого в клиентском процессе должна периодически вызываться функция глобального контекста ВыполнитьОбработкуЗаданий. Только один клиентский процесс на информационную базу должен выполнять обработку фоновых заданий (и, соответственно, вызывать данную функцию). Если клиентского процесса для обработки фоновых заданий не создано, то при программном доступе к механизму заданий будет выдана ошибка «Менеджер заданий не активен». Не рекомендуется клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций.
После того, как клиентский процесс, выполняющий обработку фоновых заданий, запущен, остальные клиентские процессы получают возможность программного доступа к механизму фоновых заданий, т.е. могут запускать и управлять фоновыми заданиями.
В клиент-серверном варианте для выполнения фоновых заданий используется планировщик заданий, который физически находится в менеджере кластера. Планировщик для всех поставленных в очередь на выполнение фоновых заданий получает наименее загруженный рабочий процесс и использует его для выполнения соответствующего фонового задания. Рабочий процесс выполняет задание и уведомляет планировщик о результатах выполнения.
В клиент-серверном варианте имеется возможность блокирования выполнения регламентных заданий. Блокирование выполнения регламентных заданий происходит в следующих случаях:
- На информационную базу установлена явная блокировка регламентных заданий. Блокировка может быть установлена через консоль кластера;
- На информационную базу установлена блокировка соединения. Блокировка может быть установлена через консоль кластера;
- Из встроенного языка вызван метод УстановитьМонопольныйРежим() с параметром Истина;
- В некоторых других случаях (например, при обновлении конфигурации базы данных).