Часто перед разработчиками встает задача организовать обмен произвольными данными с облачным сервисом «1С:Фреш». Если вы привыкли к локальным базам, то при попытке использовать привычные инструменты, например, обработку «Универсальный обмен данными в формате XML», вы столкнетесь с серьезными препятствиями. Обработки могут отклонить при проверке, а система выдаст лог ошибок. Давайте разберем по шагам, почему это происходит, проанализируем ограничения платформы и рассмотрим рабочие способы реализации обмена.
Основная причина кроется в строгих правилах безопасности облачного сервиса. Все расширения и внешние обработки, которые вы пытаетесь загрузить в базу, проходят обязательную модерацию (экспертизу). Любой код запускается в безопасном режиме.
Универсальные обработки обмена отклоняются на этапе аудита именно потому, что они содержат поля для вставки произвольного кода (например, правила конвертации, которые выполняют код на лету с помощью функции Выполнить()). В условиях публичного облака это недопустимо, так как позволяет запустить потенциально опасный код на сервере провайдера. Выясним главное правило: нужно писать внешнюю обработку для загрузки конкретных данных в конкретный документ без полей для вставки кода.
Рассмотрим подробнее требования, которые необходимо соблюдать при разработке расширений и обработок для 1С:Фреш:
Посмотрим на частую проблему: вы написали обработку, которая должна загружать данные из файла (XML, CSV и т.д.), но во Фреше она не работает с ошибкой доступа к файловой системе. Дело в том, что в безопасном режиме запрещен прямой доступ к файловой системе сервера, кроме каталога временных файлов.
Как же правильно загрузить файл? Прямое чтение файлов на сервере запрещено. Архитектуру загрузки необходимо строить следующим образом:
ПоместитьФайл() или асинхронные аналоги).Таким образом, чтение файлов выполняется строго на стороне клиента, а их обработка — на сервере во временном каталоге.
Проанализируем альтернативный путь, который вообще не требует прохождения аудита и написания внешних обработок. На сегодняшний день одним из самых эффективных способов обмена данными со сторонними веб-сервисами является использование стандартного интерфейса OData (версии 3.0).
1С:Фреш штатно поддерживает протокол OData, позволяя читать, создавать, изменять и удалять документы и справочники через обычные HTTP-запросы, получая ответы в форматах JSON или XML. Для его настройки не нужно программировать в 1С:
Важное ограничение OData во Фреше: В облачном сервисе заблокирован HTTP-заголовок 1C_OData-DataLoadMode: true. В локальных базах он используется для записи объектов в режиме загрузки данных (аналог ОбменДанными.Загрузка = Истина в коде), который отключает проверки заполнения и проверки при записи. Во Фреше все документы, созданные через OData, будут проходить стандартные бизнес-логические проверки перед проведением.
Если вам предстоит регулярный двусторонний обмен с другими системами, рассмотрим еще один мощный инструмент от фирмы 1С — универсальный формат EnterpriseData (основанный на XML).
Вместо того чтобы изобретать собственные XML-структуры и протаскивать внешние обработки парсинга через строгий аудит, вы можете использовать встроенные механизмы. Формат EnterpriseData уже встроен в большинство типовых конфигураций (Бухгалтерия, УНФ и др.), размещенных во Фреше. Это позволяет настроить единую шину данных со сторонними приложениями, используя типовые планы обмена и узлы, что значительно упрощает интеграцию и снимает риски отклонения кода аудиторами.
Подводя итог, можно сказать: если задача решается типовым обменом OData или EnterpriseData — используйте их. Если необходима кастомная логика — пишите специализированную внешнюю обработку или расширение, соблюдая строгие правила безопасного режима: без COM, с чтением файлов на клиенте, выполнением тяжелых процессов в фоне и без полей для выполнения произвольного кода.