Работа с WEB-сервисами под HTTPS на примере прямого обмена между базами (1С – 1С) 

03.09.21

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

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

Если пользователю будет необходим нетиповой обмен между базами и публикация баз будет возможна (установлен WEB-сервер), то можно воспользоваться механизмом WEB-сервисов. 

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

  1. В базе-источнике требуется создать объект конфигурации: WEB-сервисы 

  1. В базе приемнике создаем объект конфигурации: WS-ссылки 

WS-ссылка содержит описание WEB-сервиса из базы-источника. Этот объект конфигурации не имеет программного кода и представляет собой только модель данных и описание операций созданного в базе-источнике WEB-сервиса. 

Пример описания WS-ссылки (рис.1) 

Рис. 1 – описание WS-ссылки 

Важным параметром является то, что данную ссылку мы можем открыть в браузере и посмотреть текстовое описание WEB-сервиса (рис.2). Если в браузере WEB-сервис не открывается, то и созданная WS-ссылка работать не будет 

Рис. 2 – описание WEB-сервиса 

Если мы откроем WS-ссылку, которая корректно загружена, то увидим вот такую картину (рис.3) 

Рис.3 – WS-ссылка 

  1. Пакеты, которые автоматически подключаются (ветка пакеты) 

  1. Сам WEB-сервис, к которому идет обращение и его операции, которые описаны в базе-источнике. 

Операции WEB-сервиса описываются функциями встроенного языка. То есть – любая операция веб-сервиса должна возвратить какое-либо значение. Тип возвращаемого значения можно указать в описании операции WEB_сервиса (рис 4.2). 

//ИТС + 

Типы возвращаемых значений мы указываем в свойстве непосредственно WEB-сервиса «Пакеты XDTO». Механизм XDTO позволяет определять объекты переноса данных, которые могут образовывать строгую иерархию и могут сериализоваться в XML. Эти свойства позволили использовать объекты XDTO в качестве параметров и возвращаемых значений операций web-сервисов. 

//ИТС - 

Для задачи обмена 1С – 1С из базы-источника логичее возвращать тип, который поймет 1С, то есть возвращаемый параметр будет типом 1С (в нашем случае – хранилище значений). Эти типы содержатся в пакете-XDTO: http://v8.1c.ru/8.1/data/core (рис.4.1) 

Рис. 4.1 – описание WEB-сервиса 

Рис. 4.2 – описание операции WEB-сервиса 

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

Описание вызова WEB-сервиса (Листинг 1) 


ssl4 = Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено ); 

ВебСервис_Прокси = WSСсылки.uuDocumPrimarySync.СоздатьWSПрокси("https://127.0.0.1:81","uuPrimarySync","uuPrimarySyncSoap",,,ssl4); 

ВебСервис_Прокси.Пользователь = "***"; 

ВебСервис_Прокси.Пароль = "******"; 



СтрукДата = Новый Структура; 

СтрукДата.Вставить("StartDate", Объект.Период.ДатаНачала); 

СтрукДата.Вставить("EndDate", Объект.Период.ДатаОкончания); 

ХранилищеКПередачеВДО = Новый ХранилищеЗначения(СтрукДата); 

Ответ = ВебСервис_Прокси.HandheldSync(ХранилищеКПередачеВДО); 

////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

Для того, чтобы обратиться к WEB-сервису (в случае работы базы через протокол HTTPS) требуется: 

  1. Указать сертификат ssl 

  1. Организовать обращение к WS-ссылке с использованием метода: СоздатьWSПрокси – в методе прописывается  

  1. URL-пространство имен, (*) – описывается в Web-сервисе (см. рис 4.1), 

  1. имя сервиса (*)– описывается в Web-сервисе (см. рис 4.1), 

  1. имя порта (*) – описывается в WS-ссылке, см  

  1. интернет прокси,  

  1. Таймаут,  

  1. защищенное соединение (* для подключения HTTPS),  

  1. местоположение,  

  1. использование аутентификации WINDOWS 

Описание создания защищенного ssl-соединения (синтаксис-помощник 1С; листинг 2) 

///////////////////////////////////////////////////////////////////////////////////////////////////////////// 

Листинг 2 - Возможные описания объекта защищенного соединения OpenSSL (1С помощник) 

Описание: 

Объект защищенного соединения OpenSSL. 
Используемый клиентский сертификат должен быть самоподписанным или проходить валидацию через сертификаты удостоверяющих центров, заданные в свойстве "СертификатыУдостоверяющихЦентров" 

Доступность: 

Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер. 

Пример: 

ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
            Новый СертификатыУдостоверяющихЦентровWindows());

ssl2 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаWindows(),
            Новый СертификатыУдостоверяющихЦентровФайл("C:/certs/myca.pem"));

ssl3 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаФайл("C:/certs/user.p12", "password" ),
            Новый СертификатыУдостоверяющихЦентровФайл("C:/certs/myca.pem"));

ssl4 = Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено );

ssl5 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаФайл("C:/certs/user.p13", "password" ),
            Новый СертификатыУдостоверяющихЦентровОС());

Листинг 2 – описание возможных описаний объекта защищенного соединения OpenSSL 

///////////////////////////////////////////////////////////////////////////////////////////////////////////// 

Выбор корректного описания зависит напрямую от того, с каким сертификатом работает организация. 

  1. Если все корректно, то в переменную «ответ» (листинг 3) вернется значение из базы-источника. Так же тут указываем сразу параметры, которые требуются для передачи в операцию WEB-сервиса 

////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
Листинг 3 – Строка обращения к операции WEB-сервиса 

Ответ = ВебСервис_Прокси.HandheldSync(ХранилищеКПередачеВДО);

Листинг 3 – Строка обращения к операции WEB-сервиса 

////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
 

  1. Обрабатываем полученные результаты. И тут может быть два варианта. 

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

  1. WEB-сервер нам возвращает закодированный ответ в виде строки BASE64. Этот случай опишем подробнее. 

Если WEB-сервер нам возвратил закодированную строчку, то требуется выполнить преобразование ее в объекты 1С. Для этого нам следует сделать несколько преобразований: 

  1. BASE64 в двоичные данные (используем функцию встроенного языка 1С:  
    ДвоичныеДанные = Base64Значение(Ответ); (где ответ – это значение, которое возвращено WEB-сервером) 

  1. Используем фабрику XDTO для представления двоичных данных в объекте 1С (листинг 4) 

Фабрика типов XDTO: Содержит определения всех типов, позволяет осуществлять чтения/запись данных XDTO в XML и JSON (материал Синтаксис-помощника). 

//////////////////////////////////////////////////////////////////////////////////////////////////////////////Листинг 4 – использование фабрики XDTO для преобразования двоичных данных в объект 1С + 

телоXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "ValueStorage"), ДвоичныеДанные);

Листинг 4 – использование фабрики XDTO для преобразования двоичных данных в объект 1С - 

////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

 

Создаем значение XDTO по лексическому представлению значения. Лексическое представление значения должно удовлетворять ограничениям, определяемым данным типом значения XDTO. Тип нашего XDTO (параметр 1 – является обязательным) должен совпадать с типом выходного параметра функции WEB-сервиса (см. Рис 4.2). Описываем пространство имен (URIПространстваИмен (NamespaceURI)) и БазовыйТип (BaseType). Вторым параметром в функцию подставляем наши двоичные данные (без преобразования их в объекты). Если все выполнено корректно, то наше выходное значение из WEB-сервиса будет содержаться в реквизите: телоXDTO.Значение, того типа, который мы указали в выходном параметре ("ValueStorage" – хранилище значения). 

Работа непосредственно с получением данных через WEB-сервис на этом заканчивается. 

 

Резюме: 

Использование веб-сервисов 1С при обмене 1С – 1С позволяет быстро передавать достаточно большие объемы данных из базы-источника в базу-приемник в объектах языка 1С. 

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

Так же этот вариант применим при необходимости получать данные из одной базы в другую (пример – получение остатка бюджета из одной базы (источник) при заведении нового счета на оплату (в сторонней базе)). 

web-сервис бесшовная интеграция обмен веб-сервис SSL ws-ссылка

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    15955    13    18    

13

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

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

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    89026    163    216    

318

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25892    9    0    

7

Интеграция с сервисом vetmanager

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

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

12000 руб.

02.02.2021    16497    42    49    

23

Merlion Commander Версия 1.3.9.2 - июль 2022 г. (Интеграция с 1С: УT, редакция 11.4, 1С:Розница 2.3,1С:ERP Управление предприятием 2, УТ 10.3, редакция веб-сервиса MERLION API 3.0 от 18.08.2021)

Оптовая торговля Розничная торговля WEB-интеграция Платформа 1С v8.3 1С:Управление торговлей 11 Россия Платные (руб)

Расширении конфигурации "Управление торговлей, редакция 11" для работы с веб-сервисом Мерлион с помощью Merlion API. Расширение и набор подключаемых дополнительных обработок позволяет без изменения конфигурации получить возможность работы с API крупнейшего российского дистрибьютора http://merlion.com. Логика работы максимально приближена к работе веб-сервиса b2b. Вы сможете создать и исправить заказ, зарезервировать товар прямо из 1С, посмотреть актуальные остатки и цены, импортировать штрихкода EAN13 товаров, загружать заказ c автоматическим созданием номенклатуры в 1С и корректности создания. Можно выбирать характеристики по товарным группам и загружать товар с выбранными характеристиками, загружать изображения товара. Не требуется установки дополнительного ПО для работы с веб-сервисом. Кроссплатформенное решение для ОС Windows и Linux. Весь код модулей открыт и доступен для просмотра и внесения изменений.

8280 руб.

02.05.2017    41103    43    64    

50
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1293 04.09.21 13:12 Сейчас в теме
Ссылок на настройку HTTPS на уровне web сервера нет, по большей части пересказ документации. Почему web сервис с хранилищем значений а не просто HTTP сервис с JSON?
HalWin; distorshion; StreamLVM; sinichenko_alex; 1С_Мастер; rpgshnik; dsdred; kser87; cleaner_it; noprogrammer; nporrep; +11 Ответить
2. bulpi 215 05.09.21 12:24 Сейчас в теме
3. dsdred 3330 05.09.21 21:42 Сейчас в теме
(2)Нужно прививать вкус и стремиться к простоте. ;)
kabantus; distorshion; sinichenko_alex; rpgshnik; Sergant; +5 Ответить
4. retr0 06.09.21 08:19 Сейчас в теме
Осуждаю такие статьи на уровне инфо цыган. Вот зачем она нужна? Есть миллионы и миллионы точно таких же. *Bruh*
kabantus; sinichenko_alex; kser87; Yashazz; vv2; +5 1 Ответить
5. kser87 2441 06.09.21 14:13 Сейчас в теме
Пример выносит мозг. Зачем использовать хранилище значения где достаточно 2 параметра с типом дата? Хранилище имеет смысл когда надо передавать несериализуемый тип. Картинку, например
kabantus; +1 Ответить
6. user895415 06.09.21 16:04 Сейчас в теме
(1)

1. malikov_pro 724 04.09.21 13:12
Ссылок на настройку HTTPS на уровне web сервера нет, по большей части пересказ документации. Почему web сервис с хранилищем значений а не просто HTTP сервис с JSON?

(5)
г. Зачем использовать хранилище значения где достаточно 2 параметра с типом дата? Хранилище имеет смысл когда надо передавать несериализуемый тип. Картинку, например

Добрый день, Спасибо за комментарий. Может, я, конечно, некорректно выбирал входные параметры у веб-сервиса, но вообще никакие типы, кроме хранилища у меня передаваться отказывались) поэтому не стал дальше мудрить и передал хранилище
8. 1С_Мастер 61 06.09.21 16:35 Сейчас в теме
(6) Почему вообще web-сервис? Старая, медленная, неудобная в использовании штука, у которой нет ни одного преимущества перед http-сервисами. Пожалуй, единственный сценарий при котором их логично использовать - платформа версии 8.1 (или 8.2? Когда там http-сервисиы появились, году в 2012?) без возможности обновления на актуальную
kabantus; distorshion; ander_; user895415; +4 1 Ответить
9. binx 167 01.10.22 13:45 Сейчас в теме
(19) не используется потому что в типовых режим совместимости еще не позволяет, пробовал сам на файловых операциях, дейсвительно реал
(8) SOAP позиционируются для использования в корпоративных системах, существует огромное количество веб-сервисов которые не собираются умирать.
7. malikov_pro 1293 06.09.21 16:35 Сейчас в теме
Оставьте свое сообщение