• Web-сервисы. Что такое веб-сервис Web сервисы 1с 8.2 пример

    Благо ограничений на работу с веб-сервисами в ней нет.

    Добавление Web-сервиса в метаданные

    Открываем дерево конфигурации, ветка Общие , далее Web-сервисы , добавляем новый веб-сервис (назову его my_ws) и заполняем свойства как показано на рисунке.

    Необходимо сделать несколько пояснений о свойствах веб-сервисов

    • Пакеты XDTO — в этом поле указывается список пакетов XDTO, типы которых могут использоваться в значении, которое возвращается в результате выполнения операций веб-сервиса.
    • URI пространства имен — это строка, которая задает URI пространства имен для данного веб-сервиса. Любой веб-сервис можно однозначно идентифицировать по сочетанию его имени и пространству имен. Необходимо четко понимать, что это свойство не имеет ничего общего ни с физическим адресом веб-сервера, ни с сайтом органицации и т.д. Это просто некий виртуальный адрес. Поэтому присваивать надо внятное имя, которое сможет рассказать, например, об области расположения и применения веб сервиса. В частности может присутствовать аббревиатура типовой конфигурации к которой веб-сервис относится.

    Операции веб-сервиса

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

    В качестве примера создадим для нашего веб-сервиса операцию, которая будет возвращать классическую фразу «Привет мир!». Назовем ее Hello :

    В модуле веб-сервиса создадим функцию ПриветМир() , ссылку на которую вставим в соответствующее свойство операции.

    Функция ПриветМир() Возврат "Привет мир!" ; КонецФункции

    Но у этой операции есть один недостаток. В нее нельзя передавать исходные данные. Для этих целей в операциях веб-сервисов используется подчиненные им объекты — Параметры .

    Добавим еще одну операцию — HelloUsr , и создадим для нее параметр Name .

    Эта операция будет у нас возвращать приветствие пользователю при помощи вызова вот такой функции:

    Функция ПриветПользователь(ИмяПользователя) Возврат "Привет, " + ИмяПользователя + "!" ; КонецФункции

    Публикация Web-сервиса

    Теперь у нас все готово для публикации веб-сервиса. Для этого необходимо зайти в конфигуратор под правами администратора. Щелкаем по ярлыку 1С правой кнопкой и выбираем соответствующий пункт меню:

    В меню выбираем Администрирование —> Публикация на веб-сервере

    В открывшемся окне прописываем имя публикации, отмечаем пункт Публиковать Web-сервисы и также отмечаем созданный нами веб-сервис:

    WS-ссылки

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

    Http://localhost/professia1c/ws/my_ws.1cws?wsdl

    Рассмотрим из каких же частей состоит этот адрес.

    • http://localhost/ — это адрес указывает на физическое расположение веб-сервера. Так как у меня он находится на локальной машине, то localhost, а на практике это либо IP-адрес сервера, либо его имя
    • professia1c — это имя публикации. Мы его вводили в поле Имя в диалоговом окне, когда публиковали веб-сервис
    • ws — признак того, что мы обращаемся к веб сервису
    • my_ws.1cws — имя файла публикации, которое мы указывали в свойствах при создании веб-сервиса
    • ?wsdl — параметр, который указывает, что нам нужно получить WSDL описание

    После публикации веб-сервиса, для того чтобы убедиться, что он успешно опубликован, можно ввести адрес его WSDL описания в адресную строку браузера. При этом мы должны получить в окне браузера XML файл примерно вот такого содержания:

    1. Использование динамической ws-ссылки.
    2. Создание статической ws-ссылки.

    Рассмотрим каждый из этих способов

    Динамические WS-ссылки

    &НаСервере Процедура ПодключитьсяНаСервере() ВСОпределение = Новый WSОпределения("http://localhost/professia1c/ws/my_ws.1cws?wsdl" , "Сидоров" , "" ) ; ВСПрокси = Новый WSПрокси(ВСОпределение, "http://www.сайт/" , "my_ws" , "my_wsSoap" ) ; ВСПрокси. Пользователь = "Сидоров" ; ВСПрокси. Пароль = "" ; ТекстВС = ВСПрокси. HelloUsr("Вася" ) ; Сообщение = Новый СообщениеПользователю; Сообщение. Текст = ТекстВС; Сообщение. Сообщить() ; КонецПроцедуры

    Как нетрудно догадаться, результатом выполнения этой процедуры будет текст в окне сообщения «Привет, Вася!»

    Статические WS-ссылки

    Вместо программного создания объекта WSОпределения мы можем непосредственно в дереве конфигурации создать объект метаданных WS-ссылка. В процессе создания будет выведено окно с предложением указать адрес WSDL определения для его импорта:

    После этого мы можем в коде ссылаться непосредственно на эту WS-ссылку. И процедура по обращению к веб-сервису примет вот такой вид:

    &НаСервере Процедура ПодключитьсяЧересСсылкуНаСервере() ВСПрокси = WSСсылки. WSСсылка_my_ws. СоздатьWSПрокси("http://www.сайт/" , "my_ws" , "my_wsSoap" ) ; ВСПрокси. Пользователь = "Сидоров" ; ВСПрокси. Пароль = "" ; ТекстВС = ВСПрокси. HelloUsr("Вася" ) ; Сообщение = Новый СообщениеПользователю; Сообщение. Текст = ТекстВС; Сообщение. Сообщить() ; КонецПроцедуры

    Мы рассмотрели общие понятия использования механизма « Web -сервисов». Освежим некоторые знания.

    Web-сервисы применяются для обмена данными между сервером и клиентом; формат XML используется для «упаковывания» данных в целях взаимопонимания между обоими участниками общения.

    РАЗДЕЛ I

    ПРИМЕР РЕАЛИЗАЦИИ WEB -СЕРВИСА В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»

    ЗАДАЧА: Необходимо создать web-сервис, обращаясь к которому клиенты могут определить всю необходимую информацию по своим заявкам.

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

    РЕШЕНИЕ:

    Шаг 1. Создадим новую информационную базу без конфигурации для разработки новой конфигурации.

    Шаг 2. Добавим в конфигурацию несколько новых объектов

    Справочник «Клиенты»;

    Документ «Заявка»;

    Перечисление «СтатусыЗаявок».

    Шаг 3. Создадим новый XDTO-пакет.

    Почему и для чего мы создаем XDTO-пакет? Подробнее об использовании механизма XDTO можно прочитать в «Глава 16. Руководство разработчика» и .

    Коротко отметим лишь только то, что механизм XDTO является универсальным способом представления данных для взаимодействия с различными внешними источниками данных и программными системами.

    В нашем случае пакет XDTO создается для описания возвращаемого значения web-сервиса.

    Раскроем ветку «Общие» → «XDTO-пакеты» → Добавить…

    Укажем имя XDTO-пакета «DocumentsData » и его пространство имен http://localhost/request или http://192.168.1.76/request (для облегчения понимания и процесса обучения, мы указываем локальный IP-адрес компьютера, где установлен web-сервер (поддерживаемые web-сервера: IIS или Apache)). Каждый Web-сервис может быть однозначно идентифицирован по своему имени и URI пространству имен, которому он принадлежит.

    Наш пакет содержит два типа объектов XDTO:

    1) Сustomer - для передачи данных элемента справочника «Клиенты».

    - Name ;

    2) Document - для передачи данных документа «Заявки»

    Этот тип объекта XDTO будет содержать следующие свойства:

    - Сustomer - тип Сustomer из пространства имен http://192.168.1.76/request ; представляет собой ссылку на объект XDTO, который мы определили выше;

    - Status - тип string из пространства имен http://www.w3.org/2001/XMLSchema ;

    - Numder - тип string из пространства имен http://www.w3.org/2001/XMLSchema .

    Шаг 4. Добавим в конфигурацию новый Web-сервис

    Раскроем ветку «Общие» → «Web-сервисы» → Добавить…

    Для Web-сервиса укажем следующими значения свойств:

    Имя - DocumentsData

    URI Пространства имен - http://192.168.1.76/request

    Пакеты XDTO - DocumentsData или http://192.168.1.76/request

    Имя файла публикации - request.1cws

    Шаг 5. У созданного Web-сервиса определим операцию «GetData »

    Значения свойств операции:

    Тип возвращаемого значения - Document (http://192.168.1.76/request)

    Возможно пустое значение - Истина

    Имя процедуры - GetData .

    Шаг 6. У операции GetData определим параметр Сustomer со следующими значениями свойств:

    Тип значения - тип string из пространства имен http://www.w3.org/2001/XMLSchema;

    Направление передачи - входной .

    Шаг 7. Откроем модуль созданного Web-сервиса и поместить в него функцию Получить(), которая будет выполняться при вызове данного Web-сервиса.

    Функция GetData(Сustomer) // Получить типы объектов XDTO КлиентТип = ФабрикаXDTO.Тип("http://192.168.1.76/request", "Сustomer"); ЗаявкаТип = ФабрикаXDTO.Тип("http://192.168.1.76/request", "Document"); // Получаем клиента КлиентСсылка = Справочники.Клиенты.НайтиПоНаименованию(Сustomer); Если Не ЗначениеЗаполнено(КлиентСсылка) Тогда Возврат Неопределено; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Заявка.Ссылка, | ПРЕДСТАВЛЕНИЕ(Заявка.Статус) КАК Статус, | Заявка.Номер |ИЗ | Документ.Заявка КАК Заявка |ГДЕ | Заявка.Клиент = &Клиент"; Запрос.УстановитьПараметр("Клиент", КлиентСсылка); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат Неопределено; КонецЕсли; Выборка = РезультатЗапроса.Выбрать(); Выборка.Следующий(); Документ = Выборка.Ссылка.ПолучитьОбъект(); // Создать объект XDTO заявки Заявка = ФабрикаXDTO.Создать(ЗаявкаТип); Заявка.Numder = Выборка.Номер; Клиент = ФабрикаXDTO.Создать(КлиентТип); Клиент.Name = КлиентСсылка.Наименование; Заявка.Сustomer = Клиент; Заявка.Status = Выборка.Статус; // Вернуть заявку Возврат Заявка; КонецФункции

    Шаг 8. Опубликуем созданный Web-сервис на веб-сервере.

    Пункт меню Конфигуратор: «Администрирование» → «Публикация на Web-сервере».

    На вкладке «Web-сервисы» устанавливаем признак «Публиковать Web-сервисы» и напротив нашего нового Web-сервиса также ставим «галочку».

    РАЗДЕЛ II

    ПРИМЕР ОБРАЩЕНИЯ К WEB -СЕРВИСУ СИСТЕМЫ «1С:ПРЕДПРИЯТИЕ» ИЗ СТОРОННЕГО ПРИЛОЖЕНИЯ

    Основное назначение механизма Web-сервисов в системе «1С:Предприятие» - это передача необходимых данных сторонним приложениям.

    Рассмотрим пример разработки приложения на Delphi обращения к нашему web-сервису из первого раздела данной статьи.

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

    Текстовое поле - используется для вывода полученной от web-сервиса информации;

    Две кнопки - очистка текстового поля и обращение к web-сервису;

    Поле ввода - передаваемый в web-сервис параметр.

    Шаг 2. Выполняем импорт WSDL-файла

    В результате мы получаем новый модуль request (такое наименование мы определили непосредственно в 1С). В данном модуле имеется все необходимая информация по web-сервису.

    Шаг 3. Напишем обработчик вызова web-сервиса

    Переменная DocumentDataPortType уже определена в модуле request

    Шаг 4. Запустить приложение и выполнить проверку.

    РАЗДЕЛ III

    ПРИМЕР ОБРАЩЕНИЯ К WEB -СЕРВИСУ В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»

    Шаг 1. Создадим новую внешнюю обработку с именем «WEB_Service»

    Шаг 2. Для обработки определим новую форму

    Шаг 3. У формы укажем несколько реквизитов

    Клиент - тип «Строка»

    КлиентВозврат - тип «Строка»

    НомерВозврат - тип «Строка»

    СтатусВозврат - тип «Строка».

    Выведем реквизиты на форму.

    Шаг 4. Добавим команду формы «ПолучитьДанные »

    Укажем обработчик команды

    &НаКлиенте Процедура ПолучитьДанные(Команда) ПолучитьДанныеНаСервере(Клиент); КонецПроцедуры Процедура ПолучитьДанныеНаСервере(Клиент) // Создать WS-прокси на основании ссылки и выполнить операцию Получить() Определение = Новый WSОпределения("http://192.168.1.76/WEB_Service/ws/request.1cws?wsdl"); Прокси = Новый WSПрокси(Определение, "http://192.168.1.76/request", "DocumentsData", "DocumentsDataSoap"); ДанныеЗаявки = Прокси.GetData(Клиент); Если ДанныеЗаявки = Неопределено Тогда КлиентВозврат = "Неопределено"; СтатусВозврат = "Неопределено"; НомерВозврат = "Неопределено"; Возврат; КонецЕсли; КлиентВозврат = ДанныеЗаявки.Сustomer.Name; СтатусВозврат = ДанныеЗаявки.Status; НомерВозврат = ДанныеЗаявки.Numder; КонецПроцедуры

    Система «1С:Предприятие» может использовать веб-сервисы, предоставляемые другими поставщиками, двумя способами:

    С помощью статических ссылок, создаваемых в дереве конфигурации;

    «плюс»: большая скорость работы;

    «минус»: повторный импорт WSDL-описания средствами конфигуратора и сохранение измененной конфигурации.

    С помощью динамических ссылок, создаваемых средствами встроенного языка

    (соответственно «минусы» статических для динамических - «плюсы»)

    РАЗДЕЛ IV

    ОТЛАДКА WEB-СЕРВИСОВ В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»

    Для локального web-сервиса необходимо:

    Шаг 1. Положить на клиент, где запускается система 1С файлик webservicecfg.xml со следующим содержимом

    Шаг 2. В файл default . vrd публикации конфигурации добавить строку

    Шаг 3. В конфигураторе выбрать пункт меню

    «Отладка» → «Подключение» → «Автоматическое подключение» → «Web-сервисы на сервере»

    Шаг 4. Нажать на кнопку «OK»

    Для серверного варианта надо еще сервер 1с запускать в режим отладки с ключом /debug

    Обмен данными обычно организовывается с помощью выгрузки файла из одной программы и загрузки в другую. Некоторые программисты предоставляют сторонним программам доступ в SQL базу 1С (что вроде как сильно не рекомендуется).

    Термин «обмен данными» не всегда подходит к задаче, иногда более корректно сказать – предоставление данных. Например, внешней программе требуется идентифицировать – существует ли такой клиент в 1С и его баланс.

    Предоставление доступа к данным 1С – некорректно по причинам безопасности данных. Необходим скорее механизм проверки по имени и паролю с дальнейшим возвратом баланса.

    Этот подход называют – сервисным, когда программа предоставляет не данные, а сервис, который позволяет идентифицировать клиента и узнать его баланс.

    Как это работает?

    Функции извне вызываются (запускаются) запросом по протоколу SOAP .

    Для передачи параметров и результатов используется . Для работы с веб-сервисами Вы должны иметь базовое понимание про .

    Web сервисы 1С

    Web сервис 1С это способ, с помощью которого можно разрешить запускать некоторые функции 1С снаружи базы 1С, в том числе из других программ или других баз 1С.

    Это лучше, чем предоставление прямого доступа к данным 1С, так как при вызове метода (функции) web сервиса 1С, доступ к данным внешняя программа не имеет. Функция на языке 1С самостоятельно определяет право внешней программы получить конкретную толику данных по переданным параметрам (например, имени и паролю).

    Во многих случаях, можно не создавать свой пакет XDTO, а использовать по умолчанию – выбрав из списка пакет www.sample-package.org

    Методы web сервиса 1С

    После этого нужно добавить список функций (методов веб сервиса 1С) – которые будут предоставляться наружу. Называть их лучше англоязычно. Функция может иметь параметры.

    Базовые типы к использованию:

    • string – строка
    • int или integer – целое число
    • real – дробное число
    • date – дата.

    Для каждой добавленной функции веб сервиса 1С, в свойствах нужно создать , так же, как мы это делали в , и так далее.

    Именно эта функция 1С будет выполняться при вызове метода веб сервиса 1С. Не забывайте, что выполняться она будет на сервере 1С. Файловый режим работы 1С с веб-сервисами не рекомендуется.

    Функция обычно возвращает какие-либо данные. Обычно указывают тип string и возвращают строку XML.

    Строку XML можно сформировать с помощью объектов языка 1С для , а можно просто составить текстовую строку, в которой хранится текст XML.

    Публикация web сервиса 1С

    Как мы говорили раньше, другие программы должны «знать», что веб сервис 1С существует, имеет такой вот список методов и так далее.

    Описание должно лежать на веб сайте. Для этого нужно:

    • Иметь веб сайт
    • В свойствах web сервиса 1С указать имя файла с расширением 1cws, который является ссылкой на WSDL описание
    • Выложить этот файл на веб сайт в конфигураторе с помощью пункта меню Администрирование/Публикация на веб-сервере.

    Браузер должен отобразить некий файл XML (пример файла WSDL здесь http://ru.wikipedia.org/wiki/WSDL), а не ошибку, не пустую страницу и не невнятный текст на любой кодировке.

    После успешной публикации web сервис 1С можно использовать. Для этого в другой программе нужно использовать данный интернет адрес для ссылок на веб сервис 1С.

    Например, Visual Studio позволяет для любого языка (C++, C#, Visual Basic) – включить в проект web сервис 1С по его WSDL описанию и сгенерировать класс для использования веб-сервиса 1С.

    Веб-сервисы в 1С

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

    При этом под веб-сервисами будет пониматься системы, работающие в интернете и обеспечивающие взаимодействие с ними не только по SOAP (что является именно веб-сервисом), но и другими способами, включая обычные HTTP(S)-запросы.


    Риски использования веб-сервисов 1С

    В платформе 1С81 появилась реализация веб-сервисов.

    Но их использование чревато рисками:

    1. 1С8 плохо работает через HTTPS, средства диагностики отсутствуют, поэтому понять, почему при наличии сертификата сервис не хочет работать через HTTPS порой невозможно. Выход - реализация веб-сервисов через CURL или поднятие HTTPS-туннеля.
    2. 1С8 придерживается своих правил валидации WSDL-схем. Порой по необъяснимым причинам WSDL-схема не хочет загружаться в WS-ссылку. Узнать причину можно только на партнерском форуме у одного специалиста. Средства диагностики WSDL-схемы отсутствуют, не указывается даже причина или строка, на которой прерывается загрузка схемы.

    Правила построения сервисов по продаже

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

    Использование внешних SOAP-сервисов

    Веб-сервисы SOAP используют WSDL схемы и объекты XDTO для представления данных.

    Загрузка WSDL

    Для того, чтобы использовать внешний сервис, нужно загрузить его WSDL-схему.

    Проверка валидности WSDL-схемы

    Иногда WSDL-схема не загружается в 1С. Проверить валидность (правильность) схемы можно любым валидатором WSDL-схем, например http://www.validwsdl.com/ .

    Нужно загрузить схему на какой-нибудь http-сайт (можно по ftp) и указать адрес файла, в который загружена схема:

    Особенности загрузки WSDL в 1С

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

    Обработка для тестирования работающего внешнего веб-сервиса

    Для тестирования работающего внешнего веб-сервиса используйте обработку «ТестПроизвольногоВебСервиса.epf» из пакета к этой статье.

    Тестирование можно использовать на примере сервиса Morpher , склоняющего имена (адрес сервиса http://www.morpher.ru/WebServices/Morpher.asmx?WSDL):

    Таким способом можно протестировать любой сервис, который имеет простые точки входа, содержащие параметры простых типов: число, дата, строка.

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

    Стандартные средства отладки сервисов

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

    SOAP и HTTPS

    К сожалению, SOAP в 1С достаточно капризно ведет себя при работе через протокол HTTPS, практика показывает, что добиться HTTPS соединения невозможно, хотя возможность и продекларирована в платформе. Сказывается отсутствие средств диагностики и отладки для выяснения причин, из-за которых не устанавливается соединение. Поэтому удобно использовать SOAP через CURL.

    Встроенный механизм использования HTTPS подразумевает, что все сертификаты должны быть опубликованы в общем файле pem в каталоге программы 1С.

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

    Правила разработки сервиса на базе 1С

    Операция «Hello»

    Правилом хорошего тона является создание в сервисе операцию, которая информирует о том, что сервис доступен. Это облегчает жизнь интеграторов, им будет проще проверять, налажена ли связь с сервисом.

    Например, можно использовать операцию Hello без параметров, которая просто возвращает булево значение Истина.

    Публикация веб-сервиса

    Процедура хорошо описана в документации: file:///C:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81.htm#_Toc176167634 :

    Задача публикации Web-сервисов сводится к размещению конфигурационных файлов *.1cws Web-сервисов в соответствующем каталоге веб-сервера с соответствующими настройками для веб сервера. Для того, чтобы выполнить публикацию Web-сервисов, следует выполнить команду меню «Администрирование | Публикация Web-сервисов».

    В результате выполнения этой команды будет открыто окно публикации Web-сервисов.

    Окно публикации Web-сервисов содержит путь к веб-серверу и два списка:

    • «Web-сервисы» - список Web-сервисов конфигурации;
    • «Публикация» - список Web-сервисов, опубликованных на указанном веб-сервере.

    С помощью кнопки «Соединение…» следует указать веб-сервер, на котором требуется опубликовать Web-сервисы.

    Окно выбора пути к веб-серверу позволяет указать путь двумя способами:

    • на закладке «Файлы» - этот способ используется в том случае, когда публикация выполняется на том же компьютере, на котором установлен веб-сервер. В качестве пути указывается локальный каталог, соответствующий интернет-странице, с которой будет выполняться вызов публикуемого Web-сервера;
    • на закладке «FTP сайт» - этот способ используется в том случае, когда требуется опубликовать Web-сервис на удаленном компьютере. Для выполнения публикации необходимо указать параметры FTP-соединения с удаленным компьютером и каталог, в котором будет опубликован Web-сервис.

    Публикация выбранного Web-сервиса осуществляется с помощью кнопки «Опубликовать»

    Для отмены публикации Web-сервиса используется кнопка «Удалить».

    Публиковать можно в локальном каталоге или по FTP. Можно публиковать и на удаленный сервер по UNC-пути, если удаленный сервер входит в локальную сеть.

    После публикации веб-сервис доступен по адресу «http://localhost/test.1cws» или «http://xxx.ru/test.1cws», где xxx.ru - адрес удаленного сервера а localhost - типовой адрес локального сервера.

    Авторизация к веб-сервису 1С

    Для доступа к сервису нужно пройти аутентификацию.

    Вопросы авторизации хорошо рассмотрены тут: http://www.forum.mista.ru/topic.php?id=341168 и в документации file:///c:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81.htm

    Обычно веб-сервис работает под одним конкретным пользователем (чаще - специально созданным). Можно пользователя 1С "прикрепить" средствами Windows-аутентификации к пользователю Windows IUSR_ (для пользователя отключить авторизацию 1С). Как вариант, можно очистить список пользователей 1С, тогда авторизация не требуется.

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

    В свойствах Пользователь и Пароль объекта WSПрокси используется не логин 1С, а логин пользователя веб-сервера.

    Тестирование веб-сервиса 1С

    Для тестирования 1С как веб-сервиса используйте обработку «ТестПроизвольногоВебСервиса.epf», как описано в разделе «Тестирование работающего внешнего веб-сервиса».

    Файл 1cws и является WSDL-описанием веб-сервиса 1С.

    Использование сервисов в Рознице

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

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

    Сервис может быть по-разному интегрирован в розничную программу, написанную на языке 1С (УТ, Розница и другие):

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

    Организация служебных данных в 1С

    Для хранения информации о транзакции в чеке необходимо создать дополнительную табличную часть «Сложные продажи» с реквизитами:

    • Номенклатура - привязка к номенклатуре чека.
    • Параметр - ссылка на справочник «Сложные продажи: Параметры».
    • Значение - значение параметра, составного типа. Строковое представление должно быть довольно длинным (1024 символа), чтобы помещался текст чека.

    Справочник «Сложные продажи: Параметры» содержит перечень параметров транзакции.

    Табличную часть выгоднее использовать, чем набор реквизитов, т.к. у транзакции их может быть очень много, а в других чеках, не связанных с сервисом, эти реквизиты не будут использоваться, и будут занимать лишнее место. Кроме того, такое решение универсально для любого сервиса и не требует реструктуризации данных после внедрения нового сервиса.

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

    Использование обработок на языке 1С

    Рассмотрим на примере условной услуги Paym для конфигурации «Розница».

    1. Заведем в 1С предопределенный элемент справочника номенклатуры «Paym». В режиме 1С:Предприятия после обновления конфигурации ему нужно назначить вид товара «Услуга».
    2. В процедуре «Добавить номенклатуру в таб. часть» модуля формы «Регистрация продаж» вызываем обработку работы с сервисом, написанную на языке 1С. В случае успешного осуществления платежа записываем и проводим чек:
    Если (Номенклатура = Справочники.Номенклатура.Paym) И (ВидОперации Перечисления.ВидыОперацийЧекККМ.Возврат) Тогда ОбработкаПлатежа = Функции.ДатьВнешнююОбработку("Paym"); ФормаПлатежа = ОбработкаПлатежа.ПолучитьФорму(); Результат = ФормаПлатежа.ОткрытьМодально(); Если Результат = Неопределено Тогда Возврат; КонецЕсли; ЭтотОбъект.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли;
    1. Обработка должна напечатать предчек (если требуется), заполнить табличную часть сложных продаж и подготовить текст печати чека в предопределенном реквизите «PaymТекстЧека».
    2. В процедуре «Провести и распечатать чек» модуля чека подменяем наименование товара на сохраненное в реквизите для чека. Текст подменяется только для продажи, для возврата печатается просто название услуги, как обычно.
    ИначеЕсли ВидОперации Перечисления.ВидыОперацийЧекККМ.Возврат И Выборка.НомеклатураСсылка = Справочники.Номенклатура.Paym Тогда //Осипов PaymMaster СтрокаСложныхПродаж = СложныеПродажи.Найти(Справочники.СложныеПродажиПараметры.PaymТекстЧека, "Реквизит"); Если СтрокаСложныхПродаж Неопределено Тогда Товар.Наименование = СокрЛП(СтрокаСложныхПродаж.Значение); КонецЕсли;

    Отдельный вопрос - как обеспечить завершенность транзакции. Т.е. если транзакция прошла в сервисе, как сделать, чтобы она не потерялась в 1С. Наиболее оптимальный путь - сверка реестров. Но это предмет отдельного рассмотрения.

    Использование программ, интегрируемых с 1С

    XDTO

    Часто в веб-сервисах используется XDTO. Приведем наиболее важные советы и рецепты по использованию XDTO в 1С.

    XDTO в платформе 1С

    XDTO-пакеты, описанные в ветке «XDTO-объекты» конфигурации, доступны для создания типов и объектов в глобальной фабрике Фабрика XDTO. Это не сразу становится очевидным.

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

    В примере был описан список System, содержавший структуры XDTO. Чтобы создать саму структуру, нужно было получить ее тип таки вот образом:

    Тип = Фабрика.Тип("urn:my.ru:MasterData:Business", "Business").Свойства.Получить("System").Тип;

    Частые проблемы с XDTO

    Разные форматы XSD-схем

    В некоторых форматах теги называются xs:, в некоторых xsd:, но 1С благополучно понимает оба формата. Однажды была ситуация, что XSD нормально без ошибок импортировалась в 1С, но не создавала ни одного пакета. Причина была в отсутствии атрибута targetNamespace у тега, соответственно 1С не знала, в какой пакет помещать схему, но ошибок не выдавала.

    Сопровождение сервисов

    Учитывая, что сервис - это совокупность двух систем - 1С и внешней, ошибки могут быть в обоих системах, что снижает общую надежность работы.

    Для того, чтобы проще было разбираться в причинах отказов в работе сервисов, рекомендуется использовать комплекс мер.

    Протоколирование запросов

    Ссылки

    • XDTO
      • Хорошее описание XDTO http://pro1c.org.ua/index.php?showtopic=214
    • Бесплатные интересные веб-сервисы:
      • Аэрофлот - информация о расписании самолетов
      • Морфер - склонение имен http://www.morpher.ru/WebServices/Morpher.aspx
    • Неразобранные:
      • Установка и использование Веб-сервисов
        • v8: как изменить конфигурационный файл апача?
        • v8: продолжение темы с web-сервисами - не могу подключить web-сервис
        • v8: дальше ползу по веб-сервисам - не могу создать прокси...
        • Книга знаний: v8: Использование внешних web-сервисов в 1С:Предприятие 8 ;

    Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».

    Web-сервис (служба) – программа, которая организовывает взаимодействие между сайтами. Информация с одного портала передается на другой.

    Например, есть авиакомпания. У нее много рейсов, соответственно, много билетов. Информацию через веб-службу она передает сайту-агрегатору тур-путешествий. Пользователь, который заходит на агрегатор, сможет прямо там купить билеты этой авиакомпании.

    Другой пример веб-сервисов - это сайт отслеживания погоды, который содержит сведения о метеоусловиях в конкретном городе или по стране в целом. Данная информация также часто используется сторонними .

    Информация в интернете разнородна. Сайты управляются разными системами. используются разные протоколы передачи и шифрования. Веб-сервисы упрощают обмен информацией между разными площадками.

    Архитектура и протоколы Web-сервисов

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

    Механизм обмена данными формируется в описании Web Services Description. Это спецификация, охватывающая форматы пересылки, типы контента, транспортные протоколы, которые применяются в процессе обмена сведениями между заказчиком и транспортировщиком услуг.

    Сегодня чаще всего используются несколько технологий для реализации различных веб-сервисов:

    1. TCP/IP – протокол, который понимается практически любым сетевым оборудованием, от мэйнфреймов до портативных устройств и PDA.
    2. HTML - универсальный язык разметки, используемый для демонстрации контента устройствами потребителей.
    3. XML – универсальное средство для обработки всех разновидностей данных. На его базе могут работать и прочие протоколы обмена информацией: SOAP и WSDL.
    4. UDDI – универсальный источник распознавания, интеграции и описания. Работает, как правило, в частных сетях и пока не нашел достаточного распространения.

    Универсальность представленных технологий – основа для понимания веб служб. Они работают на стандартных технологиях, не зависящих от поставщиков приложений и прочих ресурсов сети. Могут использоваться в любых операционных системах, серверах приложений, языков программирования и т.д.

    Преимущества

    • Создание необходимых условий для взаимодействия программных компонентов вне зависимости от платформы.
    • Веб-сервисы основываются на открытых стандартных протоколах. За счет внедрения XML обеспечивается простота формирования и настройки веб-сервисов.
    • Применение HTTP гарантирует взаимодействие систем посредством межсетевого доступа.

    Недостатки

    • Невысокая производительность и большой объем трафика, в сравнении с системами RMI, CORBA, DCOM, за счет использоваться XML-сообщений в разрезе текста.
    • Уровень безопасности. Все современные веб-сервисы должны внедрять кодирование, и требовать авторизации пользователя. Хватит ли здесь наличия HTTPS или необходимы более надежные протоколы, как XML Encryption, SAML и т.д., – решаются в ходе разработки.

    Задачи веб-сервисов

    Веб-сервисы могут использоваться во многих сферах.

    B2B-транзакции

    Интеграция процессов идет сразу, без участия людей. Например, пополнение каталога интернет-магазина новыми товарами. Их привозят на склад, и кладовщик отмечает в базе данных приход. Автоматически информация передается в интернет-магазин. И покупатель вместо пометки “Нет на складе” на карточке товара видит его количество.

    Интеграция сервисов предприятий

    Если в компании используются корпоративные программы, то веб-сервис поможет настроить их совместную работу.

    Создание системы клиент-сервер

    Сервисы используются, чтобы настроить работу клиента и сервера. Это дает преимущества:

    • можно продавать не само программное обеспечение, а делать платным доступ к веб-сервису;
    • легче решать проблемы с использованием стороннего ПО;
    • проще организовывать доступ к контенту и материалам сервера.

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