Как программно запустить обработку на сервере и передать ей параметры

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

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

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

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

Для корректной работы алгоритм выгрузки необходимо выносить из модуля формы в модуль объекта обработки и объявлять целевую процедуру экспортной с помощью ключевого слова Экспорт.

Создание объекта обработки и передача параметров

Разберем по шагам, как запустить обработку из общего модуля или любого серверного контекста.

  1. Перенос кода в модуль объекта: Откроем модуль объекта обработки и создадим экспортную процедуру, которая будет принимать параметры и выполнять основной алгоритм.
  2. Создание объекта в общем модуле: В процедуре общего модуля, вызываемой регламентным заданием, создаем экземпляр обработки с помощью менеджера обработок.
  3. Передача параметров и запуск: Заполняем реквизиты объекта обработки или передаем структуру параметров в экспортную процедуру.

Посмотрим на пример кода для встроенной обработки конфигурации:


// В общем модуле (серверный контекст, вызывается регламентным заданием):
Процедура ВыполнитьВыгрузкуНаСайтПоРасписанию() Экспорт

    // Создаем объект обработки через менеджер
    ОбъектОбработки = Обработки.ВыгрузкаНаСайт.Создать();
    
    // Передаем параметры через реквизиты объекта
    ОбъектОбработки.КаталогВыгрузки = "\\server\share\export\";
    ОбъектОбработки.ИспользоватьСжатие = Истина;
    
    // Вызываем экспортную процедуру модуля объекта
    ОбъектОбработки.ВыполнитьВыгрузку();

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

Если необходимо программно запустить внешнюю обработку (файл с расширением .epf), создание экземпляра выполняется через менеджер внешних обработок с помощью метода ВнешниеОбработки.Создать():


// Создание объекта внешней обработки из файла
ПутьКФайлу = "C:\Services\ExportToSite.epf";
БезопасныйРежим = Ложь; // Позволяет работать с файловой системой

ОбъектОбработки = ВнешниеОбработки.Создать(ПутьКФайлу, БезопасныйРежим);

// Формируем параметры и вызываем экспортную процедуру модуля объекта
ПараметрыВыгрузки = Новый Структура;
ПараметрыВыгрузки.Вставить("КаталогВыгрузки", "D:\ExportData\");

ОбъектОбработки.ВыполнитьВыгрузку(ПараметрыВыгрузки);

Обратите внимание: второй параметр метода ВнешниеОбработки.Создать() отвечает за безопасный режим. Если передать значение Истина, платформа блокирует операционную систему от работы с файлами, внешними компонентами и сетевыми ресурсами. Для выгрузки данных безопасный режим должен быть отключен (Ложь).

Особенности доступа к файловой системе на сервере

Проанализируем распространенную ситуацию, когда код исполняется без ошибок, но файл не создается. Регламентное задание выполняется на сервере 1С от имени системной учетной записи службы (по умолчанию usr1cv8).

  1. Локальные пути: Указание пути C:\Export\ обращается к файловой системе серверного компьютера, а не локального ПК пользователя или разработчика.
  2. Сетевые ресурсы: При выгрузке в сетевую папку (\\server\share\) учетной записи службы сервера 1С должны быть явно предоставлены права на запись в эту директорию.

Настройка отладки регламентных заданий

Выясним, что делать, если точка останова в процедуре не срабатывает при запуске задания по расписанию:

  1. Убедимся, что служба сервера 1С запущен с ключом отладки (-debug).
  2. В Конфигураторе откроем окно Отладка -> Подключение -> Автоматическое подключение и установим флаг Фоновые задания.
  3. Для оперативной проверки алгоритма, не дожидаясь срабатывания расписания, используем обработку Консоль заданий для принудительного запуска регламентного задания.
← На главную