Информации о способах интеграции 1С с внешним миров в сети достаточно. Данная статья не претендует на детальное описание каждого способа. Она предназначена для того, чтобы быстро просмотреть все возможные на текущий момент альтернативы, сориентироваться и принять решение.
Введение
Заметим сразу, что мы не будем здесь рассматривать случаи интеграции 1С-1С. Это тема отдельного разговора. Нас будет интересовать именно связь с внешними по отношению к 1С приложениями, базами, системами.
Есть один важный момент, о котором следует помнить, планируя интеграцию 1С с какой-нибудь внешней системой. Интеграция может быть построена по одному из трех сценариев
интеграция на стороне 1С
интеграция на стороне внешней системы
обоюдная интеграция
Интеграция на стороне внешней системы имеет одно ограничение. Лицензионное соглашение с 1С запрещает работать с их базой напрямую. Это связано с тем, что в общем случае для каждого пользователя, работающего с 1С требуется приобретать лицензию. А работа с базой напрямую очевидным образом обходит это требование. Таким образом, если вы выбираете интеграцию на стороне внешней системы, один из возможных способов (но не все) будет вам недоступен.
Описанные выше три сценария интеграции будем считать основой. Из этой схемы можно сделать вывод, что интеграция может быть односторонней или двусторонней. Для односторонней интеграции (не важно, на какой стороне она будет делаться) потребуется специалист (или команда), который достаточно хорошо знаком с двумя системами. Найти такого бывает сложно, поэтому прибегают к обоюдной интеграции.
Будем иметь ввиду эту схему, чтобы не запутаться в большом количестве возможных вариантов. Начнем с односторонних интеграций.
COM
Component object model до сих пор очень популярна и широко используется для создания интеграции, как на стороне 1С, так и на стороне внешних систем. И это, несмотря на то, что работает только в среде Windows, что собственно и является основным недостатком данной модели. Работать с COM просто. Есть объекты, их свойства и методы. Если модель объектов вам знакома, то интеграция делается легко и приятно. 1С может выступать в этом процессе и как сервер, и как клиент.
WEB сервис / API
Сейчас WEB-сервисы набирают всю большую популярность, так как лишены принципиального недостатка COM. Интеграция с помощью WEB-сервисов не всегда бывает односторонней. Т.е. она может быть таковой, если на другой стороне есть хорошо проработанный WEB-сервис и то, что он нам предлагает, полностью отвечает нашим потребностям в интеграции. У многих систем сейчас есть более или менее нормальный API. С другой стороны, в типовых конфигурациях 1С также присутствует, например, WEB-сервис EnterpriseDataExchange. При желании, можно сделать интеграцию и на стороне 1С и на стороне внешне системы. Если в имеющемся в нашем распоряжении WEB сервисе чего-то не хватает, тогда интеграция плавно превращается в двустороннюю, подразумевающую доделку WEB сервиса или даже создание нового.
Прямая работа с базой
Самый прямолинейный, можно сказать, брутальный путь. Берем в руки SQL и производим все манипуляции во внешней базе данных напрямую. В 1С есть такой класс объектов, который называется внешний источник данных. До версии 8.3.5 внешние источники данных можно было использовать только для чтения. Начиная с версии 8.3.5, внешние источники данных можно использовать также для добавления, изменения, удаления записей. Можно организовать полноценную интеграцию на стороне 1С. Интеграцию на стороне внешней системы, как я уже говорил, не удастся сделать без нарушения лицензионного соглашения с 1С. Иногда в прямой работе с внешней базой используется технология COM, но это не то же самое, что интеграция на основе COM. Просто некоторые предпочитают использовать COM объект ADODB вместо внешнего источника данных.
Двусторонние интеграции
Ситуация, когда в нашем распоряжении есть специалист (команда), который хорошо знает 1С и специалист (команда), который хорошо знает внешнюю систему встречается гораздо чаще, чем ситуация, когда у нас есть специалист (команда), который на достаточном уровне владеет обоими системами. В этом случае прибегают к двусторонней интеграции.
Двусторонние интеграции отличаются тем, что здесь нам надо решать вопросы сериализации и структуризации (другими словами упаковки и распаковки) данных, а также вопросы транспорта данных. Это связано с тем, что данные на одной стороне сериализуются (пакуются), затем так или иначе передаются другой стороне, и там структуризуются (распаковываются).
Для решения вопросов сериализации/структуризации используют JSON или XML (два достойных конкурента, но JSON, похоже, побеждает). Также до сих пор достаточно распространен простецкий CSV. Далее с большим отрывом может идти всякая экзотика. Например, когда-то был очень популярен XBase, и в 1С есть поддержка этого формата данных.
Что касается транспорта, то здесь вариантов еще больше. Это может быть
прямой обмен файлами через общедоступный каталог
обмен файлами через электронную почту
обмен через FTP сервер
обмен по протоколу HTTP, читай те же WEB-сервисы
обмен через брокера сообщений типа RabbitMQ, что в последнее время становится все более и более популярным
Множество вариантов позволяет выбрать то, чем лучше всего владеют обе стороны, участвующие в разработке интеграции.
Заключение
У 1С, как и у почти любой системы сегодня, есть целый набор средств интеграции с внешним миром. Надеюсь мой короткий обзор поможет вам сориентироваться в нем.
А подробнее о том, что такое DevOps и зачем это в 1С, расскажут эксперты OTUS на бесплатном вебинаре. Также вы узнаете, что такое CI/CD - красивый термин или реальная помощь при разработке. И разберете набор инструментов и варианты их использования в 1С для организации процесса непрерывной поставки в 1С.