Компьютерные подсказки - Znamenka24

Что такое веб-сервис. Павел чистов Web сервис 1с 8.3 пример

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

  • Расписания поездов, автобусов, самолетов;
  • Курсов валют;
  • Списка товаров с определенного ресурса.

Обмен данными происходит на основе SOAP, т.е. с помощью структурированных сообщений. Сами сообщения создаются на базе XML схем и в соответствии со стандартами этих выражений. Язык спецификации Web-сервиса так же стандартизирован — это WDSL.

Между приложениями и ресурсами сообщения передаются по HTTP протоколу.

Для реализации этого принципа в конфигурации был добавлен новый объект метаданных Web-сервис (Рис.1)

Как видно из рисунка, найти этот объект можно на закладке «Общие».

Создание нового Web-сервиса

Как и любой другой объект метаданных, новый Web-сервис добавляется из Конфигуратора.

Окно создания сервиса показано на Рис.2

Рис.2

  1. На первой закладке необходимо определить Имя и представление нового объекта;
  2. В каких подсистемах будет принимать участие сервис, определяется на второй закладке «Подсистемы»;
  3. Список и определение выполняемых сервисом операторов можно посмотреть на закладке «Операции», здесь мы указываем тип возвращаемого операцией значения и процедуру, описывающую исполняемый алгоритм;
  4. Идентифицировать ресурс можно с помощью строки URI (Uniform Resource Identifier), пространство имен URI, а так же описание XDTO пакета можно на закладке «Прочее».

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

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

Прежде, чем создавать Web-сервис с возможностью стороннего доступа, необходимо:

  • Запустить сервер;
  • Установить модули расширения «Web-сервиса»;
  • Опубликовать базу на ресурсе.

Простейший пример создания сервиса «ПриветПока»

Для демонстрации того, как работает этот механизм, мы создадим веб-сервис, который в ответ на переданный запрос, возвращает одно из трех значений: «Привет!», «Пока!», «Не понимаю»:

Если после публикации на веб-сервере, в браузере перейти по адресу, присвоенному сервису (состоит из строки, прописанной в свойстве «URI пространство имен» и строки с наименованием файла выгрузки), то можно увидеть скрипт, автоматически созданный платформой для нашего проекта.

Публикация веб-сервиса происходит из пункта меню Администрирование->Публикация на веб-сервере.

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

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

Получим данные с нашего ресурса

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

В 1С предусмотрено две возможности, для обращения к стороннему Web-сервису:

  • Путем непосредственного создания нового объекта конфигурации WS-ссылка;
  • Программно создав ссылку, не затрагивая структуру базы данных.

Рассмотрим первый вариант.

В результате создания нашего Web-сервиса «Общалка» мы получили некоторый ресурс, размещенный по известному нам адресу. Именно этот адрес нам необходимо будет ввести в диалоговое окно, выведенное при создании WS-ссылки (Рис.5)

Рис.5

Виртуальная карта нашего сервиса будет создана автоматически и отразится в дереве Конфигуратора. В частности, будет отображена операция «Приветствие» и её единственный параметр.

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

Простейший код, позволяющий получить отклик от нашего Web-сервиса, представлен на Рис.6

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

Чтобы, не внося изменения в конфигурацию, использовать наш сервис, необходимо в представленном на Рис.6 коде первую строку заменить на две (Рис.7):

Рис.7

Таким образом, создание нового объекта метаданных мы заменили на его определение, а последовательность и алгоритм действий остались прежними.

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

Все чаще и чаще встречаются обмены, используя технологию Web-Сервисов. Это удобно, т.к для хостовой базы данных достаточно установить расширение Web-Сервиса и обработчик данных, а для клинтского решения подключиться к Web-Сервису. Технология является мультиплатформенной и на данный момент ее использование весьма актуально.

Примерами таких веб-сервисов можно назвать:
http://www.cbr.ru/scripts/Root.asp?Prtid=DWS веб-сервис Центробанка, для получения ежедневных данных.
http://api.yandex.ru/speller/doc/dg/concepts/api-overview.xml веб-сервис Яндекса проверки правописания.
https://www.flightstats.com/developers/bin/view/Web+Services/WSDL ряд веб сервисов авиастатистики, для мониторинга полетов, сведений о погоде, и.т.п.
WSDL (Web Services Description Language) - язык описания веб-сервисов и доступа к ним, основанный на языке XML. (спецификация http://www.w3.org/TR/wsdl).

SOAP (Simple Object Access Protocol - простой протокол доступа к объектам) - протокол обмена структурированными сообщениями в распределенной вычислительной среде. SOAP используется для обмена произвольными сообщениями в формате XML и удалённого вызова процедур (RPC). (спецификация http://www.w3.org/TR/soap/).

XDTO (XML Data Transfer Objects) - механизм объектного моделирования данных, описываемых с помощью схемы XML (подробнее http://v8.1c.ru/overview/xdto.htm).

Большинство примитивных типов сериализованных объектов разработана компание W3 и их описание находится в пространстве имен «http://www.w3.org/2001/XMLSchema».
и так:
Задание 1: Установка платформы 1С: Предприятие, установка компоненты IIS сервера, связь Web-Расширения 1С с сервером IIS.

При установке платформы 1С: Предприятие необходимо установить Web-Расширение.

Рис. 1. Выбранные компоненты в момент установки 1С

В меню «Панель управленияВсе элементы панели управленияПрограммы и компоненты» Необходимо выполнить установку дополнительных компонентов Windows «Включение или отключение компонентов Windows» где указать все компоненты IIS (за исключением FTP, для текущей работы он не требуется). После установки рекомендуется перезапустить операционную систему.

Рис. 2. Выбранные компоненты в момент установки IIS

В меню «Панель управленияВсе элементы панели управленияАдминистрирование» запустить консоль «Диспетчер служб IIS», где открыть элемент «Пулы приложений» открыть пул «DefaultAppPool» в контекстном меню выбрать «Дополнительные параметры…» где элемент «Разрешены 32-рязрядные приложения» надо установить «True». Это необходимо для работы Web-Расширения 1С, т.к. оно является 32-битным прилодением.

В той же консоли «Диспетчер служб IIS», выбрать элемент «Default Web Site», выбрать действие «Проверка подлинности» где необходимо включить варианты: «Анонимная проверка подлинности», «Обычная проверка подлинности», «Проверка подлинности Windows».

Теперь возможна публикация Web-Сервисов 1С на сервере IIS. Но для того, чтобы было возможно выполнить эту публикацию, необходимо запустить Конфигуратор 1С: Предприятия от имени пользователя «Администратор».

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

Рис. 3. Структура данных в созданной конфигурации 1С

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

Документ «Заказ покупателя», который будет содержать табличную часть «Товары», каждая строка которой будет иметь информацию о номенклатуры (элемент типа «СправочникСсылка.Номенклатура») и количестве (элемент «Количество» типа «Число» беззнаковое с 15 знаками до запятой и 3 после).

Задание 3: Создание и публикация Веб-Сервиса 1С.
В группировке «Общие» конфигурации создать новый элемент типа «XDTO-пакеты», первоначально для передачи номенклатуры. Его можно назвать, например «NomenclatureXDTO». URL пространство имен, в соответствии со спецификацией WSDL необходимо назначить в виде URL адреса спецификации данного пакета, например
«company.com/1C/Nomenclature». В этом пакете необходимо создать тип объекта, например «Nomenclature», в котором есть реквизиты «Code» и «Name», с соответствующим типом «string (http://www.w3.org/2001/XMLSchema)».
Теперь надо создать второй XDTO пакет, который будет содержать информацию о заказах покупателей, его можно назвать «ClientOrderXDTO» в пространсте имен «company.com/1C/ClientOrder». В первую очередь необходимо подключить директиву импорта «company.com/1C/Nomenclature», для того, чтобы можно было использовать созданный нами пакет сериализации номенклатуры. Это необходимо для передачи номенклатуры, содержащейся в табличной части документа «Заказы покупателей».

Теперь надо создать тип объекта «ClientOrderRow», содержащий одну строку табличной части. Этот тип будет состоять из совокупности реквизитов «Nomenclature» и «Count», соответственно для номенклатуры необходимо указать тип объекта «Nomenclature (http://company.com/1C/Nomenclature)», а для количества, «double (http://www.w3.org/2001/XMLSchema)».
Тип объекта, содержащий сам заказ можно назвать «ClientOrder» должен содержать номер заказа, дату создания и массив элементов из табличной части заказа. «Number» типа строка, «Date» типа «dateTime (http://www.w3.org/2001/XMLSchema)» и «Products» типа «ClientOrderRow (http://company.com/1C/ClientOrder)», при этом необходимо указать, что минимальное количество «0», а максимальное количество «-1», это говорит о том, что этот объект будет массивом.

Но, поскольку необходимо возвращить список заказов, то необходимо создать тип объекта, содержащий этот массив, потому надо создать еще один элемент, называемый «ArrayOfClientOrders», у которого будет всего один реквизит, называемый «ClientOrder» типа «ClientOrder (http://company.com/1C/ClientOrder)».


Рис 4. Структуры XDTO пакетов в 1С

На этом создание описания передаваемых значений можно считать оконченным. Необходимо описать сам веб сервис и его методы.
В группировке «Общие» конфигурации надо создать объект, Web-Сервиса. Его можно назвать «Service». Во вкладке «Прочее» надо указать пространство имен, которому принадлежит веб-сервис, например «company.com/1C», а так же список XDTO пакетов, содержащий только что созданные пакеты «company.com/1C/Nomenclature, company.com/1C/ClientOrder». Во вкладке «Операции» создать метод «GetClientOrders», который будет возвращать значения «ArrayOfClientOrders (http://company.com/1C/ClientOrder)», при этом установить возможность возвращать пустые значения и нажать на поле с лупой, называемое «Имя метода», тем самым в модуле веб-сервиса будет создана функция, который будет вызвана при обращении к данному методу веб-сервиса.

Для того, чтобы корректно описать функцию, получающую из базы данных и возвращающую список заказов покупателей, необходимо знать внутренний язык 1С, потому код этой функции находится в приложении 1. В пояснении нуждается то, что «ФабрикаXDTO», это некоторый менеджер, который выполняет сериализацию объектов, и этот сериализованный объект необходимо возвратить. При этом происходит выборка всех заказов, содержащихся в базе данных, сериализация полей номера, даты, и строк табличной части, при этом номенклатура, нуждается в дополнительной сериализации, и уже упакованный объект вставляется в общую структуру. Собирается массив упакованных объектов, сериализуется в пакет массива. И отправляется клиенту, как результат вызванной функции.
Для публикации веб-сервиса в меню конфигуратора 1С выбрать «АдминистрированиеПубликация на веб-сервере…», после чего указать название публикации веб-сервиса, например «Company», имя сервиса, например «Service» и адрес «service.1cws», а так же указать путь для публикации, например «C:\inetpub\www\root\Company».

После этого WSDL структура Web-Сервиса будет доступна по адресу «localhost/Company/ws/service.1cws?wsdl»

Задание 4: Создание клиента на C# платформы.NET 4.0.
В Visual Studio создать новое консольное приложение C#.

Далее вызвать контекстное меню над элементом проекта «Reference», и выполнить действие «Add service reference…», в открывшемся меню нажать на кнопку «Advanced…», откроется окно, где необходимо нажать на кнопку «Add Web Reference…».
Откроется меню, в которое необходимо вставить ссылку на WSDL описание веб-сервиса.


Рис. 5. Подключение веб-сервиса к проекту на C#

Для созданного в 1С веб-сервиса эта ссылка будет иметь вид «localhost/Company/ws/service.1cws?wsdl», после корректного получения описания веб-сервиса надо указать название пространства имен.NET, из под которого будет доступно обращение к веб-сервису, например «CompanyService», затем нажать на кнопку «Add Reference…», Visual Studio автоматически сгенерирует классы по этому описанию. В проекте достаточно будет вызывать методы сгенерированного класса, при этом сериализация и вызов будут выполнять платформой.NET.

Далее необходимо написать программу, которая будет обращаться к веб сервису, и выводить пользователю полученные данные. Для этого необходимо знать язык C#, код программы представлен в приложении 2. Из этого кода надо пояснить, то, что создание объекта «Service», есть не что иное, как создание менеджера обращения к сервису. От этого имени будут вызывать методы веб-сервиса.
«_1CWebServiceClientConsole» - это общее пространство имени проекта, оно выбирается при создании. Пространство имени веб-сервиса, полученное из WSDL структуры полностью включено в пространство имени проекта, что позволяет вызывать удаленные методы «как свои».

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

Приложение 1: код функции GetClientOrders на языке 1С
Код 1C v 8.2 УП Функция GetClientOrders()
МассивЗаказовПокупателейТип = ФабрикаXDTO.Тип("http://company.com/1C/ClientOrder", "ArrayOfClientOrders");
ЗаказПокупателяТип = ФабрикаXDTO.Тип("http://company.com/1C/ClientOrder", "ClientOrder");
ЗаказПокупателяСтрокаТип = ФабрикаXDTO.Тип("http://company.com/1C/ClientOrder", "ClientOrderRow");
НоменклатураТип = ФабрикаXDTO.Тип("http://company.com/1C/Nomenclature", "Nomenclature");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателя.Ссылка,
| ЗаказПокупателя.Номер,
| ЗаказПокупателя.Дата
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Количество() = 0 Тогда
Возврат Null;
КонецЕсли;
МассивЗаказовПокупателей = ФабрикаXDTO.Создать(МассивЗаказовПокупателейТип);

Пока Выборка.Следующий() Цикл
ЗаказПокупателя = ФабрикаXDTO.Создать(ЗаказПокупателяТип);
ЗаказПокупателя.Number = Выборка.Номер;
ЗаказПокупателя.Date = Выборка.Дата;
Для каждого Строка Из Выборка.Ссылка.Товары Цикл
ЗаказПокупателяСтрока = ФабрикаXDTO.Создать(ЗаказПокупателяСтрокаТип);
Номенклатура = ФабрикаXDTO.Создать(НоменклатураТип);
Номенклатура.Code = Строка.Номенклатура.Код;
Номенклатура.Name = Строка.Номенклатура.Наименование;
ЗаказПокупателяСтрока.Nomenclature = Номенклатура;
ЗаказПокупателяСтрока.Count = Строка.Количество;
ЗаказПокупателя.Products.Добавить(ЗаказПокупателяСтрока);
КонецЦикла;
МассивЗаказовПокупателей.ClientOrder.Добавить(ЗаказПокупателя);
КонецЦикла;
Возврат МассивЗаказовПокупателей;
КонецФункции

Приложение 2: код программы на C# осуществляющий обращение к веб-сервису
Код

using System;
using _1CWebServiceClientConsole.CompanyService;

Namespace _1CWebServiceClientConsole
{
class Program
{
static void Main(string args)
{
using (Service service = new Service())
{
var arrayOfClientOrders = service.GetClientOrders();

If (arrayOfClientOrders == null)
Console.WriteLine("Не найдена");

Foreach (var clientOrder in arrayOfClientOrders)
{
Console.WriteLine("Заказ покупателя №" + clientOrder.Number + " от " + clientOrder.Date);
Console.WriteLine("*****************************************************");
foreach (var clientOrderRow in clientOrder.Products)
{
Console.WriteLine(clientOrderRow.Nomenclature.Name + " " + clientOrderRow.Count);
}
Console.WriteLine("*****************************************************n");
}
}
Console.ReadKey();
}
}
}

Печать (Ctrl+P)

Механизм Web-сервисов в системе «1С:Предприятие» является средством поддержки сервисно-ориентированной архитектуры (Service-Oriented Architecture, SOA).
Сервисно-ориентированная архитектура представляет собой прикладную архитектуру, в которой все функции определены как независимые сервисы с вызываемыми интерфейсами. Обращение к этим сервисам в определенной последовательности позволяет реализовать тот или иной бизнес-процесс.
Сервисно-ориентированная архитектура предлагает новый подход к созданию распределенных информационных систем, в которых программные ресурсы рассматриваются как сервисы, предоставляемые по сети. Такой подход позволяет обеспечить быструю консолидацию распределенных компонентов (сервисов) в единое решение для поддержки определенных бизнес-процессов.
Механизм Web-сервисов позволяет использовать систему «1С:Предприятие» как набор сервисов в сложных распределенных и гетерогенных системах, а также позволяет интегрировать ее с другими промышленными системами с использованием сервисно-ориентированной архитектуры.
Конфигурация системы «1С:Предприятие» может экспортировать свою функциональность через Web-сервисы. Определения Web-сервисов задаются в дереве конфигурации и становятся доступны произвольным информационным системам благодаря публикации их на веб-сервере.
Кроме этого, система «1С:Предприятие» может обращаться к Web-сервисам сторонних производителей как через статические ссылки, определенные в дереве конфигурации, так и с помощью динамических ссылок, создаваемых средствами встроенного языка. Рис. 1. Web-сервисы

В основе сервисной архитектуры системы «1C:Предприятие 8» находится менеджер сервисов. Менеджер сервисов выполняет следующие функции:
● управление пулом соединений с информационными базами;
● поддержка WSDL описания сервиса;
● реализация протокола SOAP, сериализация сообщений, вызов соответствующего сервиса.
Менеджер сервисов выполняется в процессе сервисного хоста, который выполняет функцию приема/передачи сообщений из/в менеджер сервисов. В качестве сервисного хоста может использоваться веб-сервер IIS или Apache.
Менеджер сервисов содержит в себе пул соединений, через которые идет взаимодействие с базами данных системы «1С:Предприятие».
Механизм Web-сервисов, реализованный в системе «1С:Предприятие», поддерживает следующие стандарты:
● SOAP 1.1,
● SOAP 1.2,
● WSDL 1.1,
● WS-I Basic Profile 1.1,
● HTTP 1.1,
● TLS 1.x (TLS 1.1 и 1.2 поддерживаются, если не требуется передача клиентского сертификата на сервер), включая криптографические алгоритмы,
соответствующие ГОСТ Р 34.10-2001, Р 34.10-94, Р 34.11-94 и 28147-89;
● MTOM;
● Аутентификация: Basic, NTLM/Negotiate.

Для получения доступа к Web-сервису необходимо использовать адрес, который формируется следующим образом:

http://host/base/ws/ИмяWebСервиса

Http://host/base/ws/АдресWebСервиса .

Более подробно рассмотрим составные части адреса:

http://host/base – обычный URL, по которому выполняется доступ, например, к информационной базе с помощью веб-клиента. При наличии разделителей, не поддерживается указание значений разделителей с помощью параметра Z командной строки запуска клиентского приложения.

ws – признак того, что выполняется обращение к Web-сервису (в отличие от hs, который определяет доступ к HTTP-сервису, см. здесь).

ИмяWebСервиса – имя Web-сервиса. Задается в свойстве объекта Web-сервис.

АдресWebСервиса – описывает альтернативное имя для доступа к Web-сервису. Задается в свойстве Имя файла публикации объекта Web-сервис.Может быть изменено при публикации Web-сервиса.

Обращения по имени ИмяWebСервиса и адресу АдресWebСервиса Web-сервиса являются равносильными.

Предоставление функциональности через Web-сервисы

Для того чтобы функциональность системы «1С:Предприятие» стала доступна внешним потребителям Web-сервисов, нужно выполнить следующие действия:
● создать в конфигурации необходимое количество Web-сервисов,
● опубликовать Web-сервисы с помощью специального инструмента конфигуратора.
Описание процедуры публикации Web-сервисов и описание использования Reverse Proxy для доступа к «1С:Предприятию» написано главе 7 “Руководство администратора” на диске ИТС.
Создание Web-сервиса заключается:
● в добавлении в дерево метаданных объекта конфигурации Web-сервис,
● описании операций, которые может выполнять создаваемый Web-сервис,
● описании параметров операций Web-сервиса.
Объект конфигурации Web-сервис содержит модуль, в котором создаются процедуры на встроенном языке, выполняемые при вызове тех или иных операций Web-сервиса. Типы параметров операций Web-сервиса описываются с помощью типов XDTO и могут представлять собой либо значения XDTO, либо объекты XDTO.
Вызов Web-сервиса происходит следующим образом:
● из пула соединений выбирается подходящее соединение с информационной базой; при отсутствии необходимого соединения соединение создается;
● создается новый сеанс и для созданного сеанса вызывается событие УстановкаПараметровСеанса (в модуле сеанса);
● выполняется вызов затребованного метода Web-сервиса, при этом происходит вызов обработчика УстановкаПараметровСеанса() (в модуле сеанса) каждый раз, когда происходит обращение к не инициализированному параметру сеанса.
СОВЕТ. Не рекомендуется выполнять ресурсоемкие операции в обработчике события УстановкаПараметровСеанса .
Событие УстановкаПараметровСеанса модуля сеанса вызывается на сервере в привилегированном режиме. Модуль вызванного сервиса исполняется на
сервере в обычном режиме.
Модуль сеанса служит для инициализации параметров сеанса и выполнения некоторого набора команд при вызове любого Web-сервиса системы «1С:Предприятие».

Пример реализации Web-сервиса

Например, требуется создать Web-сервис системы «1С:Предприятие», который должен по переданному номеру расходной накладной возвращать состав ее табличной части. Аналогичный пример с помощью HTTP-сервисов будет рассмотрено в другой статьи.
Для описания возвращаемого значения создадим пакет XDTO ДанныеРасходнойНакладной с пространством имен http://www.MyCompany.ru/shipment, содержащий три типа объектов XDTO:
● Номенклатура – для передачи данных элемента справочника Номенклатура. Этот тип объекта XDTO будет содержать следующие свойства:
● Наименование – тип string из пространства имен
ПолноеНаименование – тип string из пространства имен http://www.w3.org/2001/XMLSchema;
● ШтрихКод – тип string из пространства имен http://www.w3.org/2001/XMLSchema;
● ЗакупочнаяЦена – тип int из пространства имен http://www.w3.org/2001/XMLSchema.
СтрокаРасходнойНакладной – для передачи данных одной строки расходной накладной. Этот тип объекта XDTO будет содержать следующие свойства:
● Номенклатура – тип Номенклатура из пространства имен ; представляет собой ссылку на объект XDTO,
который мы определили выше;
● Количество – тип int из пространства имен http://www.w3.org/2001/XMLSchema;
● Цена – тип int из пространства имен http://www.w3.org/2001/XMLSchema;
● Сумма – тип int из пространства имен http://www.w3.org/2001/XMLSchema.
РасходнаяНакладная – для передачи данных всех строк расходной накладной. Этот тип объекта XDTO будет содержать единственное свойство:
● Состав – тип СтрокаРасходнойНакладной из пространства имен http://www.MyCompany.ru/shipment . Представляет собой ссылку на объект XDTO,
который мы определили выше. Для того чтобы это свойство могло содержать неограниченное множество значений, необходимо установить его
свойство Верхняя граница в значение -1.
После того как необходимые типы XDTO созданы, следует добавить в конфигурацию новый Web-сервис ДанныеРасходнойНакладной со следующими значениями свойств:

URI Пространства имен – http://www.MyCompany.ru/shipment ;
● Пакеты XDTO – ДанныеРасходнойНакладной ;
Имя файла публикации – shipment.1cws .
У созданного Web-сервиса следует определить операцию Получить со следующими значениями свойств:
Тип возвращаемого значения РасходнаяНакладная из пространства имен http://www.MyCompany.ru/shipment ;
Возможно пустое значение – установлен;
● Имя процедуры – Получить .
У операции Получить следует определить параметр НомерДокумента со следующими значениями свойств:
● Тип значения – тип string из пространства имен http://www.w3.org/2001/XMLSchema;
Направление передачи – Входной .
После этого следует открыть модуль созданного Web-сервиса и разместить в этом модуле функцию Получить() , которая будет выполняться при вызове данного Web-сервиса.

Функция Получить (НомерДокумента) Экспорт // Получить объект расходной накладной по переданному номеру ДокументСсылка = Документы.РасходнаяНакладная. НайтиПоНомеру(НомерДокумента, ТекущаяДата()); Если ДокументСсылка.Пустая() Тогда Возврат Неопределено; КонецЕсли; Документ = ДокументСсылка.ПолучитьОбъект() ; // Получить типы объектов XDTO НоменклатураТип = ФабрикаXDTO.Тип ("http://www.MyCompany.ru/shipment", "Номенклатура"); РасходнаяНакладнаяТип = ФабрикаXDTO.Тип ("http://www.MyCompany.ru/shipment", "РасходнаяНакладная"); СтрокаРасходнойНакладнойТип = ФабрикаXDTO.Тип ("http://www.MyCompany.ru/shipment", "СтрокаРасходнойНакладной"); // Создать объект XDTO расходной накладной РасходнаяНакладная = ФабрикаXDTO.Создать (РасходнаяНакладнаяТип); Для Каждого СтрокаДокумента Из Документ.Состав Цикл // Создать объекты XDTO строки расходной накладной // и номенклатуры СтрокаРасходнойНакладной = ФабрикаXDTO .Создать(СтрокаРасходнойНакладнойТип); Номенклатура = ФабрикаXDTO.Создать (НоменклатураТип); // Заполнить свойства номенклатуры Номенклатура.Наименование = СтрокаДокумента.Номенклатура.Наименование; Номенклатура.ПолноеНаименование = СтрокаДокумента.Номенклатура.ПолноеНаименование; Номенклатура.ШтрихКод = СтрокаДокумента.Номенклатура.ШтрихКод; Номенклатура.ЗакупочнаяЦена = СтрокаДокумента.Номенклатура.ЗакупочнаяЦена; // Заполнить свойства строки расходной накладно й СтрокаРасходнойНакладной.Номенклатура = Номенклатура; СтрокаРасходнойНакладной.Количество = СтрокаДокумента.Количество; СтрокаРасходнойНакладной.Цена = СтрокаДокумента.Цена; СтрокаРасходнойНакладной.Сумма = СтрокаДокумента.Сумма; // Добавить строку расходной накладной РасходнаяНакладная.Состав.Добавить (СтрокаРасходнойНакладной); КонецЦикла; // Вернуть расходную накладную Возврат РасходнаяНакладная ; КонецФункции

Работа с веб-сервисами сторонних поставщиков

Система «1С:Предприятие» может использовать веб-сервисы, предоставляемые другими поставщиками, несколькими способами:
● с помощью статических ссылок, создаваемых в дереве конфигурации;
● с помощью динамических ссылок, создаваемых средствами встроенного языка;
● комбинацией предыдущих способов.
Преимущество использования статических ссылок заключается в большей скорости работы, т. к. описание веб-сервиса поставщика получается один раз, при создании ссылки. В дальнейшем при обращении к данному веб-сервису используется существующее описание веб-сервиса.
При использовании динамических ссылок описание веб-сервиса поставщика будет получаться системой «1С:Предприятие» каждый раз при вызове веб-сервиса, что, естественно, будет замедлять работу с данным веб-сервисом. Однако преимуществом такого подхода является возможность получения актуального описания веб-сервиса поставщика. При использовании же статических ссылок для получения актуального описания веб-сервиса следует выполнить повторный импорт WSDL-описания средствами конфигуратора и сохранение измененной конфигурации.
При эксплуатации прикладных решений может возникать ситуация, когда один и тот же веб-сервис предоставляется по разным адресам (URL), однако имеет абсолютно одинаковое описание (WSDL). В этом случае возникает потребность загрузить описание веб-сервиса в конфигурацию (создать объект в дереве объектов конфигурации), но во время использования указать конкретный адрес, по которому расположен веб-сервис. Комбинированный способ позволяет работать таким образом. В качестве примера можно рассмотреть следующую ситуацию: есть тиражируемый веб-сервис, выполняющий
некоторую функцию. Прикладное решение, написанное на «1С:Предприятии», пользуется услугами данного сервиса, при этом адрес сервиса может быть различным (сервис тиражируемый), а описание – фиксированное. Тогда в прикладное решение может загрузить описание веб-сервиса, а в настройках прикладного решения предусмотреть ввод адреса конкретного экземпляра сервиса, который (адрес) и будет использоваться при работе.
Также доступно и другой способ: используется динамическая ссылка, но адрес расположения веб-сервиса получается не из файла описания (WSDL), а непосредственно указывается при создании объекта.
При попытке загрузить описание Web-сервиса в конфигураторе (создание статической ссылки) или при использовании динамической ссылки (при помощи объекта WSОпределения), система выполняет проверку загружаемого описания Web-сервиса (WSDL). Если в описании Web-сервиса присутствует ошибка (с «точки зрения» системы «1С:Предприятия»), то описание не будет загружено и будет сгенерировано исключение. В тексте исключения будет находиться подробная диагностика причин отказа в загрузке. Ошибки WSDL располагаются в порядке их обнаружения. Каждая ошибка WSDL содержит запись с детальным описанием следующего вида:

<Тип элемента с ошибкой>.<Имя>
[<Тип элемента с ошибкой>.<Имя>[…]]
<Описание ошибки>
<Тип элемента с ошибкой>
<Имя>
В этом описании:
● Тип элемента с ошибкой – тип элемента WSDL. Чаще всего соответствует имени тега в xml-файле, описывающем Web-сервис.
● Описание ошибки – описание конкретной ошибки.
● Имя – имя объекта WSDL, в котором произошла ошибка.

Пример использования статической WS-ссылки

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

Прежде всего, следует добавить в дерево конфигурации новый объект конфигурации WS-ссылка с именем ДанныеРасходнойНакладной, ссылающийся на опубликованный сервис. Для этого следует выполнить импорт WSDL-описания опубликованного сервиса и в качестве URL указать http://www.MyCompany.ru/shipment/ws/Shipment.1cws?wsdl . Описание импорта WSDL-описания написано в другой статьи.
После этого, например, в модуле приходной накладной, можно создать процедуру, приведенную ниже. Она заполняет табличную часть документа данными расходной накладной поставщика, полученными с помощью веб-сервиса поставщика.

Процедура ПолучитьДанныеРасходнойНакладной (НомерНакладнойПоставщика) Прокси = WSСсылки.ДанныеРасходнойНакладной. СоздатьWSПрокси("http://www.MyCompany.ru/shipment", "ДанныеРасходнойНакладной", "ДанныеРасходнойНакладной"); ДанныеНакладной = Прокси.Получить() ; Если ДанныеНакладной = Неопределено Тогда Возврат; КонецЕсли; // Заполнить приходную накладную полученными данными Для Каждого СтрокаНакл Из ДанныеНакладной.Состав Цикл НоваяСтрока = ДокументОбъект.Состав.Добавить(); НоваяСтрока.Количество = СтрокаНакл.Количество; НоваяСтрока.Цена = СтрокаНакл.Цена; НоваяСтрока.Сумма = СтрокаНакл.Сумма; // Найти элемент номенклатуры по переданным данным // (например, по штрихкоду) НоваяСтрока.Номенклатура = Справочники.Номенклатура. НайтиПоРеквизиту ("ШтрихКод", СтрокаНакл.Номенклатура.ШтрихКод ); КонецЦикла; КонецПроцедуры

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

Пример использования динамической WS-ссылки

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

// Создать WS-прокси на основании WS-определения
Определение = Новый WSОпределения (“http://www.MyCompany.ru/shipment/ws/Shipment.1cws?wsdl”);
Прокси = Новый WSПрокси (Определение , “http://www.MyCompany.ru/shipment”, “ДанныеРасходнойНакладной”, “ДанныеРасходнойНакладнойSoap”);
В то время как создание WS-прокси на основе статической ссылки выглядит следующим образом:

// Создать WS-прокси на основании ссылки
Прокси = WSСсылки.ДанныеРасходнойНакладной. СоздатьWSПрокси (“http://www.MyCompany.ru/shipment”, “ДанныеРасходнойНакладной”, “ДанныеРасходнойНакладной”);
Если адрес реального расположения сервиса отличается от адреса, который указан в WSDL-файле, используемом при создании определения веб-сервисов, новый адрес необходимо явно указать при создании объекта WSПрокси на основании определения веб-сервисов:

// Создать WS-прокси на основании WS-определения Определение = Новый SОпределения ("http://www.MyCompany.ru/shipment/ws/Shipment.1cws?wsdl"); Прокси = Новый WSПрокси (Определение , "http://www.MyCompany.ru/shipment", "ДанныеРасходнойНакладной", "ДанныеРасходнойНакладнойSoap",);

Редактирование свойств Web-сервиса

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

Свойства «Операции»

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

● Тип возвращаемого значения – тип значения, которое возвращает операция Web-сервиса. Может являться типом значения XDTO или типом объекта
XDTO.
● Возможно пустое значение – показывает, может ли возвращаемое значение принимать неопределенное значение.
● В транзакции – показывает, будет ли выполняться код модуля Web-сервиса в транзакции или нет. Если свойство установлено, то при вызове Web-сервиса автоматически будет начата транзакция, а при завершении работы Web-сервиса транзакция будет либо зафиксирована, либо произойдет откат транзакции (в зависимости от результатов выполнения). Если свойство не установлено, при начале исполнения модуля Web-сервиса
транзакция не будет начата.
● Имя метода – имя экспортируемой процедуры модуля Web-сервиса, которая будет выполнена при вызове данного свойства.
На закладке Подсистемы указывается, к каким подсистемам относятся объекты данного типа.
На закладке Прочее определяются следующие свойства:
● URI пространства имен – содержит URI пространства имен Web-сервиса. Каждый Web-сервис может быть однозначно идентифицирован по своему
имени и URI пространству имен, которому он принадлежит. Пространство имен сервиса не должна совпадать с известными пространствами имен, которые уже используются или зарезервированы другими организациями. Рекомендуется в пространство имен сервиса включать фрагмент, уникальный для организации, которая ведет разработку Web-сервиса. Например, для организации с названием Промресурс имеет смысл начинать все пространства имен с префикса, например, http://promresurs.com. Тогда URI пространства имен Web-сервиса будет иметь вид http://promresurs.com/public/services/OurService.
● Пакеты XDTO – перечень пакетов XDTO, типы которых могут использоваться в качестве типов возвращаемого значения операций и типов параметров операций Web-сервиса.
● Имя файла публикации – имя файла описания Web-сервиса, который расположен на веб-сервере.
По кнопке Модуль открывается редактор модуля Web-сервиса.

Свойства «Параметр»
Помимо общих свойств объектов конфигурации параметр операции Web-сервиса содержит следующие свойства:
● Тип значения – тип значения параметра операции Web-сервиса. Может являться типом значения XDTO или типом объекта XDTO.
● Возможно пустое значение – показывает, может ли значение параметра операции принимать неопределенное значение.
● Направление передачи – определяет направление передачи данных с помощью данного параметра. Возможные значения:
● Входной – означает, что параметр используется для передачи данных Web-сервису;
● Выходной – означает, что параметр используется для получения данных от Web-сервиса;
● Входной-Выходной – означает, что параметр может использоваться как для передачи данных, так и для их получения от Web-сервиса.

Знаю, что на хабре не очень-то жалуют многострадальную 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Определения("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL"); Прокси = Новый WSПрокси(Определения, "http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap");
Сначала мы создаем так называемые определения для веб-сервиса из его WSDL. Затем так же создаем прокси для обращения к нему.

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

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

Сегодня WEB сервисы используются практически повсеместно – именно они предоставляют нам информацию о рейсах самолетов и поездов, курсах валют и погоде. Неудивительно, что и 1С обладает возможностью создания собственных WEB сервисов, позволяющих выступать как в роли поставщика, так и потребителя. Данный механизм встроен в платформу «1С:Предприятие 8.3» и разработчики могут добавлять даже в типовую конфигурацию собственные объекты типа «WEB-сервисы». Их архитектура построена на наборе сервисов, позволяющих обмениваться информацией с другим программным обеспечением.

Создание веб-сервиса 1С

Одним из главных преимуществ WEB-сервисов 1С является отсутствие необходимости давать прямой доступ к данным ИБ. Правильно настроенный веб-сервис 1С позволяет другим приложениям пользоваться функциями извне. В таких случаях определять право пользования данными по заданным параметрам должна сама функция по прописанным разработчиком правилам.

Как создавать веб-сервис в 1С?

Чтобы определенная функция системы 1С стала доступна внешнему ПО, необходимо выполнить следующий алгоритм действий:

  1. Зайти в конфигурацию и в определенной ветке дерева добавить объект WEB-сервис;
  2. Описать все операции, которые сможет выполнять наш функционал. Описание функций производиться в модуле на встроенном в 1С языке;
  3. Добавить описание параметров функций веб-сервиса. Учтите, что типы данных описываются с учетом существующих типов механизма XDTO, появившегося в платформе версии 8.1;
  4. Опубликовать созданный WEB-сервис на сервере. Механизм, встроенный в платформу 1С, поддерживает следующие стандарты:
  • SSL/TLS
  • WS-I BP

Пример создания простого WEB-сервиса

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

Открываем конфигуратор, находим в дереве ветку «WEB-сервисы» и добавляем новый сервис «wa_LengthString». Также необходимо на вкладке «Операции» добавить новую операцию. Назовем ее «CalcLengthString», в свойствах укажем тип возвращаемого значения – int или integer и создадим внутри нее параметр «InputString». Тип значения оставляем string.

Теперь необходимо прописать действие функции CalcLengthString в модуле WEB-сервиса. Для этого открываем свойства созданной функции и нажимаем кнопку в виде лупы справа, у поля ввода «Имя процедуры». 1С автоматически создаст функцию в модуле нашего WEB-сервиса и откроет его для того, чтобы мы описали действие CalcLengthString. Воспользуемся этим и напишем действие функции – определение длины вводимой строки.


Фактически на этом создание простейшего WEB-сервиса закончено. Теперь необходимо «выложить» этот сервис в общий доступ, чтобы стороннее ПО или другие системы 1С могли пользоваться данным функционалом.

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


Теперь настало время публиковать созданный нами WEB-сервис на сервере. Эта возможность появилась в версии платформы 8.3 и многие компании уже поняли всю пользу этого функционала. Для того чтобы приступить к публикации, необходимо в конфигураторе открыть форму «Администрирование/Публикация на веб-сервере…».


В открывшемся окне нам необходима настройка Web сервисов 1С и заполнение определенных полей:

  • Имя. Обозначает папку на веб-сервере, в которой будет храниться описание нашего веб-сервиса. Будьте внимательны к регистрам, так как иногда серверы различают символы большого и малого регистра;
  • Веб-сервер. Необходимо выбрать сервер из установленных на компьютере;
  • Каталог. Вы должны выбрать путь к папке, где хранятся данные веб-сервера по настройке подключения. Используются исключительно латинские буквы;
  • Два признака типа «Булево». Первый нам пригодиться, если необходимо настроить доступ через веб-клиент к конфигурации. Для того чтобы опубликовать сервис 1С, необходимо поставить вторую отметку.

Остается лишь проверить, что у нужного WEB-сервиса установлена галка в первом столбце, и нажать на «Опубликовать».


Так как данный механизм еще достаточно новый, то вы можете столкнуться с ошибкой вида «Ошибка при выполнении файловой операции…». В этом случае вам нужно просто повторить нажатие «Опубликовать». В большинстве случаев это помогает, и вам покажется сообщение о том, что публикация веб-сервиса выполнена.

<имяСервера>.ru/<ИмяУказанногоКаталогаНаСервере>/ws/<НаименованиеФайла>.1cws?wsdl

В ответ на такой запрос адреса браузер должен отобразить структуру файла XML. Если же вы видите пустую страницу, ошибку или непонятные символы (проблемы с кодировкой), то нужно еще раз проверить все действия. Также не лишним будет убедиться, что сервер настроен верно, и у вас есть к нему доступ. После успешной публикации WEB-сервис 1С смогут использовать сторонние приложения.

Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!