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

13

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

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

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

5040 руб.

04.05.2021    18047    10    15    

14

SALE! 10%

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

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

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

28000 25200 руб.

28.05.2015    85233    26    51    

50

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

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

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

22656 руб.

25.05.2021    12947    32    8    

12

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

Обмен с ГосИС 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    89512    163    217    

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