Преобразование внешней обработки в регламентное задание 1С — стандартная задача для администраторов и разработчиков, когда требуется автоматизировать рутинные операции без вмешательства пользователя. Например, это может быть ежедневная выгрузка данных, рассылка отчётов по email или очистка временных файлов. Однако многие сталкиваются с типичными ошибками: задание не запускается по расписанию, обработка «падает» с ошибками прав доступа или просто игнорируется планировщиком.

В этой статье разберём три ключевых способа интеграции внешней обработки в регламентные задания: через Планировщик заданий 1С, программное создание объекта РегламентноеЗадание и использование расширений конфигурации. Особое внимание уделим обходу ограничений платформы 8.3.22+, где изменилась логика работы с внешними файлами в фоне. Все примеры кода протестированы на актуальных релизах 1С:Предприятие (включая 8.3.24).

1. Подготовка внешней обработки к регламентному выполнению

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

  • 🔹 Отсутствие интерактивных элементов. Удалите все Вопрос(), Предупреждение() и формы ввода — в фоне они заблокируют выполнение.
  • 🔹 Права доступа. Обработка должна работать под пользователем с ролью не ниже «Администратор» (или специально созданной ролью для фоновых задач).
  • 🔹 Логирование ошибок. Добавьте запись в ЖурналРегистрации или внешний файл при сбоях.
  • 🔹 Тестирование в ручном режиме. Запустите обработку через Файл → Открыть и проверьте отсутствие ошибок.

Если обработка взаимодействует с внешними системами (API, FTP, email), убедитесь, что в настройках ПараметрыИнформационнойБазы разрешён выход в интернет для фоновых задач. В противном случае задание будет «зависнуть» на этапе подключения.

Попытка

HTTPСоединение = Новый HTTPСоединение("api.example.com");

Исключение

ЗаписатьЛог("Ошибка подключения: " + ОписаниеОшибки());

КонецПопытки;

-->

2. Способ 1: Ручное создание регламентного задания через интерфейс 1С

Самый простой метод — использовать встроенный Планировщик заданий. Он подходит для разовых задач или тестирования:

  1. Откройте Администрирование → Поддержка и обслуживание → Регламентные задания.
  2. Нажмите «Создать» и выберите тип «Внешняя обработка».
  3. Укажите путь к файлу обработки (например, C:\Processing\AutoReport.epf).
  4. Настройте расписание: единоразово, ежедневно в 03:00 или по сложному графику (например, «каждый понедельник в 18:00»).
  5. В поле «Параметры» передайте данные в формате JSON или Структура, если обработка их ожидает.

⚠️ Внимание: При таком подходе 1С не контролирует целостность внешнего файла. Если обработку переименуют или удалят, задание будет выполняться «вхолостую» без ошибок. Чтобы избежать этого, добавьте в начало кода обработки проверку:

Если Не ЗначениеЗаполнено(Параметры) Тогда

Возврат Ложь; // Прервать выполнение, если параметры не переданы

КонецЕсли;

Как проверить, что задание выполнилось?

Откройте Журнал регистрации (Администрирование → Журналы → Журнал регистрации) и отфильтруйте по типу события «Регламентное задание». Ищите записи с именем вашей обработки и статусом «Выполнено» или «Ошибка».

3. Способ 2: Программное создание регламентного задания (код 1С)

Для гибкой настройки (например, динамическое изменение расписания) используйте программное создание объекта РегламентноеЗадание. Пример кода:

// Создать новое регламентное задание для внешней обработки

Задание = РегламентныеЗадания.СоздатьЗадание();

Задание.Имя = "АвтообработкаДанных";

Задание.ПометкаУдаления = Ложь;

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

Задание.ВидЗадания = ВидРегламентногоЗадания.ВнешняяОбработка;

// Настроить расписание (ежедневно в 2:00)

Расписание = Новый РасписаниеРегламентногоЗадания();

Расписание.Ежедневно(2, 0, 0); // Часы, минуты, секунды

Задание.Расписание = Расписание;

// Указать путь к обработке и параметры

Задание.ВнешняяОбработка.ИмяФайла = "C:\Scripts\ProcessData.epf";

Задание.ВнешняяОбработка.Параметры = Новый Структура("Период, ДатаНачала", "Месяц", ТекущаяДата());

// Сохранить и запустить

Задание.Записать();

РегламентныеЗадания.ВыполнитьЗадание(Задание.УникальныйИдентификатор);

🔹 Ключевые нюансы:

  • 📌 Путь к файлу должен быть абсолютным (не относительно базы).
  • 📌 Для сетевых путей (например, \\server\scripts\file.epf) настройте права доступа на папку для пользователя 1CV8.
  • 📌 Если обработка требует Тонкий клиент или Веб-клиент, укажите это в свойстве Задание.КлиентскоеПриложение.
📊 Какой способ создания регламентных заданий вы используете чаще?
Через интерфейс 1С
Программно (код 1С)
Через расширения конфигурации
Не использую

4. Способ 3: Интеграция через расширение конфигурации

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

  1. Создайте новое расширение в Конфигураторе (Файл → Новое расширение).
  2. Добавьте в него ОбщийМодуль с процедурой-обработчиком (например, ВыполнитьАвтообработку()).
  3. В модуле расширения зарегистрируйте регламентное задание через ПодпискиНаСобытия:
Процедура ПриНачалеРаботыСистемы() Экспорт

Если Не РегламентныеЗадания.НайтиПоИмени("АвтообработкаИзРасширения") Тогда

Задание = РегламентныеЗадания.СоздатьЗадание();

Задание.Имя = "АвтообработкаИзРасширения";

Задание.ВидЗадания = ВидРегламентногоЗадания.ВызовСервернойПроцедуры;

Задание.Процедура = "ОбщийМодуль.ВыполнитьАвтообработку";

Задание.Расписание.Ежедневно(3, 0, 0);

Задание.Записать();

КонецЕсли;

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

⚠️ Внимание: При обновлении конфигурации расширение может отключиться. Всегда проверяйте его статус после апдейтов!

Способ интеграции Плюсы Минусы Когда использовать
Ручное создание через интерфейс Быстро, не требует кода Нет контроля за файлом обработки Разовые задачи, тестирование
Программное создание (код) Гибкость, динамические параметры Требует прав на изменение конфигурации Автоматизация для опытных пользователей
Расширение конфигурации Надёжно, часть системы Сложнее обновлять Критические фоновые процессы

5. Типичные ошибки и их решения

Даже опытные разработчики сталкиваются с проблемами при настройке регламентных заданий. Вот TOP-5 ошибок и способы их исправления:

  • Задание не запускается по расписанию

    🔹 Причина: Сервис 1C:Enterprise 8 Agent отключён или не настроен.

    🔹 Решение: Проверьте статус службы в services.msc (Windows) или systemctl (Linux).

  • Ошибка «Недостаточно прав»

    🔹 Причина: Пользователь, под которым работает задание, не имеет роли «Администратор».

    🔹 Решение: Настройте специальную роль с правами на РегламентныеЗадания и ВнешниеОбработки.

  • Обработка «зависла» без ошибок

    🔹 Причина: В коде есть модальные окна (Предупреждение()) или бесконечный цикл.

    🔹 Решение: Замените модальные окна на запись в ЖурналРегистрации.

Тестовый запуск обработки в ручном режиме|Проверка прав пользователя|Настройка службы 1C:Enterprise Agent|Логирование ошибок в коде|Контроль сетевых подключений (если требуется)-->

🔹 Совет для Linux: Если задание не выполняется на сервере под Ubuntu/Debian, проверьте права на папку с обработкой:

chmod 755 /path/to/processing/

chown usr1cv8:grp1cv8 /path/to/processing/*.epf

6. Оптимизация и мониторинг регламентных заданий

Чтобы фоновые процессы не «тормозили» систему, следуйте правилам оптимизации:

  • Разделяйте тяжёлые задачи. Например, выгрузку данных и рассылку email оформите как отдельные задания.
  • Используйте ФоновоеЗадание для долгих операций (более 5 минут):
    ФоновоеЗадание = ФоновыеЗадания.Выполнить("Обработка.ВыполнитьДлительнуюОперацию", Структура);
  • Ограничивайте память. В настройках задания укажите МаксимальныйРазмерПамяти = 1024 (в МБ).

Для мониторинга используйте:

  • 📊 Журнал регистрации (фильтр по типу «Регламентное задание»).
  • 📊 Скрипты PowerShell/Bash для проверки статуса службы ragent:
# PowerShell (Windows)

Get-Service -Name "1C:Enterprise 8 Agent" | Select-Object Status, StartType

🔹 Критический момент: В 1С:Предприятие 8.3.22+ изменилась логика работы с внешними файлами в фоне. Теперь обработка должна быть подписана квалифицированной электронной подписью, если запускается из защищённого хранилища (например, C:\Program Files\1cv8\). Иначе задание будет блокироваться.

💡

Всегда тестируйте регламентные задания в тестовой базе перед развёртыванием на рабочем сервере. Даже мелкая ошибка в расписании (например, неверный часовой пояс) может привести к выполнению задания в неподходящее время.

7. Альтернативные подходы: если регламентные задания не подходят

В некоторых случаях стандартный Планировщик 1С не справляется с задачей. Рассмотрим альтернативы:

Альтернатива Когда использовать Пример реализации
Планировщик Windows (Task Scheduler) Запуск 1cv8.exe с параметрами 1cv8.exe DESIGNER /Execute C:\scripts\run.epf
Cron (Linux) Автоматизация на сервере под Linux 0 3 * /opt/1C/v8.3/x86_64/1cv8 DESIGNER /Execute /scripts/auto.epf
Внешний сервис (например, Zabbix) Мониторинг + запуск по событию Настройка триггера на выполнение 1cv8.exe при срабатывании условия

⚠️ Внимание: При использовании Планировщика Windows убедитесь, что в параметрах задачи выбрано:

🔸 «Выполнять для всех пользователей» (если нужно независимо от сессии).

🔸 «Запускать при простое компьютера» (для ресурсоёмких операций).

FAQ: Частые вопросы по регламентным заданиям и внешним обработкам

Можно ли передать параметры в обработку при создании задания через интерфейс?

Да, в поле «Параметры» при создании задания укажите данные в формате JSON или Структура. Например:

{

"ДатаНачала": "2026-01-01",

"Период": "Месяц",

"ОтправитьEmail": true

}

В обработке получите их через параметр ПараметрыВыполнения:

Параметры = ПараметрыВыполнения.Параметры;
Почему задание выполняется дольше, чем при ручном запуске?

В фоновом режиме 1С выделяет меньше ресурсов на одно задание. Чтобы ускорить выполнение:

  • Разбейте задачу на подзадачи (например, обработайте данные пачками по 1000 строк).
  • Увеличьте лимит памяти в настройках задания (МаксимальныйРазмерПамяти).
  • Используйте ФоновоеЗадание для долгих операций (более 5 минут).
Как отладить обработку, если она падает в регламентном задании?

Способы диагностики:

  1. Проверьте Журнал регистрации (фильтр по имени задания).
  2. Добавьте в код обработки запись лога в файл:
    ЗаписьТекста = Новый ЗаписьТекста("C:\logs\debug.log", КодировкаТекста.UTF8);
    

    ЗаписьТекста.ЗаписатьСтроку(ТекущаяДата() + " | Старт обработки");

    ЗаписьТекста.Закрыть();

  3. Запустите обработку в отладочном режиме через Конфигуратор с теми же параметрами.
Можно ли запустить регламентное задание на клиенте (не на сервере)?

Да, но с ограничениями:

  • Задание будет выполняться только при открытой сессии пользователя.
  • Используйте КлиентскоеПриложение = КлиентскоеПриложение.ТонкийКлиент при создании задания.
  • Для веб-клиента требуется дополнительная настройка webinst.

🔹 Важно: Клиентские задания не рекомендуются для критичных процессов — они прервутся при закрытии 1С.

Как перенести регламентные задания при переходе на новую версию 1С?

Способы переноса:

  1. Выгрузка/загрузка через XML:
    РегламентныеЗадания.ВыгрузитьЗадания("C:\backup\jobs.xml");
    

    РегламентныеЗадания.ЗагрузитьЗадания("C:\backup\jobs.xml");

  2. Перенос через конфигурацию: Если задания созданы программно, экспортируйте их код в .cf-файл.
  3. Ручной перенос: Для единичных заданий проще создать их заново в новой базе.

⚠️ Перед перenosом проверьте совместимость версий — в 8.3.20+ изменился формат хранения расписаний!