Способи інтеграції з 1С

Які найважливіші вимоги пред'являються до бізнес-додатків? Одними з найголовніших є наступні завдання:
  • Легкість зміни/адаптації логіки роботи програми до мінливих бізнес-завдань.
  • Легкість інтеграції з іншими додатками.
Те, як вирішується в 1С перша задача, було коротко описано в розділі «Кастомізація і підтримка» цієї статті; ми ще повернемося до цієї цікавої теми в одній з наступних статей. Сьогодні ж мова піде про другий завданню, про інтеграцію.

Інтеграційні завдання
Інтеграційні завдання можуть бути різними. Для рішення одних достатньо простого інтерактивного обміну даними – наприклад, для передачі в банк списку співробітників для оформлення зарплатних пластикових карт. Для більш складних завдань може бути необхідний повністю автоматизований обмін даними, можливо, зі зверненням до бізнес-логікою зовнішньої системи. Є завдання, що носять спеціалізований характер, начебто інтеграції із зовнішнім обладнанням (наприклад, торговим обладнанням, мобільними сканерами тощо) або з успадкованими або вузькоспеціалізованими системами (наприклад, з системами розпізнавання RFID-міток). Вкрай важливо для кожної задачі вибрати найбільш відповідний механізм інтеграції.

Можливості інтеграції з 1С
Існують різні підходи до реалізації інтеграції з програмами 1С, який з них вибрати – залежить від вимог завдання.
  1. Реалізація на основі механізмів інтеграції, наданих платформою, свого власного спеціалізованого API на стороні програми 1С (наприклад, набору Web — або HTTP-сервісів, які будуть викликати сторонні додатки для обміну даними з програмою 1С). Плюс цього підходу – стійкість API до зміни реалізації на стороні програми 1С. Особливість підходу — потрібно змінювати вихідний код типового рішення «1С», що потенційно може вимагати зусиль при злитті вихідних кодів при переході на нову версію конфігурації. У цьому випадку може прийти на допомогу нова прогресивна функціональність — розширення конфігурації. Розширення – це, по суті, механізм плагінів, який дозволяє створювати додатки і прикладних рішень, не змінюючи самих прикладних рішень. Винос інтеграційного API в розширення конфігурації дозволить уникнути складнощів при злитті конфігурацій при переході на нову версію типового рішення.
  2. Використання механізмів інтеграції платформи, які надають доступ ззовні до об'єктної моделі програми і не вимагають доопрацювання програми чи створення розширення. Плюс такого підходу – не потрібно змінювати програму 1С. Мінус – якщо додаток 1С було дороблено, то можуть знадобитися доопрацювання в интегрируемом додатку. Приклад такого підходу – використання для інтеграції протоколу OData, реалізованого на стороні платформи 1С: Підприємство (докладніше про нього нижче).
  3. Використання готових прикладних протоколів, реалізованих в типових рішеннях «1С». Багато типові рішення від 1С і партнерів реалізують на основі механізмів інтеграції, що надаються платформою, свої власні прикладні протоколи, орієнтовані на конкретні завдання. При використанні цих механізмів не вимагає написання коду на стороні програми 1С, т. до. ми користуємося штатними можливостями прикладного рішення. На стороні програми 1С нам потрібно лише виконати певні налаштування.
Механізми інтеграції в платформі 1С: Підприємство

Імпорт/експорт файлів

Припустимо, перед нами стоїть завдання двонаправленого обміну даними між програмою 1С та довільним додатком. Наприклад, нам потрібно синхронізувати список товарів (довідник Номенклатура) між додатком 1С і довільним додатком.
image
Для рішення такої задачі можна написати розширення, яке вивантажує довідник Номенклатура файл певного формату (текст, XML, JSON, ...) і вміє зчитувати цей формат.
У платформі реалізований механізм серіалізації прикладних об'єктів в XML як безпосередньо, через методи глобального контексту ЗаписатьXML/ЧтениеXML, так і з допомогою допоміжного об'єкта XDTO (XML Data Transfer Objects).
Будь-який об'єкт в системі 1С: Підприємство може бути серіалізовать в XML представлення і навпаки.
Ця функція поверне представлення об'єкта у вигляді XML:
Функція Объект_В_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. Товари будуть записані в масив; для різноманітності наведемо англомовний варіант синтаксису:
&OnServer
Procedure ExportJSONOnServer()
NewXDTOSerializer = XDTOSerializer;
NewJSONWriter = New JSONWriter();
NewJSONWriter.OpenFile("C:\Data\Номенклатура.json", "UTF-8");

NewJSONWriter.WriteStartObject();
NewJSONWriter.WritePropertyName("СправочникНоменклатура");
NewJSONWriter.WriteStartArray();

Selection = Catalogs.Номенклатура.Select(); 

While Selection.Next() Do 
NomenclatureObject = Selection.GetObject();

NewJSONWriter.WriteStartObject();

NewJSONWriter.WritePropertyName("Номенклатура");
NewXDTOSerializer.WriteJSON(NewJSONWriter, NomenclatureObject, XMLTypeAssignment.Implicit);

NewJSONWriter.WriteEndObject();
EndDo;

NewJSONWriter.WriteEndArray();
NewJSONWriter.WriteEndObject();
NewJSONWriter.Close(); 
EndProcedure

Далі залишиться тільки передати дані кінцевому споживачеві. Платформа 1С: Підприємство підтримує основні інтернет-протоколи HTTP, FTP, POP3, SMTP, IMAP, включаючи їх безпечні версії. Також для передачі даних можна використовувати HTTP та/або Web-сервіси.

HTTP — і веб-сервіси

image
Програми 1С можуть реалізовувати свої HTTP — і веб-сервіси, а також викликати HTTP — і веб-сервіси, створені сторонніми додатками.

REST інтерфейс і протокол OData

Починаючи з версії 8.3.5 платформа 1С: Підприємство може автоматично формувати REST інтерфейс для всього прикладного рішення. Будь-який об'єкт конфігурації (довідник, документ, регістр відомостей тощо) можна зробити доступним для отримання та модифікації даних через REST інтерфейс. В якості протоколу доступу платформа використовує протокол OData версії 3.0. Публікація сервісів OData виконується з меню Конфігуратора «Адміністрування -> Публікація на веб-сервері», прапорець «Публікувати стандартний інтерфейс OData» повинен бути позначений. Підтримуються формати atom/XML, JSON. Після того, як прикладне рішення опубліковано на веб-сервері, сторонні системи можуть звертатися до нього через REST інтерфейс за допомогою HTTP запитів. Для роботи з програмою 1С через протокол OData програмування на стороні 1С не потрібно.

Так, URL виду < — сервер>/<конфігурація>/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"/>
...

Додаючи до URL-у рядок «?$format=application/json, отримаємо вміст каталогу Номенклатура в форматі JSON (URL виду <сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура?$format=application/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 кВт, режими роботи: тепло/холод"
 
}, ...
 

Зовнішні джерела даних

image
У деяких випадках обмін даними через зовнішні джерела даних може виявитися оптимальним рішенням. Зовнішні джерела даних – це прикладний об'єкт конфігурації 1С, дозволяє взаємодіяти з будь ODBC сумісної базою даних як на читання, так і на запис. Для роботи через зовнішні джерела даних необхідно запрограмувати логіку обміну на стороні 1С.

Механізм обміну даними

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

Цей механізм активно використовується у впровадження 1С, і спектр завдань, що вирішуються за його допомогою, досить широкий. Це і обмін даними між програмами 1С, встановленими у філіях організації, і обмін між програмою 1С та сайтом інтернет-магазину, і обмін даними між серверним додатком 1С і мобільним клієнтом (створеним за допомогою мобільної платформи 1С: Підприємства), і багато іншого.

Одне з ключових понять в механізмі обміну даними – це план обміну. План обміну – це особливий тип об'єкта прикладного платформи 1С, яким визначено, зокрема, склад даних, які будуть брати участь в обміні (які саме довідники, документи, регістри тощо). План обміну містить також інформацію про учасників обміну (так званих вузлах обміну).
Друга складова механізму обміну даними – механізм реєстрації змін. Даний механізм автоматично відстежує зміни в системі даних, які повинні бути передані кінцевим споживачам у рамках плану обміну. З допомогою цього механізму платформа відстежує зміни, що відбулися з часу останньої синхронізації, і дозволяє мінімізувати обсяг даних, який передається в рамках чергового сеансу синхронізації.

Обмін даними відбувається за допомогою XML повідомлень певної структури. Повідомлення містить дані, які змінилися з часу останньої синхронізації з вузлом, та деяку службову інформацію. Структура повідомлень підтримує нумерацію повідомлень і дозволяє отримувати підтвердження від вузла-отримувача про прийом повідомлення. Таке підтвердження міститься в кожному повідомленні, прийшов від вузла-одержувача, у вигляді номера останнього прийнятого повідомлення. Нумерація повідомлень дозволяє зрозуміти платформі дані, які вже були успішно передані на вузол-одержувач, і уникнути повторної передачі, передаючи лише дані, які було змінено з часу прийому вузлом-відправником останнього повідомлення з квитанцією про отримані вузлом-отримувачем даних. При такій схемі роботи забезпечується гарантована доставка навіть при ненадійних каналах передачі і втрати повідомлень.

Зовнішні компоненти

У ряді випадків, при вирішенні завдань інтеграції доводиться стикатися зі специфічними вимогами, наприклад, протоколами взаємодії, форматами даних, робота з якими не передбачена в платформі 1С: Підприємство. Для такого кола завдань в платформі передбачений технологія зовнішніх компонент, яка дозволяє створювати динамічно підключаються модулі, що розширюють функціонал 1С: Підприємства.

Типовим прикладом завдання з подібними вимогами, може служити інтеграція прикладного рішення 1С з торговим обладнанням, починаючи від ваг і закінчуючи касовими апаратами і сканерами штрих-кодів. Зовнішні компоненти можуть бути підключені як на стороні сервера 1С: Підприємства, так і на клієнтської частини (включаючи, в тому числі, і веб-клієнт, а також наступну версію мобільної платформи 1С: Підприємства). Технологія зовнішніх компонент передбачає досить простий і зрозумілий програмний (C++) інтерфейс взаємодії компоненти з платформою 1С: Підприємство, який повинен реалізувати розробник.

Можливості, що відкриваються при використанні зовнішніх компонент, досить широкі. Можна реалізувати взаємодію по специфічному протоколу обміну даними із зовнішніми пристроями і системами, вбудувати специфічні алгоритми обробки даних та форматів даних і т. п.

Застарілі механізми інтеграції

У платформі доступні механізми інтеграції, які не рекомендується використовувати в нових рішеннях; вони залишені з міркувань зворотної сумісності, а також на випадок, якщо інша сторона не може працювати з більш сучасними протоколами. Один з них – робота з файлами формату DBF (підтримується у вбудованій мові за допомогою об'єкту XBase).

Інший застарілий механізм інтеграції – використання технології COM (доступно тільки на платформі Windows). Платформа 1С: Підприємство надає два способи інтеграції для Windows, що використовують технологію COM: Automation-сервер і Зовнішнє з'єднання. Вони дуже схожі, але одним з принципових відмінностей є те, що в разі Automation-сервера запускається повноцінне клієнтське додаток 1С: Підприємство 8, а в разі зовнішнього з'єднання запускається відносно невеликий внутрипроцессный COM-сервер. Тобто у випадку роботи через Automation сервер можна задіяти функціонал клієнтського додатка, виконувати дії, аналогічні інтерактивних дій користувача. При використанні зовнішнього з'єднання можна використовувати тільки функції бізнес-логіки, причому їх можна виконувати як на клієнтській стороні з'єднання, де створюється внуприпроцессный COM-сервер, так і здійснювати виклик бізнес-логіки на стороні сервера 1С: Підприємства.

Також технологію COM можна використовувати для звернення до зовнішніх систем з коду програми на платформі 1С: Підприємство. В даному випадку програма 1С виступає в якості COM-клієнта. Але слід нагадати, що дані механізми будуть працювати тільки в тому випадку, якщо сервер 1С функціонує в середовищі Windows.

Механізми інтеграції, реалізовані в типових конфігураціях

Формат EnterpriseData

У ряді конфігурацій 1С (список нижче) на основі описаного вище платформного механізму обміну даними реалізований готовий механізм обміну даними з зовнішніми додатками, що не вимагає зміни вихідного коду конфігурацій (підготовка до обміну даними робиться у налаштуваннях прикладних рішень):
  • «1C:ERP Управління підприємством 2.0»
  • «Комплексна автоматизація 2»
  • «Бухгалтерія підприємства», редакція 3.0
  • «Бухгалтерія підприємства КОРП», редакція 3.0
  • «Роздріб», редакція 2.0
  • «Управління торгівлею базова», редакція 11
  • «Управління торгівлею», редакція 11
Для обміну даними використовується формат EnterpriseData, заснований на XML. Формат є бізнес-орієнтованим – описані в ньому структури даних відповідають бізнес-сутностей (документами і елементів довідників), представленим в програмах 1С, наприклад: акт виконаних робіт, прибутковий касовий ордер, контрагент, номенклатура і т. п.

Обмін даними між програмою 1С та стороннім додатком може відбуватися:
  • через виділений файловий каталог
  • через каталог FTP
  • через веб-сервіс, розгорнутий на стороні програми 1С. Файл з даними передається як параметр веб-методів
  • через електронну пошту
У разі обміну через веб-сервіс стороннє додаток буде ініціювати сеанс обміну даними шляхом виклику відповідних веб-методів програми 1С. В інших випадках ініціатором сеансу обміну додаток 1С (шляхом поміщення файлу даних у відповідний каталог або відправкою файла з даними на налаштований поштова адреса).
Також на стороні 1С настроюється, з якою періодичністю буде відбуватися синхронізація (для варіантів з файловим обміном через каталог та електронну пошту):
  • за розкладом (з заданою періодичністю)
  • вручну; користувач повинен буде вручну запускати синхронізацію кожен раз, коли це йому потрібно
Квитування повідомлень
Програми 1С ведуть облік відправлених і отриманих повідомлень синхронізації і чекають того ж від сторонніх додатків. Це дозволяє задіяти механізм нумерації повідомлень, описаний вище в розділі «Механізм обміну даними».

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

Після отримання повідомлення-квитанції додаток 1С позначає всі зміни, передані в попередньому повідомленні, як успішно синхронізовані. Лише несинхронізовані зміни в бізнес-сутності (створення нових сутностей, зміна і видалення існуючих) будуть відправлені в зовнішнє додаток при наступному сеансі синхронізації.
image
При передачі даних від зовнішнього програми в програму 1С картина змінюється на зворотний. Зовнішнє додаток повинен заповнити секцію-квитанцію в XML файлі відповідним чином і помістити бізнес-дані для синхронізації зі свого боку у форматі EnterpriseData.
image
Спрощений обмін даними без квитування
Для випадків простої інтеграції, коли достатньо тільки передавати інформацію від стороннього додатка в додаток 1С і зворотної передачі даних з програми 1С в стороннє додаток не потрібно (наприклад, інтеграція онлайн-магазину, який передає інформацію про продажі в «1С: Бухгалтерії»), є спрощений варіант роботи через веб-сервіс (без квитування), що не вимагає налаштувань на стороні програми 1С.

Спеціалізовані інтеграційні рішення

Існує типове рішення «1С: Конвертація даних», яке використовує механізми платформи для конвертації і обміну даними між типовими конфігураціями 1С, але може бути також використано для інтеграції зі сторонніми додатками.

Інтеграція з банківськими рішеннями
Стандарт «Клієнт банк», розроблений фахівцями 1С більше 10 років тому, фактично став стандартом індустрії в Росії. Наступний крок у цьому напрямку – технологія DirectBank, що дозволяє відправляти платіжні документи в банк і одержувати виписки з банку безпосередньо з програм системи 1С: Підприємства натисненням однієї кнопки в програмі «1С»; при цьому не потрібно установка і запуск додаткових програм на клієнтський комп'ютер.

Є також стандарт обміну даними у зарплатних проектах.

Інше
Заслуговують згадки протокол обміну між системою 1С: Підприємство і сайтом, стандарт обміну комерційною інформацією CommerceML (розроблений спільно з Microsoft, Intel, Price.ru та іншими компаніями), стандарт обміну даними за операціями еквайрингу.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.