При разработке регламентных и фоновых заданий в 1С перед программистами часто встает задача автоматического запуска обработки (например, выгрузки данных на сайт или обмена с внешними системами). Попытки вызвать процедуру кнопки формы или открыть форму обработки из фонового задания приводят к ошибкам, так как серверный контекст не содержит пользовательского интерфейса.
Рассмотрим подробно, как правильно организовать программный запуск обработки, передать параметры и настроить отладку фонового задания.
Выясним причину, почему код, работающий при нажатии кнопки в форме, выдает ошибку или просто не выполняется при запуске по расписанию. В фоновом и регламентном задании отсутствует контекст клиентского приложения — там нет форм, элементов управления, диалогов и пользовательских событий. Вызов процедуры вида КнопкаВыполнитьНажатие на сервере невозможен.
Для корректной работы алгоритм выгрузки необходимо выносить из модуля формы в модуль объекта обработки и объявлять целевую процедуру экспортной с помощью ключевого слова Экспорт.
Разберем по шагам, как запустить обработку из общего модуля или любого серверного контекста.
Посмотрим на пример кода для встроенной обработки конфигурации:
// В общем модуле (серверный контекст, вызывается регламентным заданием):
Процедура ВыполнитьВыгрузкуНаСайтПоРасписанию() Экспорт
// Создаем объект обработки через менеджер
ОбъектОбработки = Обработки.ВыгрузкаНаСайт.Создать();
// Передаем параметры через реквизиты объекта
ОбъектОбработки.КаталогВыгрузки = "\\server\share\export\";
ОбъектОбработки.ИспользоватьСжатие = Истина;
// Вызываем экспортную процедуру модуля объекта
ОбъектОбработки.ВыполнитьВыгрузку();
КонецПроцедуры
Если необходимо программно запустить внешнюю обработку (файл с расширением .epf), создание экземпляра выполняется через менеджер внешних обработок с помощью метода ВнешниеОбработки.Создать():
// Создание объекта внешней обработки из файла
ПутьКФайлу = "C:\Services\ExportToSite.epf";
БезопасныйРежим = Ложь; // Позволяет работать с файловой системой
ОбъектОбработки = ВнешниеОбработки.Создать(ПутьКФайлу, БезопасныйРежим);
// Формируем параметры и вызываем экспортную процедуру модуля объекта
ПараметрыВыгрузки = Новый Структура;
ПараметрыВыгрузки.Вставить("КаталогВыгрузки", "D:\ExportData\");
ОбъектОбработки.ВыполнитьВыгрузку(ПараметрыВыгрузки);
Обратите внимание: второй параметр метода ВнешниеОбработки.Создать() отвечает за безопасный режим. Если передать значение Истина, платформа блокирует операционную систему от работы с файлами, внешними компонентами и сетевыми ресурсами. Для выгрузки данных безопасный режим должен быть отключен (Ложь).
Проанализируем распространенную ситуацию, когда код исполняется без ошибок, но файл не создается. Регламентное задание выполняется на сервере 1С от имени системной учетной записи службы (по умолчанию usr1cv8).
C:\Export\ обращается к файловой системе серверного компьютера, а не локального ПК пользователя или разработчика.\\server\share\) учетной записи службы сервера 1С должны быть явно предоставлены права на запись в эту директорию.Выясним, что делать, если точка останова в процедуре не срабатывает при запуске задания по расписанию:
-debug).