Работа с 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-ссылка

См. также

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

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

72000 руб.

19.07.2024    1094    52    0    

3

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

Подсистема интеграции Amo CRM с 1С: технические требования, порядок работы, возможности, доработки и обновления. Бесплатный период техподдержки - 1 месяц.

60000 руб.

07.05.2019    32878    62    41    

23

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

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

12000 руб.

02.02.2021    17535    47    50    

28

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

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

22656 руб.

25.05.2021    13916    39    8    

15

Обмен с ГосИС Мастера заполнения 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    62444    402    295    

71
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1316 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 216 05.09.21 12:24 Сейчас в теме
3. dsdred 3524 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 2461 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 172 01.10.22 13:45 Сейчас в теме
(19) не используется потому что в типовых режим совместимости еще не позволяет, пробовал сам на файловых операциях, дейсвительно реал
(8) SOAP позиционируются для использования в корпоративных системах, существует огромное количество веб-сервисов которые не собираются умирать.
7. malikov_pro 1316 06.09.21 16:35 Сейчас в теме
Оставьте свое сообщение