Работа в облачном сервисе 1С:Фреш накладывает ряд существенных ограничений на привычные механизмы обмена данными. Мы не можем просто так загрузить внешние правила обмена в формате .zip или использовать прямой доступ к файловой системе сервера. В данной статье мы подробно разберем, как преодолеть технические сложности при синхронизации локальной конфигурации (например, «Школьное питание») с облачной БГУ, рассмотрим варианты использования расширений, регламентных заданий и современных API-интерфейсов.
Проанализируем доступные инструменты, такие как регистрация или удаление объектов из плана обмена, которые предлагает платформа для интеграции. В зависимости от сложности задачи и требований к оперативности данных, мы можем выбрать один из следующих путей:
Рассмотрим ситуацию, когда стандартный обмен не подходит из-за специфических правил трансформации данных или необходимости корректировки налогового учета. В этом случае создание собственного HTTPСервиса внутри расширения является оптимальным решением. Главное преимущество здесь — автоматическая публикация. Как только ваше расширение проходит аудит и подключается к области данных, сервис становится доступен по внешнему адресу.
Выясним, как выглядит структура такого взаимодействия (включая перенос физических лиц в БГУ). На стороне БГУ (во Фреше) мы создаем объект HTTPСервис. Пример программного кода для обработки входящего POST-запроса с данными обмена:
Функция ДанныеПринять(Запрос)
// Получаем тело запроса в виде двоичных данных
ДанныеJSON = Запрос.ПолучитьТелоКакСтроку();
// Десериализация и логика загрузки
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ДанныеJSON);
ОбъектДанных = ПрочитатьJSON(Чтение);
Чтение.Закрыть();
// Обработка данных (создание документов/справочников)
// ...
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки("Данные успешно приняты");
Возврат Ответ;
КонецФункции
Важно помнить, что для авторизации в таком сервисе из локальной базы необходимо использовать учетные данные пользователя Фреш. Рекомендуется создать отдельного служебного пользователя с минимально необходимыми правами для обеспечения безопасности.
Если нам необходимо, чтобы база во Фреше сама «ходила» за данными в локальную базу или на сторонний ресурс, мы можем использовать механизм регламентных заданий. Проанализируем, как это реализовать технически. Во Фреше поддерживается выполнение кода по расписанию как в расширениях, так и во внешних обработках.
Чтобы запустить внешнюю обработку как регламентное задание, выполним следующие шаги:
Критически важный момент: все дополнительные модули в облаке работают в безопасном режиме. Это означает, что если ваша обработка должна обращаться к внешнему URL-адресу, этот адрес должен быть явно указан в запросе на разрешение при подаче расширения или обработки на аудит. Прямая работа с файлами на диске (например, C:\Exchange\data.xml) запрещена. Весь обмен должен строиться через использование объектов ДвоичныеДанные и временных хранилищ.
Часто разработчики сталкиваются с тем, что в облачном интерфейсе отсутствует кнопка «Загрузить правила» из файла. Это осознанное ограничение безопасности сервиса. Чтобы использовать кастомные правила обмена, мы должны пойти по пути разработки расширения:
Вместо внешней загрузки .zip, правила следует поместить в Макет расширения. Затем, в модуле менеджера обмена (который также переопределяется через расширение), мы прописываем логику обращения к этому макету. Таким образом, правила становятся частью конфигурации и проходят проверку безопасности один раз при аудите расширения.
Проанализируем ситуацию, когда у нас нет возможности или желания писать сложный код на стороне облака. В 1С:Фреш по умолчанию доступен интерфейс OData. Он позволяет внешней программе (в нашем случае локальной «Школьное питание») обращаться к любым объектам БГУ напрямую.
Чтобы этот механизм заработал, необходимо:
Пример обращения к справочнику через OData (например, для заполнения контрагентов по ИНН):
https://1cfresh.com/a/bsl/ИдентификаторОбласти/odata/standard.odata/Catalog_Контрагенты
Этот способ избавляет от необходимости проходить аудит кода во Фреше, так как вы используете стандартный, уже проверенный фирмой 1С функционал доступа к данным.
Разберем типичные ошибки, которые мешают запустить синхронизацию в облаке. Если ваше расширение «не проходит аудит», проверьте следующие моменты:
Вопрос(), Предупреждение() или Сообщить() без привязки к контексту формы. Код обмена должен быть полностью автономным.НайтиФайлы() или КопироватьФайл(). Используйте потоки и методы ПолучитьДанныеИзИнтернета().Соблюдение этих правил и выбор правильной архитектуры (предпочтительно HTTP-сервисы или OData) позволит создать стабильную и быструю систему синхронизации между локальными решениями и облачными базами во Фреше.