Как настроить синхронизацию локальной базы с «1С:Бухгалтерия государственного учреждения» в облаке «1С:Фреш»

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

Работа в облачном сервисе 1С:Фреш накладывает ряд существенных ограничений на привычные механизмы обмена данными. Мы не можем просто так загрузить внешние правила обмена в формате .zip или использовать прямой доступ к файловой системе сервера. В данной статье мы подробно разберем, как преодолеть технические сложности при синхронизации локальной конфигурации (например, «Школьное питание») с облачной БГУ, рассмотрим варианты использования расширений, регламентных заданий и современных API-интерфейсов.

Варианты реализации обмена данными в 1С:Фреш

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

  1. Обмен в формате Enterprise Data. Это штатный механизм, который поддерживается большинством типовых конфигураций. Если обе программы поддерживают этот формат, настройка выполняется через меню «Синхронизация данных».
  2. Использование расширений с HTTP-сервисами. Один из самых гибких и надежных способов. Мы создаем расширение, которое публикует программный интерфейс (API) базы БГУ во Фреше, и обращаемся к нему из локальной системы.
  3. Внешние обработки с регламентными заданиями. Подходит для периодической загрузки или выгрузки данных, когда инициатором выступает сама облачная база.
  4. Стандартный интерфейс OData. Позволяет читать и записывать данные в облако без написания кода на стороне Фреша, используя стандартный REST-протокол 1С.

Использование HTTP-сервисов в расширениях: пошаговый разбор

Рассмотрим ситуацию, когда стандартный обмен не подходит из-за специфических правил трансформации данных или необходимости корректировки налогового учета. В этом случае создание собственного HTTPСервиса внутри расширения является оптимальным решением. Главное преимущество здесь — автоматическая публикация. Как только ваше расширение проходит аудит и подключается к области данных, сервис становится доступен по внешнему адресу.

Выясним, как выглядит структура такого взаимодействия (включая перенос физических лиц в БГУ). На стороне БГУ (во Фреше) мы создаем объект HTTPСервис. Пример программного кода для обработки входящего POST-запроса с данными обмена:


Функция ДанныеПринять(Запрос)
    
    // Получаем тело запроса в виде двоичных данных
    ДанныеJSON = Запрос.ПолучитьТелоКакСтроку();
    
    // Десериализация и логика загрузки
    Чтение = Новый ЧтениеJSON;
    Чтение.УстановитьСтроку(ДанныеJSON);
    ОбъектДанных = ПрочитатьJSON(Чтение);
    Чтение.Закрыть();
    
    // Обработка данных (создание документов/справочников)
    // ...
    
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.УстановитьТелоИзСтроки("Данные успешно приняты");
    Возврат Ответ;
    
КонецФункции

Важно помнить, что для авторизации в таком сервисе из локальной базы необходимо использовать учетные данные пользователя Фреш. Рекомендуется создать отдельного служебного пользователя с минимально необходимыми правами для обеспечения безопасности.

Настройка регламентных заданий во Фреше

Если нам необходимо, чтобы база во Фреше сама «ходила» за данными в локальную базу или на сторонний ресурс, мы можем использовать механизм регламентных заданий. Проанализируем, как это реализовать технически. Во Фреше поддерживается выполнение кода по расписанию как в расширениях, так и во внешних обработках.

Чтобы запустить внешнюю обработку как регламентное задание, выполним следующие шаги:

  1. Подготовим внешнюю обработку, соответствующую требованиям БСП (Библиотеки стандартных подсистем).
  2. Загрузим её в личном кабинете Фреш через раздел «Адаптация».
  3. После прохождения аудита в карточке обработки появится возможность настроить расписание.

Критически важный момент: все дополнительные модули в облаке работают в безопасном режиме. Это означает, что если ваша обработка должна обращаться к внешнему URL-адресу, этот адрес должен быть явно указан в запросе на разрешение при подаче расширения или обработки на аудит. Прямая работа с файлами на диске (например, C:\Exchange\data.xml) запрещена. Весь обмен должен строиться через использование объектов ДвоичныеДанные и временных хранилищ.

Решение проблемы с правилами обмена и ZIP-файлами

Часто разработчики сталкиваются с тем, что в облачном интерфейсе отсутствует кнопка «Загрузить правила» из файла. Это осознанное ограничение безопасности сервиса. Чтобы использовать кастомные правила обмена, мы должны пойти по пути разработки расширения:

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

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

Проанализируем ситуацию, когда у нас нет возможности или желания писать сложный код на стороне облака. В 1С:Фреш по умолчанию доступен интерфейс OData. Он позволяет внешней программе (в нашем случае локальной «Школьное питание») обращаться к любым объектам БГУ напрямую.

Чтобы этот механизм заработал, необходимо:

Пример обращения к справочнику через OData (например, для заполнения контрагентов по ИНН):

https://1cfresh.com/a/bsl/ИдентификаторОбласти/odata/standard.odata/Catalog_Контрагенты

Этот способ избавляет от необходимости проходить аудит кода во Фреше, так как вы используете стандартный, уже проверенный фирмой 1С функционал доступа к данным.

Основные причины отказа в аудите при настройке обмена

Разберем типичные ошибки, которые мешают запустить синхронизацию в облаке. Если ваше расширение «не проходит аудит», проверьте следующие моменты:

Соблюдение этих правил и выбор правильной архитектуры (предпочтительно HTTP-сервисы или OData) позволит создать стабильную и быструю систему синхронизации между локальными решениями и облачными базами во Фреше.

← На главную