5 ситуаций, когда в экосистеме 1C нужны веб-сервисы

24.03.20

Интеграция - WEB-интеграция

В 1С существует немало возможностей для обмена данными, включая файловый обмен и COM Connector. В этой статье я расскажу, когда при интеграции 1С не обойтись без веб-сервисов, а также в чем плюсы использования SOAP или, наоборот, HTTP. Кроме этого речь пойдет про рабочие инструменты и примеры использования веб-сервисов. Веб-сервисы — достаточно простая штука. Существует множество инструкций по их созданию, так что запустить свой сервис может почти каждый. Сложности возникают тогда, когда веб-сервисы начинают куда-то встраивать, например, в системы 1С.

Зачем встраивать веб-сервисы в 1С

Как разработчик 1С я могу назвать 5 ситуаций, когда возникает реальная потребность в использовании веб-сервисов:

Источник и получатель данных удалены друг от друга или, говоря другими словами, существуют ограничение на файловый обмен/использование общих файловых хранилищ. Конечно, в этом случае можно работать с облачными хранилищами, например, Яндекс.Диском, но такой подход не всегда удобен.

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

В обмене данными участвуют разнородные платформы — это могут быть разные ОС, языки программирования, различный софт. Организовать обмен данными между ними без COM-Connector, библиотек интеграции или веб-сервисов будет очень сложно.

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

Когда нет возможности использовать COM Connector, приходится заниматься веб-сервисами, например, если у нас больше 1 базы данных, и все они используют разную версию платформы. Придется придумывать способ динамически актуализировать версию COM Connector’а. Для подобных ситуаций существуют скрипты, но их реализация требует грамотного подхода и комплексной поддержки. К тому же COM Connector позволяет запускать вообще любые скрипты, и он порой оказывается запрещен именно по соображениям информационной безопасности.

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

В случае, когда речь идет об интеграции с разнородными системами, веб-сервисы помогают избежать трудоемких доработок. Например, стандартная выгрузка 1С может хорошо подойти для сайта, а также для клиентов под Windows и Linux. Но стоит добавить в эту экосистему Android, придется все переписывать и делать заново. Чтобы такое не происходило, я стараюсь делать такие интеграции через HTTP.

 

Нюансы создания веб-сервисов для 1С

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

Для SOAP характерны более тяжелые сообщения. При обращении к веб-сервису происходит выгрузка всего содержимого, и пользователь получает пакет с мета-данными и описанием самого сервиса. И если сервис достаточно тяжелый, все это может занять значительное время — вплоть до нескольких секунд.

Не все платформы поддерживают SOAP и XML. Например, если у вас был опыт работы с Android, и вы пробовали настроить обмен сообщениями с Android-приложениями, то знаете, что у них нет привычных для 1С средств разбора XML и SOAP. Можно, конечно, перейти на Json, но даже это не решает всех вопросов, одновременно создавая дополнительные сложности интеграции.

Наконец, не все платформы имеют одинаковый взгляд на формат сообщений в рамках обмена. Даже четкое описание SOAP-сервиса, но с нехарактерной для 1С структурой, потребует дополнительных усилий при интеграции: в таком случае приходится парсить XML внутри конфигурации, а это — трудоемкая задача.

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

Впрочем, HTTP — тоже не панацея. И если в описании SOAP-сервиса содержится все возможное — полный набор данных и метаданных, процедуры, которые он выполняет, характеристики входных данных и их форматов, у HTTP-сервисов такого нет. Ресурсно-ориентированная архитектура подразумевает наличие одной только ссылки. Как результат — отсутствие автоматизации навигации среди ресурсов.

Как следствие, для HTTP-сервисов возникает необходимость в более подробной документации. И те, кто когда-нибудь получал API, документированную на бумажке или недокументированную вовсе, не понаслышке знают об этой проблеме.

 

Форматы вызовов

Вот так выглядит простейший вызов SOAP-сервиса. В нем происходит запрос списка Items.

Первым запросом GET происходит запрос описания сервиса и его метаданных. Вторым запросом POST — всего остального.

В системах, которые требуют быстрого отклика, такая схема работы становится серьезным ограничением. Тут лучше выбрать HTTP-сервис, для которого необходима передача намного меньшего объема данных.

 

Инструменты для работы с веб-сервисами

Для работы с веб-сервисами я использую общие инструменты тестирования и отладки. В частности, очень полезны оказываются интерфейсы отправки запросов, такие как Postman, SoapUI, Advanced REST Client. На мой взгляд, Postman — один из самых развитых инструментов этой категории. Неопытный разработчик может готовить обработку, которая запускается из 1С и вызывает сервис. Но рано или поздно станет очевидно, что тестировать с помощью такой структуры, а потом — готовить документацию — оказывается сложно.

Второй обязательный инструмент экосистемы — Proxy-серверы для веб-отладки. Я использую Fiddler, Charles, mitmproxy. Они нужны в тех случаях, если нет полной уверенности в том, как идет обмен данными между системами. С помощью Proxy разработчик может увидеть, что конкретно передает или получает сервис. Proxy помогает выяснить, почему сервис не работает, а в некоторых случаях — почему он, несмотря ни на что, работает?

Proxy-сервер отслеживает все сообщения, которые проходят через HTTP-порты, а при помощи Fiddler с правильным сертификатом можно анализировать даже HTTPs-трафик.

Есть также утилиты, специально созданные для интеграции HTTP-сервисов в экосистеме 1С. В практике Neti активно используется консоль HTTP-запросов (//infostart.ru/public/835540/). Она предоставляет функции, во многом аналогичные Postman (кроме, пожалуй, документации), а также обладает своими уникальными фичами. В консоли можно делать вызов HTTP-сервиса, но при этом генерировать код вызова для приложений 1С (когда в Postman можно работать только с Java, C++ и другими универсальными языками программирования).

Внимания заслуживает и библиотека 1CHTTP-Connector (//infostart.ru/public/709325/). Она предлагает прекрасный способ вызова сторонних HTTP-сервисов. При работе над интеграцией, в этой библиотеке можно найти нужные методы и обработчики и без лишних затрат времени реализовать нужный функционал, а также проанализировать ответы сторонних сервисов.

 

Документация

При работе с веб-сервисами нужно помнить, что документация — это основная проблема при разработке API. Прежде чем сделать недокументированный сервис, подумайте о других людях…или о себе самом, когда через несколько месяцев будете пытаться вспомнить, что было запрограммировано в этом сервисе.

Простой способ генерации документации предлагает Postman. Прямо в этом ПО можно сформировать все базовые описания. Общедоступная ссылка, которую сервис дает на выходе, будет вести на страницу вашего сервиса со всеми доступными методами взаимодействия и примерами ответов. Там же можно добавить дополнительное описание, уже от себя, назначить порядок вызовов. При работе с таким API, любой пользователь сможет просто Open in Postman и сразу приступить к тестированию и интеграции.

Swagger — это еще одна альтернативная система для работы с документацией. Он чуть сложнее чем Postman, но зато совмещает в себе сервисы документирования и тестирования. В Swagger тоже можно получить готовую веб-страницу с описанием сервиса, включая методы, форматы ответов и запросов. Но при этом прямо на странице Swagger можно производить отладку.

 

Кейсы интеграции API

Я использую веб-сервисы в основном для интеграции разнородных систем и удаленного обмена данными с БД 1С. Из практики Neti можно привести несколько примеров подобных проектов.

Печать чеков с нескольких терминалов или с удаленного терминала. Часто компаниям не хочется или невыгодно покупать несколько принтеров чеков или кассовых терминалов. А в случае с АТОЛ печатать их можно с использованием через веб-сервер с поддержкой Json (такая фича есть в последних драйверах). Поэтому мы можем отказаться от СОМ-библиотек в 1С и печатать, используя разные сессии с разных машин. Таким методом могут пользоваться и Интернет-магазины: веб-сервисы позволяют использовать при оформлении заказа через Интернет ту же кассу, которая стоит в обычном оффлайн магазине вместо покупки или аренды фискального регистратора.

Онлайн продажа цифровых продуктов. В моей практике был случай, когда у компании имелась база 1С, и в ней хранились ключи к ПО. Заказчику хотелось сделать так, чтобы база стала центром процессинга, и продажа ключей происходила из нее практически напрямую. Наша команда сделала сайт, подключила 1С и некоторые другие платформы. И теперь, когда клиент делает покупку на сайте, он получает сразу весь комплект документов. А для партнеров появилась возможность встраивать функционал в 1С, чтобы мгновенно получать ключи — сразу после оплаты заказа. Без использования веб-сервисов это, наверное, было бы невозможно, например, как и интеграция 1С с мобильными приложениями.

Поддержка американского налогового учета. Веб-сервисы позволяют настроить получение данных из бесчисленного количества источников. Например, недавно разработчики Neti добавили функцию налогового учета по американским стандартам в 1С:Drive. Веб-сервисы помогли нам организовать поставки данных о налогах и позволили учитывать индивидуальные ставки на каждый продукт и для каждой территории. Это серьезное отличие системы налогообложения в США от России и Европы, и ее реализация в 1С без веб-сервисов была бы крайне проблематична.

 

Интеграция однородных систем

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

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

 

Где узнать больше о разработке веб-сервисов

Приступить к работе с веб-сервисами можно, начав с чтения  ИТС. Обратить внимание стоит на такие главы, как «Механизмы интернет-сервисов», где подробно рассматривается процедура разработки.

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

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

И, конечно, на Infostart.ru каждый месяц на портале появляются десятки статей о том, как создавать и развивать веб-сервисы. Они могут стать хорошим подспорьем, с одной только оговоркой — в большинстве случаев о документировании придется заботиться самостоятельно.

веб-сервисы обмен интеграция Web-сервисы HTTP-сервисы SOAP HTTP XML

См. также

WEB-интеграция Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Функциональное решение для торговли на всех популярных маркетплейсах. Работает со схемами FBO и FBS. Простое в использовании и установке, не вносит изменения в код программы. Существенно упрощает работу с товарным ассортиментом, обработку заказов с площадок, работу с поставками, а также ведение аналитики по продажам и остаткам.

72000 руб.

19.07.2024    1438    52    0    

3

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    17789    49    50    

29

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14171    41    8    

16

Обмен с ГосИС Мастера заполнения WEB-интеграция Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет Оперативный учет Управляемые формы 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Универсальное расширение конфигурации для автоматической загрузки и заполнения реквизитов контрагентов (партнеров) из ОГРН для 1С:ERP Управление предприятием 2 (1С:ERP Управление предприятием 2, редакция 2.4), 1С:ERP Управление предприятием 2 (1С:ERP Управление предприятием 2, редакция 2.2), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.5), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.4), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.3), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.2), 1С:Комплексная автоматизация 8 (1С:Комплексная автоматизация, редакция 2.4), 1С:Комплексная автоматизация 8 (1С:Комплексная автоматизация, редакция 2.2), 1С:Комплексная автоматизация 8 (1С:Комплексная автоматизация, редакция 2.0) и 1С:Бухгалтерия 8 (Бухгалтерия предприятия, редакция 3.0).

3900 руб.

08.11.2017    63157    404    295    

72

ККМ WEB-интеграция Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Универсальный драйвер для фискализации чеков для сервиса Бизнес.РУ. Чеки (https://online-check.business.ru/). Работает с любой кассой, подключенной к сервису, в том числе и без физической кассы (Аренда облачной ККТ в датацентре). Принцип работы аналогичен наличию физической кассы, подключенной к рабочему месту 1С. Фискализация выполняется с любого рабочего места через интернет. Нет ограничений на количество рабочих мест, касс, компьютеров. Поддерживает печать с нескольких рабочих мест на одну кассу. Работает в любой операционной системе (Windows, Linux) и в любом клиенте (Тонкий, Толстый, Web, Мобильный клиент).

6000 руб.

03.06.2021    13873    12    0    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. pm74 203 24.03.20 11:35 Сейчас в теме
в моем случае пригодились когда нужно было быстро накодить веб приложение которое одну часть данных берет в 1с, а другую в файловой системе
2. dsdred 3536 24.03.20 13:50 Сейчас в теме
Много полезной информации можно найти в книге «Профессиональная разработка в среде 1С». В ней подробно рассмотрены различные механизмы интеграции, а также возможности OData с пошаговой инструкцией по созданию HTTP-сервисов

Как вариант глянуть вот этот цикл статей
https://infostart.ru/public/842751/
user774630; pm74; +2 Ответить
3. strek_ivan 82 24.03.20 16:48 Сейчас в теме
Автор, отличная статья! Спасибо.

(-) От себя добавлю, при переносе через веб-сервис больших объёмов данных (> 1 ГБ) может периодически возникать сбой канала связи. Причину я так и не осознал, но обмен намертво останавливался до тех пор, пока не перезагрузим веб-сервер.

(+) С помощью веб-сервиса легко настраивается обмен с потусторонним миром ТСД, чем я в прошлом активно и занимался. Поскольку объём пересылаемых данных небольшой, то ошибок обмена вообще никогда не возникало, и ответ с результатом обмена возвращался мгновенно.
4. aximo 2086 25.03.20 08:12 Сейчас в теме
к 2020 году мобильный клиент/ веб клиент и веб-сервисы в 1с, наверное уже напрочь убили всех остальных самописных андройдовских конкурентов...
Оставьте свое сообщение