Интеграция с 1С: основные способы
Главные требования, которые предъявляют клиенты к бизнес-приложению, – возможность быстро и просто адаптировать функциональность продукта под потребности компании и постоянно меняющиеся бизнес-задачи, а также способность легко интегрироваться с другими приложениями. В статье коснемся вопросов интеграции продуктов 1С.
Интеграционные задачи
Интеграционные задачи могут быть разного уровня сложности. Примером несложной задачи может быть передача в банк списка сотрудников, которым нужно открыть счет. Для этого достаточно осуществить интерактивный обмен данными. Решение более сложных задач потребует автоматизированный обмен данными. В каждой области бизнеса есть свои специализированные задачи, например, установка связи с внешними устройствами (Bluetooth-принтер для печати чеков, торговое оборудование и др.). Поэтому очень важно выбрать правильный способ интеграции.
Возможности интеграции с 1С
Компания «1С» предоставила несколько способов интеграции со своими продуктами. Выбор одного из них зависит от того, какая перед пользователем поставлена задача.
1. Механизмы интеграции дают возможность реализовать собственный API на стороне приложения 1С. Преимуществом данного метода является стабильность функционирования API, даже если меняется способ реализации в приложении 1С. Но механизм интеграции требует доработки исходного кода продукта 1С, а это влечет за собой трудности при последующем обновлении конфигурации. Для решения этой проблемы были созданы расширения – уникальный механизм, позволяющий надстраивать изменения, не затрагивая конфигурацию. API можно вынести в расширения, тем самым избежав возможных проблем при слиянии конфигураций во время установки новой версии приложения.
2. Механизмы интеграции предоставляют возможность доступа снаружи к модели. При использовании этого метода не требуется создание расширения или изменение конфигурации, что является неоспоримым преимуществом. Однако есть и недостаток: если в конфигурацию были внесены изменения, то придется вносить доработки и в интегрируемое приложение.
3. Возможность использования прикладных протоколов, которые поставляются с прикладными решениями. Некоторые решения от компании «1С» свои прикладные протоколы, помогающие решать специализированные задачи, реализуют именно с помощью механизмов интеграции. Сделать это несложно, так как достаточно использовать типовые возможности конфигурации, без написания кода.
Механизмы интеграции
Импортирование/экспортирование файлов
Поставим задачу: осуществить двунаправленный обмен данными, например, синхронизация списка товаров. Участники процесса обмена – решение 1С и произвольное приложение.
Решение: написание расширение, способное выгрузить справочник в файл, имеющий определенный формат, и уметь определять этот формат. В платформу заложен механизм сериализации файлов в XML. Сделать это можно, используя метод глобального контекста или посредством объекта XDTO. Метод сериализации можно применять как для импорта, так и для экспорта файлов.
Функция Объект_В_XML(Объект)
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, Объект);
Возврат ЗаписьXML.Закрыть();
КонецФункции
Пример экспорта справочника в XML, используя XDTO:
&НаСервере
Процедура ЭкспортXMLНаСервере()
НовыйСериализаторXDTO = СериализаторXDTO;
НоваяЗаписьXML = Новый ЗаписьXML();
НоваяЗаписьXML.ОткрытьФайл("C:\Data\Номенклатура.xml", "UTF-8");
НоваяЗаписьXML.ЗаписатьОбъявлениеXML();
НоваяЗаписьXML.ЗаписатьНачалоЭлемента("СправочникНоменклатура");
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
ОбъектНоменклатура = Выборка.ПолучитьОбъект();
НовыйСериализаторXDTO.ЗаписатьXML(НоваяЗаписьXML, ОбъектНоменклатура, НазначениеТипаXML.Явное);
КонецЦикла;
НоваяЗаписьXML.ЗаписатьКонецЭлемента();
НоваяЗаписьXML.Закрыть();
КонецПроцедуры
После небольшого изменения кода справочник отправляется в JSON. Товары записываются в массив, вариант синтаксиса – англоязычный:
&AtServer
Procedure ExportJSONOnServer()
NewXDTOSerializer = XDTOSerializer;
NewJSONWriter = New JSONWriter();
NewJSONWriter.OpenFile("C:\Data\Номенклатура.json", "UTF-8");
NewJSONWriter.WriteStartObject();
NewJSONWriter.WritePropertyName("СправочникНоменклатура");
NewJSONWriter.WriteStartArray();
NomenclatureObject = Selection.GetObject();
NewJSONWriter.WriteStartObject();
NewJSONWriter.WritePropertyName("Номенклатура");NomenclatureObject, XMLTypeAssignment.Implicit);
NewJSONWriter.WriteEndObject();
EndDo;
NewJSONWriter.WriteEndObject();
NewJSONWriter.Close();
Все, что остается, – передача данных заинтересованному лицу. Для этого можно использовать интернет-протоколы, которые поддерживает платформа: HTTP, SMTP и другие. Кроме этого, передача данных организуется посредством HTTP и Web-сервисов.
Протокол OData и интерфейс REST
В платформу 1С:Предприятие (с версии 8.3.5) встроена функция автоматического формирования REST интерфейса. Благодаря REST интерфейсу объект из конфигурации становится доступным для получения и редактирования. Протоколом доступ становится OData. Публикация OData осуществляется следующим образом: «Администрирование -> Публикация на веб-сервере». Не забудьте пометить флажок Поддерживаются форматы atom/XML и JSON. После публикации прикладного приложения на веб-сервере к ним открыт доступ для сторонних систем. Для этого достаточно воспользоваться через REST интерфейс HTTP-запросом.
Объясним на примере. Посредством URL http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура вы получите данные каталога в XML-формате – элементы entry:
<entry>
<id>http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')</id>
<category term="StandardODATA.Catalog_Номенклатура" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<title type="text"/>
<updated>2016-06-06T16:42:17</updated>
<author/>
<summary/>
<link rel="edit" href="Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')" title="edit-link"/>
<content type="application/xml">
<m:properties xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<d:Ref_Key>35d1f6e4-289b-11e6-8ba4-e03f49b16074</d:Ref_Key>
<d:DataVersion>AAAAAgAAAAA=</d:DataVersion>
<d:DeletionMark>false</d:DeletionMark>
<d:Code>000000001</d:Code>
<d:Description>Кондиционер Mitsubishi</d:Description>
<d:Описание>Мощность 2,5 кВт, режимы работы: тепло/холод</d:Описание>
</m:properties>
</content>
</entry>
<entry>
<id>http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')</id>
<category term="StandardODATA.Catalog_Номенклатура" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
...
Если добавить «?$format=application/json», данные отразятся в формате JSON:
{
"odata.metadata": "http://server/Config/odata/standard.odata/$metadata#Catalog_Номенклатура",
"value": [{
"Ref_Key": "35d1f6e4-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "Кондиционер Mitsubishi",
"Описание": "Мощность 2,5 кВт, режимы работы: тепло/холод"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Кондиционер Daikin",
"Описание": "Мощность 3 кВт, режимы работы: тепло/холод"
}, …
Источники данных
Одним из механизмов обмена являются внешние источники данных (ВИД). Посредством этого объекта конфигурации можно осуществлять обмен с ODBC-совместимой БД. ВИД можно найти в одной из операционных систем – Windows или Linux.
Механизм обмена данными
Территориально отдаленные друг от друга отделы или филиалы одной компании могут обмениваться данными, используя механизм обмена данными. Этим же способом пользуются для обмена данными с системами, которые не являются прикладными решениями 1С: Предприятие.
Спектр выполняемых механизмом задач широк. Кроме обмена данными между приложениями, расположенными в разных офисах компании, можно осуществлять обмен данными с интернет-магазином или мобильным приложением.
Одно из основных понятий в МОД – план обмена. Он представляет собой специфичный тип объекта, который определяет состав обмениваемых данных (справочники, документы и т.д.). В плане обмена содержится и информация о том, какие узлы участвовали в обмене. Еще одна важная составляющая МОД – механизм, регистрирующий изменения. Его функция – автоматическое отслеживание изменений данных, что будут переданы пользователям во время обмена данными. Кроме этого, механизм регистрирует изменения, которые были сделаны во время последней синхронизации, тем самым минимизируя количество данных, которые нужно передать при следующей синхронизации.
Механизм осуществляет обмен данными посредством XML-сообщений. В этих сообщениях находится новая информация, которая была создана после последней синхронизации, а также служебные данные. От узла-получателя приходит подтверждение о получении сообщения. Это возможно благодаря функции нумерации сообщений. Нумерация сообщений позволяет избежать такой неприятной ситуации, как повторная передача данных, ведь передаются лишь данные, измененные или созданные после того, как узел-отправитель получил сообщение от узла-получателя о полученных данных. Нумерация сообщений гарантирует надежную передачу информации, даже если сообщение было потеряно или не отправлено.
Внешние компоненты
Среди задач интеграции встречаются непростые, например, формат или передача данных, с которыми не предусмотрена работа на платформе 1С: Предприятие. Для решения таких задач существует технология внешних компонентов. Она дает возможность организовать подключаемые модули, которые расширяют возможности платформы.
Приведем пример сложной интеграции. Предприятию, занимающемуся розничной торговлей нужно интегрировать прикладное приложение 1С с торговым оборудованием: весами, сканером штрих-кодов и т.д. В этом случае внешние компоненты подключаются и к серверу 1С: Предприятие, и к серверу на стороне клиента. Не стоит беспокоиться об излишней сложности технологии внешних компонентов: интерфейс взаимодействия компонентов и платформы достаточно прост и понятен.
Технология открывает широкие возможности для нетипичного взаимодействия платформы 1С с внешними системами и устройствами, позволяет реализовать нестандартные алгоритмы обработки данных и т.д.
Архаичные механизмы интеграции
Компания «1С» постоянно усовершенствует свои продукты, поэтому многие ранее популярные и используемые технологии на данный момент безнадежно устарели. Но пока их функционирование не прекращается, так как не исключены случаи несовместимости стороны клиента с более новыми протоколами.
Один из таких методов – интеграция с файлами DBF. Второй – технология COM, которая поддерживается ОС Windows. Есть два способа интеграции, использующие COM. Они практически не отличаются друг от друга, за исключением того, что Automation-сервер запускает приложение 1С: Предприятие, а при использовании внешнего соединения запускается лишь COM-сервер.
Кроме этого, COM-технология используется для того, чтобы из кода приложения обратиться к внешним системам, т.е. 1С в этом случае играет роль СОМ-клиента. Но возможно это, еще раз напомним, только на ОС Windows.
Интеграция в типовых конфигурациях
Формат EnterpriseData
EnterpriseData – механизм интеграции с внешними приложениями. Несомненным достоинством этого механизма является то, что он не требует менять исходный код конфигурации. Реализуется EnterpriseData во многих прикладных решениях от компании «1С» («1C:ERP Управление предприятием 2.0», «Комплексная автоматизация 2» и т.д.).
Формат EnterpriseData, используемый при интеграции, основан на XML. Данный формат ориентирован на бизнес-приложения, соответственно, его структуры данных совпадают с сущностями программ 1С (контрагент, акты выполненных работ и др.).
Способы обмена данными разнообразны: посредством файлового каталога, каталога FTP, веб-сервиса, электронной почты.
Остановимся подробнее на обмене данными посредством веб-сервиса. Стороннее приложение потребует интеграцию, вызвав соответствующий веб-метод приложения 1С. Во всех остальных случаях интеграция будет инициирована приложением 1С. Для этого файл с данными помещается в нужный каталог или отправляется на почтовый ящик. В этом случае также со стороны 1С осуществляется настройка периодичности синхронизации: либо автоматически по расписанию, либо вручную тогда, когда это потребуется пользователю.
Квитирование сообщений
В статье мы уже упоминали о том, что в приложениях 1С ведется учет всех сообщений, как отправленных, так и полученных. В этом случае задействуется механизм нумерации сообщений.
Расскажем подробнее. Во время обмена данными 1С передаст лишь те данные, которые были изменены или появились после последней синхронизации. То есть при первой синхронизации будут выгружены все бизнес-сущности, так как все они будут новыми для «принимающего» приложения. Формат переданных данных –EnterpriseData, файла – XML. Приложение обработает полученную информацию и отправит при следующей синхронизации 1С сообщение, что данные были успешно приняты. В 1С эта информация будет сигналом о том, что больше отправлять эти данные не нужно. Также XML-файл может содержать какую-либо информацию со стороны приложения.
Таким образом, приложение 1С при следующей синхронизации отправит лишь те данные, которые будут либо созданы, либо изменены за промежуток времени между синхронизациями.
Теперь посмотрим, как осуществляется процесс передачи данных с другой стороны. Стороннее приложение заполняет секцию-квитанцию в XML-файле, туда же помещает данные, подготовленные для передачи, в формате EnterpriseData.
Обмен данными без квитирования
При простой интеграции информация передается от постороннего приложения к приложению 1С. Обмен осуществляется быстро и просто: посредством веб-сервера. Несомненным преимуществом простой интеграции является то, что при ней не нужны дополнительные настройки приложения 1С. Примером обмена данными без квитирования может быть интеграция приложения 1С с интернет-магазином.
Специальные интеграционные решения
Одно из специализированных решений «1С: Конвертация данных» используется и для конвертации между приложениями 1С, и для обмена данными со сторонними приложениями.
Обмен данными с банковскими решениями
Приложение для интеграции с банковскими бизнес-приложениями была разработана давно – это «Клиент-банк». С новой технологией 1С DirectBank можно отправлять документы в банк одним нажатием кнопки прямо из «1С: Предприятие». Для этого не понадобится помощь или установка дополнительных программ или приложений.