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

См. также

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

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

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

600 руб.

25.05.2021    11785    9    4    

8

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

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

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

6000 руб.

02.02.2021    14498    34    43    

19

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

Обмен с ГосИС 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    85283    142    211    

297

Прайс-лист с фотографиями, выгрузкой в Excel с подсчетом суммы заказа, загрузкой заказа в Управление торговлей 11 (Россия) и Управление торговлей для Беларуси 3

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

Прайс-лист для программы 1С: Управление торговлей 11 и Управление торговлей для Беларуси 3, позволяющий: 1) Формировать прайс-лист с фотографиями; 2) Сохранить прайс-лист в Excel с формулами, подсчитывающими количество и сумму заказа; 3) Передать сформированный прайс-лист по каналу ftp на сайт; 4) Сохранить прайс-лист в формате CSV; 5) Загрузить сделанный по прайс-листу заказ обратно в программу.

6000 руб.

04.09.2014    120936    44    105    

53

Sync1C: Синхронизация 1С и OpenCart

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

Внешняя обработка для обмена данными с интернет-магазином OpenCart. Позволяет быстро наполнить магазин товарами, затем обновлять цены и добавлять новые товары. Далее можно средствами OpenCart настраивать и дополнять карточки товаров как надо для магазина, при этом связь товаров с 1С не теряется.

3840 руб.

30.03.2018    41946    78    133    

82

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    37419    40    45    

47
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1263 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 211 05.09.21 12:24 Сейчас в теме
(1)
Это дело вкуса
3. dsdred 2722 05.09.21 21:42 Сейчас в теме
(2)Нужно прививать вкус и стремиться к простоте. ;)
distorshion; sinichenko_alex; rpgshnik; Sergant; +4 Ответить
4. retr0 06.09.21 08:19 Сейчас в теме
Осуждаю такие статьи на уровне инфо цыган. Вот зачем она нужна? Есть миллионы и миллионы точно таких же. *Bruh*
sinichenko_alex; kser87; Yashazz; vv2; +4 1 Ответить
5. kser87 2390 06.09.21 14:13 Сейчас в теме
Пример выносит мозг. Зачем использовать хранилище значения где достаточно 2 параметра с типом дата? Хранилище имеет смысл когда надо передавать несериализуемый тип. Картинку, например
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?) без возможности обновления на актуальную
distorshion; ander_; user895415; +3 1 Ответить
9. binx 163 01.10.22 13:45 Сейчас в теме
(19) не используется потому что в типовых режим совместимости еще не позволяет, пробовал сам на файловых операциях, дейсвительно реал
(8) SOAP позиционируются для использования в корпоративных системах, существует огромное количество веб-сервисов которые не собираются умирать.
7. malikov_pro 1263 06.09.21 16:35 Сейчас в теме
(6)
https://infostart.ru/public/1132087/ HTTP JSON
https://infostart.ru/1c/articles/1258813/ HTTPS с гибкими настройками
Greeen4; henx; +2 Ответить
Оставьте свое сообщение