Перейти к содержимому

Ws соединение 1с что это

  • автор:

Web-сервисы и WS-ссылки

Механизм Web-сервисов является средством поддержки SOA (Service-Oriented Architecture — сервисно-ориентированной архитектуры), которая является современным стандартом интеграции приложений и информационных систем.

Система 1С:Предприятие 8 может являться как поставщиком веб-сервисов, так и потребителем веб-сервисов, опубликованных другими поставщиками.

Для того чтобы система 1С:Предприятие 8 могла предоставлять свою функциональность через веб-сервисы, используется объект конфигурации Web-сервис. Для взаимодействия в веб-сервисами, опубликованными другими поставщиками, используются объекты конфигурации WS-ссылка, а также ряд объектов встроенного языка.

Web-сервис

Web-сервис описывается набором операций. Каждая операция может иметь некоторое количество параметров для передачи данных Web-сервису и получения возвращаемых значений.

Типы параметров и возвращаемых значений Web-сервисов описываются с помощью механизма XDTO.

Объект конфигурации Web-сервис содержит модуль, в котором располагаются процедуры, выполняемые при вызове тех или иных операций Web-сервиса:

Для того, чтобы Web-сервис был доступен другим потребителям, выполняется публикация Web-сервиса. Web-сервис может быть опубликован на веб-сервере MS IIS или Apache2 через файловую систему или по протоколу FTP.

WS-ссылка

WS-ссылка представляет собой WSDL описание веб-сервиса, импортированное из указанного источника. WS-ссылка недоступна для редактирования, однако можно просмотреть ее структуру и структуру типов данных, которые используются для описания параметров и возвращаемых значений:

Ws соединение 1с что это

В прошлый раз мы с Вами обсуждали web-сервисы 1С, которые позволяют удаленно, через интернет, запрашивать данные у 1С из другой базы 1С или другой программы.

Сегодня мы поговорим как использовать веб-сервис, предоставляемый другой базой 1С, или другой программой.

WS-ссылка 1С – это описание стороннего веб-сервиса по его WSDL описанию.

Это может быть веб-сервис другой базы 1С. Это может быть веб-сервис другой программы или веб-сайта.

Для нас это совершенно не важно – важно, что есть набор функций, которые мы можем вызвать через интернет.

Соответственно нам интересно – как добавить ссылку на веб-сервис и как вызывать его методы.

Добавление WS-ссылки 1С

WS-ссылки 1С это объект 1С, который расположен в конфигурации в ветке Общие/WS-ссылки 1С.

Добавление ссылки на веб сервис производится автоматически. Нажмите правой кнопкой на ветку, выберите Добавить, укажите путь к WSDL описанию веб сервиса.

В результате добавления WS-ссылки 1С будет создана автоматически такая же структура, как создается вручную при добавлении Web сервиса.

Добавление производится в конфигураторе и если у Вас используется прокси, то в вместо корректного добавления Web-ссылки Вы увидите ошибку с текстом вроде «Extra content at the end of the document».

Эта замечательная надпись может конечно обозначать и то, что она пишет – что формат XML в описании веб-сервиса не верный, но чаще всего значит просто – 1С не смогла произвести соединение с веб-сервисом, и чаще всего по причине прокси.

Ссылку на веб сервис в конфигурацию добавлять не обязательно. Возможно создавать ее динамически в момент выполнения кода на языке 1С (указав URL WSDL описания). В этом случае на импорт WSDL в момент создания объекта будет потрачено определенное время.

Настройки интернет прокси для 1С

В каталоге, где установлена 1С есть вложенный каталог CONF.

Обычно путь к нему: C:\Program files\1cv82\conf\

В этой папке может быть файл inetcfg.xml . Под словами «может быть» подразумевается, что чаще всего его там нет. Создайте текстовый документ с таким наименованием с помощью блокнота (расширение у документа должно быть xml, а не txt).

Пример содержимого файла inetcfg.xml для указания прокси:

protocols=»http=192.168.1.1:8080″
user=»Windows User»
password=»password»
bypassOnLocal=»true»
bypassOnAddresses=»127.0.0.1″
/>

Использование WS ссылки 1С

Для использования WS ссылки 1С нужно несколько параметров. Откройте добавленную WS ссылку 1С нажав на нее два раза мышкой.

  • URI пространства имен – наименование указано в добавленной WS ссылке 1С в ветке
    WS-ссылка/Модель данных/Пакет
  • Наименование веб сервиса – указано в ветке WS ссылки
    WS-ссылка/Web-сервисы/СобственноИмя
  • Наименование порта – указано в ветке
    WS-ссылка/Web-сервисы/СобственноИмя/ИмяПротоколаSoap

Далее в коде на языке 1С написать что-то вроде:
ВебСервис = WSСсылки.ИмяВебСервиса.СоздатьWSПрокси(URI, НаименованиеВебСервиса, НаименованиеПорта);
Значение = ВебСервис.ИмяМетодаВебСервиса();

Проголосовать за этот пост:

Объект 1С «WS-ссылки»

WS-ссылка 1С — это общий объект конфигурации, предназначенный для доступа к сторонним веб-сервисам по статической ссылке, которая состоит:

  1. из модели данных (по сути — пакета XDTO);
  2. web-сервиса, с которого опубликована ссылка.

WS-ссылка представляет собой WSDL описание веб-сервиса стороннего производителя (его реквизитов и типов данных), импортированное из указанного источника и предназначенное для последующей интеграции со сторонним веб-сервером (веб-сервисом другой базы 1С, другой программы или веб-сайта).

Язык описания web-сервисов WSDL

Язык описания веб-сервисов WSDL (Web Services Description Language) основан на языке XML. В июне 2007 года была утверждена WSDL 2.0 в качестве стандарта W3C (World Wide Web Consortium), но несмотря на это версия WSDL 1.1 остается широко используемой формой описания Web-сервисов SOAP.

WS-ссылка недоступна для редактирования, однако можно просмотреть ее структуру и структуру типов данных, которые используются для описания параметров и возвращаемых значений.

Пример настройки, свойств, методов использования WS-ссылки на примере ссылки из библиотеки стандартных подсистем 1С — «ОтправкаSMSЧерезМТС».

Добавление WS-ссылки 1С

Добавление WS-ссылки на веб-сервис производится в конфигураторе командой «Добавить» с указанием пути к WSDL описанию веб-сервиса. В результате добавления WS-ссылки 1С будет автоматически создана такая же структура, какая создается вручную при добавлении Web-сервиса.

Добавление WS-ссылки 1С

Ссылку на веб-сервис в конфигурацию добавлять не обязательно, ее можно создавать динамически при выполнении кода на языке 1С (указав URL WSDL описания). Однако при этом следует учитывать, что на импорт WSDL в момент создания объекта будет потрачено некоторое время.

  1. используется прокси и 1С не смогла произвести соединение с веб-сервисом;
  2. не верный формат XML в описании веб-сервиса.

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Курсы по 1С

Новые материалы

  • Лицензии 1С: виды и порядок получения
  • Создание отчета 1С без использования СКД
  • Программная работа с объектами
  • Программная работа с регистрами 1С
  • Алгоритм решения задачи №5 (ОУ)
  • Алгоритм решения задачи №4 (ОУ)
  • Программная работа с управляемыми формами
  • Алгоритм решения задачи №3 (ОУ)
  • Алгоритм решения задачи №2 (ОУ)
  • Справочные материалы для подготовки к 1С Специалист по платформе
  • Списание товаров по средней себестоимости, по FIFO (ФИФО), по LIFO (ЛИФО)
  • Использование плана видов характеристик
  • Алгоритм решения задачи №1 (ОУ)
  • Требования при решении задач 1С Специалист по платформе
  • Полнотекстовый поиск 1С
  • Старая и новая методики контроля остатков 1С
  • Практика работы с системой компоновки данных (СКД) и макетами 1С
  • Циклы в 1С
  • Условные операторы 1С. Логические операции
  • Чистый код 1С. Анализ кода 1С
  • Условия отбора данных в запросе 1С
  • Распределение данных по объектам конфигурации 1С
  • Резервирование базы данных и обновление конфигурации 1С

Использование внешних веб-сервисов в 1С на примере загрузки курсов валют

Знаю, что на хабре не очень-то жалуют многострадальную 1С. Хотя, с выходом платформы 8.3 (с клиентами под Linux), ее стали любить несколько больше. Кстати, так же, совсем недавно интерфейс одной из основных разработок 1С – конфигурация Управление производственным предприятием – был полностью переведен на английский язык. Много раз я встречал вопросы о том, почему здесь не пишут об 1С. Ответ на них довольно очевиден – существует множество специализированных ресурсов, где можно оперативно обсудить все вопросы и что-то почитать.

Есть все основания полагать, что эта статья здесь не выживет, но я все же рискну, потому что в 1С есть некоторые интересные вещи, о которых стоит рассказать.

С некоторых пор в 1С 8.х появилась возможность использования веб-сервисов: 1С может выступать как поставщиком, так и потребителем. В этой статье я покажу, как использовать 1С в качестве потребителя на примере получения курсов валют с сервера ЦБР.

Веб-сервис

У Центробанка существует веб-сервис для получения ежедневных данных: курсы валют, новости, динамика курсов и т.д. Описание сервиса можно найти здесь http://www.cbr.ru/scripts/Root.asp?Prtid=DWS. Нас интересует один из методов этого сервиса: GetCursOnDate(On_date) – получение курсов валют на заданную дату. В метод передается один аргумент On_date – это дата, на которую требуется получить курсы. В результате возвращается XML, содержащий таблицу ValuteCursOnDate (сами курсы и сопутствующая информация).

Конфигурирование

Для разработки я взял 1С 8.2 (8.2.15.317 в моем случае) и создал пустую конфигурацию. Для использования внешних веб-сервисов предусмотрен объект WS-ссылки, но использовать его не обязательно, к сервису можно обращаться динамически из кода. Я буду использовать первый вариант, а затем покажу, как можно использовать второй. В конфигурации создал обработку и назвал ее «ЗагрузкаКурсовВалютЦБР». Добавил форму (управляемую) и сделал ее основной. На форме я создал реквизиты и разместил элементы управления так, как показано на рисунке.

Сейчас самое главное – создаем ссылку на описание веб-сервиса. В конфигурации добавляем новый объект типа WS-ссылка. В появившемся окне указываем ссылку на WSDL (описание данного формата выходит за рамки статьи, вы можете почитать о нем на Википедии): http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL.

1С на основании полученного описания автоматически создаст визуальную карту веб-сервиса. Можно увидеть название веб-сервиса, посмотреть какие у него доступны операции а так же используемые типы данных.

Конфигурирование на этом почти закончено, осталось сделать пару штрихов для того, чтобы наше приложение выглядело более эстетично. Кликнем правой кнопкой мыши по корню конфигурации и вызовем меню «Открыть командный интерфейс рабочего стола». В появившемся окне необходимо снять флаг «Видимость» напротив обработки «Загрузка курсов валют ЦБР». Нажмем кнопку Ок. Далее еще правый клик по корню конфигурации и вызовем меню «Открыть рабочую область рабочего стола», там сделаем настройку как на рисунке:

Эти настройки позволят нам отобразить форму обработки прямо на рабочем столе (имеется ввиду рабочий стол программы 1С) в режиме 1С Предприятие.

Программирование

Теперь осталось наполнить смыслом нашу обработку: заставить ее получать курсы валют и отображать в таблице на форме. В режиме редактирования формы необходимо добавить новую команду формы, назовем ее ЗагрузитьВалюты. Эту команду необходимо связать с кнопкой, расположенной на форме. Действие для команды заполним следующим кодом (прим. автора: ничего себе, на хабре есть подсветка кода 1С, правда она работает не корректно):

&НаКлиенте Процедура ЗагрузитьВалюты(Команда) Если НЕ ЗначениеЗаполнено(ДатаЗагрузки) Тогда Сообщить("Не выбрана дата загрузки!", СтатусСообщения.Важное); Возврат; КонецЕсли; ТаблицаКурсовВалют.Очистить(); ЗагрузитьКурсыВалют(ДатаЗагрузки); КонецПроцедуры 

Здесь сначала проверяется, заполнена ли дата (если не заполнена, то сообщаем об этом пользователю и больше ничего не делаем). Затем очищается таблица, расположенная на форме и вызывается процедура ЗагрузитьКурсыВалют(), в которую передается дата.

Код процедуры ЗагрузитьКурсыВалют(), пояснения данны в комментариях к коду:

Процедура ЗагрузитьКурсыВалют(фДатаЗагрузки) //Создаем прокси для обращения к внешнему веб-сервису, // передаем в функцию URI пространства имен, имя сервиса, имя порта. Прокси = WSСсылки.CBR_DailyInfoWebServ.СоздатьWSПрокси( "http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap"); //Получаем тип параметра, который передается в метод GetCursOnDate. ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить( "http://web.cbr.ru/").Получить("GetCursOnDate"); //Создаем параметр на основе типа и заполняем значение параметра On_Date. WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра); WSПараметр.On_Date = фДатаЗагрузки; //Вызываем метод веб-сервиса, записываем результат в переменную КурсыВалют. КурсыВалют = Прокси.GetCursOnDate(WSПараметр); //Перебираем таблицу ValuteCursOnDate, каждое значение таблицы // добавляем в таблицу на форме (колонки заполняем соответствующими значениями). Для Каждого Элемент Из КурсыВалют.GetCursOnDateResult.diffgram.ValuteData.ValuteCursOnDate Цикл НоваяСтрокаТЗ = ТаблицаКурсовВалют.Добавить(); НоваяСтрокаТЗ.НазваниеВалюты = Элемент.Vname; НоваяСтрокаТЗ.Номинал = Элемент.Vnom; НоваяСтрокаТЗ.ЦифровойКодВалюты = Элемент.Vcode; НоваяСтрокаТЗ.СимвольныйКодВалюты = Элемент.VChCode; НоваяСтрокаТЗ.КурсВалюты = Элемент.Vcurs; КонецЦикла; КонецПроцедуры 

Теперь можно обновлять конфигурацию БД (F7) и запускать 1С Предприятие (F5). Если все сделали верно, то должны увидеть окно как на рисунке ниже:

Чтобы проверить результат, нам нужно ввести дату, на которую хотим получить курсы валют и нажать на кнопку «Загрузить валюты». В случае успешного запроса, таблица на форме заполнится значениями курсов:

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

В процедуре ЗагрузитьКурсыВалют() строку

Прокси = WSСсылки.CBR_DailyInfoWebServ.СоздатьWSПрокси("http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap"); 

необходимо заменить двумя следующими строками

Определения = Новый WSОпределения("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL"); Прокси = Новый WSПрокси(Определения, "http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap"); 

Сначала мы создаем так называемые определения для веб-сервиса из его WSDL. Затем так же создаем прокси для обращения к нему.

Как видно, использовать внешние веб-сервисы из 1С в целом довольно просто (хотя и есть некоторая сложность в понимании определения типов, у меня в том числе).

Если данная публикация найдет здесь отклик, то есть еще несколько тем, о которых можно рассказать.

По ссылке можно скачать конфигурацию с примером (cf-файл).

  • 1с предприятие 8
  • web-services
  • разработка
  • конфигурирование
  • 1с must die

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *