Работа с 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    16135    13    18    

13

Интеграция 1С — Битрикс24. Обмен задачами

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

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    18247    10    15    

16

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

25200 руб.

28.05.2015    85518    26    51    

50

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

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

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

22656 руб.

25.05.2021    13023    33    8    

13

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

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

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

12000 руб.

02.02.2021    16665    43    49    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1298 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 3341 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 2442 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 168 01.10.22 13:45 Сейчас в теме
(19) не используется потому что в типовых режим совместимости еще не позволяет, пробовал сам на файловых операциях, дейсвительно реал
(8) SOAP позиционируются для использования в корпоративных системах, существует огромное количество веб-сервисов которые не собираются умирать.
7. malikov_pro 1298 06.09.21 16:35 Сейчас в теме
Оставьте свое сообщение