1С:Предприятие 8
Система программ

Формат EnterpriseData

Для облегчения интеграции с программными продуктами фирмы «1С» разработан формат обмена данными EnterpriseData. Формат основан на XML и является бизнес-ориентированным — описанные в нем структуры данных соответствуют бизнес-сущностям (документам и элементам справочников), представленным в программах «1С», например: акт выполненных работ, приходный кассовый ордер, контрагент, договор и т. п. Это делает формат интуитивно понятным и легким в использовании.

Формат EnterpriseData предназначен для обмена данными внутри компании (в том числе между разнородными и территориально удаленными информационными системами) и призван покрыть все сферы деятельности предприятия — финансы, производство, закупки и продажи, складские операции и т. п. 

Описание формата

Версия 1.0.1 формата включает в себя описание 94 типов бизнес-сущностей из различных областей бизнеса. Формат является расширяемым — фирма «1С» будет добавлять в него описание новых бизнес-сущностей и расширять существующие сущности новыми полями. Поддержка формата в продуктах фирмы «1С» обеспечивает совместимость снизу вверх — все программы сторонних производителей, обменивающихся данными в формате EnterpriseData с продуктами «1С», при выходе новых версий формата корректно продолжат работу.

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

Документ (акт выполненных работ) в программе «1С»
 
Тот же документ (акт выполненных работ) в формате EnterpriseData


Формат используется для синхронизации данных между программными продуктами самой фирмы «1С». На настоящий момент этот формат поддерживают следующие продукты:
  • «1С:ERP Управление предприятием 2.0»,
  • «Бухгалтерия предприятия», редакция 3.0,
  • «Бухгалтерия предприятия КОРП», редакция 3.0,
  • «Розница», редакция 2.0,
  • «Управление торговлей базовая», редакция 11,
  • «Управление торговлей», редакция 11,
  • «Зарплата и управление персоналом КОРП», редакция 3.
Возможный вариант обмена данными

    Обмен данными с программами «1С»

    Предварительная настройка на стороне «1С»

    Чтобы начать обмен данными в формате EnterpriseData между приложением «1С» и сторонним приложением, надо на стороне «1С» настроить синхронизацию данных. В ходе настройки указывается уникальный код приложения, с которым будет производиться обмен, а также по какому каналу будет происходить обмен данными. В настоящий момент доступны следующие опции:
    • веб-сервис,
    • файловый обмен через каталог,
    • файловый обмен через FTP,
    • обмен через электронную почту.

    В случае обмена через веб-сервис стороннее приложение будет инициировать сеанс обмена данными путем вызова соответствующих веб-методов приложения «1С». В остальных случаях инициатором сеанса обмена будет приложение «1С».

    Также на стороне «1С» настраивается, с какой периодичностью будет происходить синхронизация (для вариантов с файловым обменом через каталог и электронную почту):
    • по расписанию (с заданной периодичностью);
    • вручную; пользователь должен будет вручную запускать синхронизацию каждый раз, когда это ему потребуется.

    Формат файлов обмена

    В ходе синхронизации приложения «1С» и сторонние приложения обмениваются сообщениями — XML-файлами определенной структуры. Эти файлы состоят из двух секций — <Header> и <Body>. Секция <Header> содержит сообщение-квитанцию <Confirmation> (о ней ниже), а <Body> — информацию об измененных бизнес-сущностях в формате EnterpriseData.

    Пример сообщения

    Секция <Confirmation> (квитанция) содержит служебную информацию (для простоты предположим, что сообщение идет из приложения «1С» в стороннее приложение):
    1. ExchangePlan. Строка, определяющая порядок обмена данными на стороне «1С». Для обмена с внешними приложениями всегда равна значению «СинхронизацияДанныхЧерезУниверсальныйФормат», для обмена между приложениями «1С» может настраиваться. Подробности для настройки при обмене между приложениями «1С» — в документации «1С».
    2. To. Уникальный код приложения, с которым осуществляется обмен (см. Предварительная настройка на стороне «1С»).
    3. From. Код приложения — источника данных. В случае если это приложение «1С», код по умолчанию будет заполнен автоматически (УП для «1С: Управление предприятием», БП для «1С: Бухгалтерия предприятия» и т. д.), но его значение можно будет изменить вручную в мастере настройки.
    4. MessageNo. Номер последнего сообщения, отправленного из «1С» в приложение.
    5. ReceivedNo. Номер последнего сообщения, принятого «1С» от приложения

    Если сообщение идет в обратном направлении — от стороннего приложения в приложение «1С», стороннее приложение должно соответствующим образом заполнить секцию <Confirmation>.

    Приложения «1С» ведут учет отправленных и полученных сообщений синхронизации и ожидают того же от сторонних приложений. Для чего это делается — изложено ниже.

    Механизм квитирования

    Приложения «1С» в ходе синхронизации передают только информацию об изменениях, произошедших с бизнес-сущностями со времени последней синхронизации (чтобы минимизировать объем передаваемой информации). При первой синхронизации приложение «1С» выгрузит все бизнес-сущности в формате EnterpriseData в XML-файл (поскольку все они являются «новыми» для внешнего приложения). Следующий шаг за сторонним приложением –оно должно обработать информацию из XML-файла и при следующем сеансе синхронизации поместить в секцию <Confirmation> информацию, что сообщение от «1С» за определенным номером успешно принято (поместить в поле ReceivedNo номер полученного от «1С» сообщения). Сообщение-квитанция является для приложения «1С» сигналом, что все бизнес-сущности успешно обработаны внешним приложением и информацию о них передавать больше не нужно. Помимо квитанции XML-файл от стороннего приложения также может содержать данные для синхронизации (в секции <Body>).

    Формат EnterpriseData

    После получения сообщения-квитанции приложение «1С» помечает все изменения, переданные в предыдущем сообщении, как успешно синхронизированные. Лишь несинхронизированные изменения в бизнес-сущностях (создание новых, изменение и удаление существующих) будут отправлены во внешнее приложение при следующем сеансе синхронизации.

    При передаче данных от внешнего приложения в приложение «1С» картина меняется на обратную. Приложение должно заполнить секцию <Confirmation> соответствующим образом, а в секцию <Body> поместить бизнес-данные для синхронизации в формате EnterpriseData.

    Приложение «1С» после обработки файла сформирует XML-файл, который будет содержать сообщение-квитанцию и новые данные для синхронизации со стороны «1С» (если такие есть со времени последнего сеанса синхронизации).

    Формат EnterpriseData

    Обмен через веб-сервис

    При использовании веб-сервиса инициатором сеанса обмена выступает стороннее приложение. Для получения данных от приложения «1С» ему нужно вызвать веб-метод GetData, передав в качестве параметров метода уникальный код приложения, введенный на этапе настройки. В ответ «1С» вернет файл, содержащий данные о бизнес-сущностях в формате EnterpriseData[1]. Формат файла описан выше.

    Чтобы передать данные в «1С», приложение должно вызвать веб-метод PutData, передав как параметры уникальный код приложения и заархивированный файл в описанном выше формате.

    Обмен через другие каналы

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

    Заключение

    Набор сценариев интеграции с использованием формата EnterpriseData широк. Это и обмен данными в пределах одной организации, например, передача данных в «1С: Бухгалтерию» из других приложений для ведения целостного учета, или обмен данными между центральным офисом и удаленными складами. Подходит формат и для обмена данными между разными организациями.

    В планах «1С» — дальнейшее развитие формата EnterpriseData и его поддержка во все большем количестве приложений, разрабатываемых фирмой.

    Ресурсы

    Информация о формате в Методической поддержке для разработчиков и администраторов «1С: Предприятия 8»

    [1] В реальности ситуация чуть сложнее. Поскольку размер передаваемой через веб-сервисы информации ограничен, приложению нужно будет получать от «1С» файл в виде архива, разделенного на части. В случае передачи файла от стороннего приложения в приложение «1С» приложению нужно будет заархивировать файл с данными и передать архив по частям, используя методы веб-сервиса.