1С и .NET- Обзор средств интеграции

Материал из КинтВики
Перейти к: навигация, поиск


Статья

Источник: http://1c.1c-bitrix.ru/forum/messages/forum26/topic22576/message123788/#message123788

Автор: Талина Малиновская

Дата: 29.12.2009

Обзор средств интеграции

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

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

Кроме того, наблюдается выраженная тенденция снижения актуальности тяжелых многофункциональных приложений. Потребность бизнеса сегодня – организация единого информационного пространства компании (группы компаний) с возможностью доступа к необходимой информации с минимальными затратами времени и сил. И в настоящее время все чаще частью этого информационного пространства оказываются программные продукты 1С:Предприятие.

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

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

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

  • обмен через промежуточные файлы (.txt, .csv, .xml, .dbf);
  • выгрузка данных в промежуточное хранилище;
  • использование механизма OLE Automation;
  • использование COM-соединения;
  • публикация Web-сервисов;
  • использование Web-расширения для 1С;
  • прямой доступ к данным (Elisy.LinqTo1CSql.81);
  • Enterra .NET SDK.

В списке представлены не только средства, штатно включенные в платформу 1С, но также и самостоятельные продукты, поставляемые как фирмой 1С (Web-расширение), так и сторонними разработчиками (Enterra .NET SDK, Elisy.LinqTo1CSql.81).

Остановимся подробнее на каждом из указанных способов.

Обмен через промежуточные файлы (.txt, .csv, .xml, .dbf)

Здесь все достаточно ясно: в 1С формируется выборка данных, которая выгружается в файл обмена. Сформированный файл может использоваться другими программными средствами. Возможна и обратная ситуация – сформированный сторонней программой файл заданного формата загружается и обрабатывается 1С:Предприятие. Естественно, такого рода обмен потребует создания специальной обработки (либо правил обмена) для выгрузки/загрузки файла.

Минусы такого варианта очевидны – любые изменения в конфигурации 1С потребуют внесения изменений в процедуру экспорта/импорта файлов, в случае отложенной загрузки файла выгруженные данные могут устаревать, требуются дополнительные усилия для обеспечения защиты передаваемой информации.

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

Стоимость: средства работы с указанными файлами входят в поставку платформы 1С:Предприятие, дополнительных затрат не требуется.

Выгрузка данных в промежуточное хранилище

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

Использование OLE Automation, COM-соединений

Для их использования в Вашем приложении вполне традиционным образом создается Automation-сервер либо Com-соединение. Через Automation-сервер Вы получаете доступ к системным константам, заданным в конфигураторе объектам и переменным, объявленным в модуле приложения. В качестве методов Automation-сервера можно использовать системные процедуры и функции, а также процедуры и функции модуля приложения и общих модулей, объявленные с ключевым словом Экспорт.

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

Типичный недостаток данных способов – возможна низкая скорость при передаче больших массивов данных. В случае COM-соединения данная проблема может быть частично решена путем использования пула соединений.

Стоимость: данные средства входят в поставку платформы 1С:Предприятие, дополнительных затрат на их приобретение не требуется.

Web-сервисы

Платформа 1С:Предприятие реализует механизмы создания Web-сервисов, которые могут быть опубликованы на сервере IIS или Apache.

Создание Web-сервиса требует профессиональных знаний встроенного языка 1С (и принципов конфигурирования, конечно).

Стоимость: данные средства входят в поставку платформы 1С:Предприятие, дополнительных затрат на их приобретение не требуется.

Web-расширение

(http://v8.1c.ru/overview/Term_000000286.htm#1)

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

Web-расширение рассчитано на работу с ASP.NET и построено на использовании технологии Web Forms. Связь с информационной базой 1С:Предприятие осуществляется через ADO.

В вышедшей не так давно версии платформы 1С:Предприятие 8.2., набор функций, связанный с созданием веб-форм и веб-отчетов, реализован штатными средствами платформы.

Что же касается разработки .NET приложений, использующих функционал 1С:Предприятие, то здесь имеется ряд ограничений. Во-первых, Web-расширение рассчитано на работу только с ASP.NET, то есть не может использоваться для создания Windows-приложений. Во-вторых, реализация доступа к базе посредством ADO позволяет получить данные, но не дает возможности вызова методов объектов 1С:Предприятие, что существенно снижает сферу применимости продукта.

Таким образом, использование Web-расширения нецелесообразно для решения простых задач. Для решения же более серьезных задач (как например, реализация вызова хранимых процедур 1С из стороннего приложения) его средств может и не хватить. К тому же, очень похоже, что после объединения с Bitrix, а также выпуска платформы 8.2, фирма 1С не собирается развивать Web-расширение, так как последняя его версия рассчитана на работу с Microsoft .NET Framework 1.1, и никаких обновлений для данного продукта 1С не анонсирует.

Стоимость: 26 000 руб. (цена указана в соответствии с официальным прайс-листом фирмы 1С - http://v8.1c.ru/price/)

Прямой доступ к данным (технология Linq)

Данная технология предполагает доступ к данным 1С:Предприятие с помощью прямого запроса к SQL серверу. Основная сложность в случае прямого доступа – «специфический» подход 1С к именованию таблиц и полей в SQL базе, документация на стандарты которого фирмой 1С не распространяется. Кроме того, любое существенное обновление конфигурации может привести к изменению структуры базы данных, а значит к тому, что созданные напрямую запросы станут неработоспособными.

Способ частично разрешить проблемы прямого доступа предлагают создатели компонента Elisy .Net Bridge (назначение компонента – расширение функциональности 1С возможностями .NET, в частности, возможностью использовать классы .NET из 1С). В качестве решения предлагается обработка Elisy.LinqTo1CSql.81, генерирующая dbml-файл из 1С (http://www.richmedia.us/post/2009/10/...ator.aspx).

В качестве названий классов используются имена объектов из метаданных конфигурации 1С. Если имена таблиц и полей меняются вследствие обновления конфигурации, требуется заново сгенерировать dbml-файл, изменений в код классов программы при этом вносить не нужно.

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

Есть у метода и явные недостатки – всегда существует риск нарушить бизнес-логику прикладного решения 1С, используя метод прямого доступа для записи данных, что может привести к неработоспособности системы в целом. К тому же метод прямого доступа является спорным с точки зрения его соответствия лицензионной политике 1С. Точнее, лицензионное соглашение 1С явно указывает, что «нельзя обращаться к данным информационной базы напрямую, минуя уровень объектов работы с данными "1С:Предприятия" – например, при помощи средств СУБД или при помощи внешних компонент, которые реализуют прямой доступ к СУБД». Хотя в соответствии с Гражданским Кодексом «изготовителю базы данных, создание которой (включая обработку или представление соответствующих материалов) требует существенных финансовых, материальных, организационных или иных затрат, принадлежит исключительное право извлекать из базы данных материалы и осуществлять их последующее использование в любой форме и любым способом".

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

Стоимость: Самостоятельное использование прямого доступа – бесплатно (не считая возможных последствий за нарушение лицензионного соглашения 1С).

Использование Elisy.LinqTo1CSql.81 – бесплатно, в дальнейшем разработчиками планируется включить данное средство в состав компонента Elisy .Net Bridge, стоимость которого в настоящее время составляет 50 EUR за 1 рабочее место и 40 EUR за 2-9 рабочих мест (источник - http://infostart.ru/public/20035/). При этом нужно учитывать, что количество лицензий зависит от числа имеющихся рабочих мест 1С:Предприятие.


Enterra .NET SDK (http://www.enterra.ru/enterra-net-sdk-1s.html)

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

Плюсами данного способа являются возможность работы с 1С конфигурацией без необходмости использования средств разработки 1С, так как работа с данными осуществляется привычными средствами .NET (тем не менее, необходимо знакомство с объектной моделью 1С и понимание принципов бизнес-логики прикладного решения, с которым Вы собираетесь интегрировать свой продукт). Стоимость: 14 500 руб. Необходимое количество лицензий определяется числом разработчиков, одновременно работающих с компонентом.

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

  1. Если перед вами стоят довольно простые интеграционные задачи, и при этом Вы обладаете навыками конфигурирования 1С, то подходящим решением может стать обмен данными через промежуточные файлы, либо выгрузка в промежуточное хранилище.
  2. Для решения задач связанных с публикацией данных из 1С в web, имея при этом продвинутые навыки 1С-разработки, можно использовать механизм Web-сервисов.
  3. Если же Вас не привлекает необходимость овладения навыками конфигурирования 1С, то Вам больше подходит Enterra .NET SDK, позволяющая работать с 1С:Предприятие непосредственно из среды .NET, при этом предоставляя возможность решения очень широкого круга интеграционных задач.

Надеемся, данная статья окажется полезной для Вас и поможет принять наиболее эффективное решение в выборе способа интеграции Вашего программного продукта с 1С:Предприятие.