При работе в облачных сервисах, таких как 1С:Фреш, разработчики часто сталкиваются с ограничением: конфигурацию нельзя менять (особенно если это «Базовая» версия), а бизнес-процессы требуют автоматизации, например, регулярного обмена данными с интернет-магазином на Bitrix. В этой ситуации стандартным решением является использование механизма Библиотеки стандартных подсистем (БСП) для запуска внешних обработок по расписанию. Рассмотрим подробно, как реализовать этот функционал.
Для начала разберем, как 1С понимает, что внешнюю обработку нужно запускать автоматически. В современных конфигурациях (БП 3.0, УТ 11, ERP и др.) встроена подсистема «Дополнительные отчеты и обработки». Она позволяет не просто открывать файл .epf через меню, а регистрировать его в информационной базе как полноценный инструмент с собственными командами и расписанием.
Для того чтобы ваша обработка «подружилась» с БСП, в её модуле объекта обязательно должна присутствовать функция СведенияОВнешнейОбработке. Проанализируем структуру этой функции для нашей задачи.
Выясним, какие параметры необходимо указать в сведениях, чтобы система разрешила создание регламентного задания. Нам потребуется создать команду с типом ВызовСерверногоМетода. Именно этот тип команды позволяет БСП обращаться к коду обработки в фоновом режиме без участия пользователя.
Посмотрим на пример реализации функции в модуле объекта обработки:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Наименование = "Обмен с Битрикс (автоматический)";
ПараметрыРегистрации.Версия = "1.1";
ПараметрыРегистрации.БезопасныйРежим = Истина;
// Добавление команды для запуска по расписанию
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = "Запустить обмен с Битрикс";
НоваяКоманда.Идентификатор = "ВыполнитьОбмен";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Ложь;
Возврат ПараметрыРегистрации;
КонецФункции
Важный нюанс: если мы хотим, чтобы обработку можно было запускать и вручную (через кнопку в интерфейсе), мы можем добавить вторую команду с типом ОткрытиеФормы. Система 1С позволяет регистрировать сразу несколько вариантов использования в одной таблице команд.
Когда регламентное задание срабатывает, сервер 1С ищет в модуле объекта обработки процедуру с именем ВыполнитьКоманду. Разберем её структуру. Она должна иметь два параметра: ИдентификаторКоманды (строка, которую мы указали в сведениях) и ПараметрыВыполненияКоманды (структура с контекстом выполнения).
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
Если ИдентификаторКоманды = "ВыполнитьОбмен" Тогда
ВыполнитьСинхронизациюСБитрикс();
КонецЕсли;
КонецПроцедуры
Процедура ВыполнитьСинхронизациюСБитрикс()
// Здесь размещается основной программный код обмена
// Обратите внимание: код выполняется на сервере
КонецПроцедуры
Работа в облаке накладывает серьезные ограничения, о которых нужно знать заранее. Проанализируем основные требования сервиса:
C:\temp), запрещены методы Выполнить() и использование небезопасных внешних компонент.СведенияОВнешнейОбработке. Для этого используется свойство Разрешения. В нем указывается протокол (http/https) и адрес сайта. Без этого 1С заблокирует попытку соединения.HTTPСоединение.После того как вы подготовили файл .epf и загрузили его в сервис, выполним следующие шаги в самой программе:
Важно: В облаке Фреш вы не увидите это задание в общем списке Регламентные и фоновые задания. Оно работает внутри механизма дополнительных обработок, и мониторинг его успешности также следует проводить через журнал регистрации или специализированные отчеты в карточке обработки.
Многие пользователи считают, что в Базовых версиях расширения и внешние обработки запрещены. Однако в сервисе 1С:Фреш на определенных тарифах (например, «ПРОФ» или специальные тарифы для малого бизнеса) разрешено подключать дополнительные отчеты и обработки даже к приложениям, созданным на базе «базовых» конфигураций. Это открывает возможности для автоматизации без перехода на дорогостоящие версии программы. Главное — строгое соблюдение требований безопасности и стандартов разработки 1С.
Проанализировав ситуацию, мы видим, что задача запуска обмена по расписанию вполне решаема. Главное — правильно оформить техническую часть обработки и быть готовым к процедуре аудита безопасности в облаке.