Как организовать обмен данными в произвольном формате с 1С:Фреш?

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

Часто перед разработчиками встает задача организовать обмен произвольными данными с облачным сервисом «1С:Фреш». Если вы привыкли к локальным базам, то при попытке использовать привычные инструменты, например, обработку «Универсальный обмен данными в формате XML», вы столкнетесь с серьезными препятствиями. Обработки могут отклонить при проверке, а система выдаст лог ошибок. Давайте разберем по шагам, почему это происходит, проанализируем ограничения платформы и рассмотрим рабочие способы реализации обмена.

Почему во Фреше не работает «Универсальный обмен данными»?

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

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

Ограничения безопасного режима и аудит расширений

Рассмотрим подробнее требования, которые необходимо соблюдать при разработке расширений и обработок для 1С:Фреш:

  1. Запрет на использование COM-объектов. Серверы 1С:Фреш работают под управлением операционной системы Linux. Любые попытки вызвать COM-объекты (например, для парсинга Excel-файлов или подключения к сторонним системам) приведут к ошибке и отклонению на этапе аудита.
  2. Ограничение внешних HTTP-соединений. Если ваше расширение стучится к стороннему API (REST/HTTP-сервису) для получения данных, код должен запрашивать явное разрешение у пользователя. Альтернативный вариант — указать разрешенные URL-адреса в манифесте расширения при его установке, иначе безопасный режим заблокирует любые исходящие соединения.
  3. Интерфейсные ограничения. Запрещено использовать модальные окна и синхронные вызовы. Все длительные операции, такие как парсинг и обработка большого массива данных, должны выполняться в фоне через механизмы длительных операций Библиотеки стандартных подсистем (БСП).

Особенности работы с локальными файлами

Посмотрим на частую проблему: вы написали обработку, которая должна загружать данные из файла (XML, CSV и т.д.), но во Фреше она не работает с ошибкой доступа к файловой системе. Дело в том, что в безопасном режиме запрещен прямой доступ к файловой системе сервера, кроме каталога временных файлов.

Как же правильно загрузить файл? Прямое чтение файлов на сервере запрещено. Архитектуру загрузки необходимо строить следующим образом:

  1. Пользователь интерактивно на клиенте (в веб-браузере или тонком клиенте) выбирает нужный файл обмена.
  2. Файл помещается во временное хранилище с помощью стандартных методов платформы (например, через ПоместитьФайл() или асинхронные аналоги).
  3. На сервер передается адрес данных во временном хранилище.
  4. Серверный код получает данные из временного хранилища, парсит их и формирует или обновляет документы.

Таким образом, чтение файлов выполняется строго на стороне клиента, а их обработка — на сервере во временном каталоге.

Использование стандартного интерфейса OData (REST API)

Проанализируем альтернативный путь, который вообще не требует прохождения аудита и написания внешних обработок. На сегодняшний день одним из самых эффективных способов обмена данными со сторонними веб-сервисами является использование стандартного интерфейса OData (версии 3.0).

1С:Фреш штатно поддерживает протокол OData, позволяя читать, создавать, изменять и удалять документы и справочники через обычные HTTP-запросы, получая ответы в форматах JSON или XML. Для его настройки не нужно программировать в 1С:

  1. В базе создается специальный служебный пользователь.
  2. С помощью типовой обработки «Настройка автоматического REST-сервиса» настраивается состав доступных для обмена объектов (конкретные справочники и документы).

Важное ограничение OData во Фреше: В облачном сервисе заблокирован HTTP-заголовок 1C_OData-DataLoadMode: true. В локальных базах он используется для записи объектов в режиме загрузки данных (аналог ОбменДанными.Загрузка = Истина в коде), который отключает проверки заполнения и проверки при записи. Во Фреше все документы, созданные через OData, будут проходить стандартные бизнес-логические проверки перед проведением.

Переход на формат EnterpriseData

Если вам предстоит регулярный двусторонний обмен с другими системами, рассмотрим еще один мощный инструмент от фирмы 1С — универсальный формат EnterpriseData (основанный на XML).

Вместо того чтобы изобретать собственные XML-структуры и протаскивать внешние обработки парсинга через строгий аудит, вы можете использовать встроенные механизмы. Формат EnterpriseData уже встроен в большинство типовых конфигураций (Бухгалтерия, УНФ и др.), размещенных во Фреше. Это позволяет настроить единую шину данных со сторонними приложениями, используя типовые планы обмена и узлы, что значительно упрощает интеграцию и снимает риски отклонения кода аудиторами.

Подводя итог, можно сказать: если задача решается типовым обменом OData или EnterpriseData — используйте их. Если необходима кастомная логика — пишите специализированную внешнюю обработку или расширение, соблюдая строгие правила безопасного режима: без COM, с чтением файлов на клиенте, выполнением тяжелых процессов в фоне и без полей для выполнения произвольного кода.

← На главную