Элемент проекта вида «SoapСервис»
Для создания SOAP-сервиса следует добавить в проект элемент Soap Сервис.
В описании элемента проекта указываются настройки создаваемого сервиса, свойства, а также методы из модуля, которые реализуют операции SOAP-сервиса. Модуль SOAP-сервиса содержит описание передаваемых данных (структур встроенного языка), пользовательских исключений, а также реализацию операций сервиса.
Описание элемента проекта «SoapСервис»
При создании описания SOAP-сервиса вам необходимо определить следующие свойства:
- ПространствоИменСервиса — пространство имен, в котором описан сервис. Атрибут
               targetNamespaceWSDL-описания сервиса (definitions.targetNamespace).
- ИмяСервиса — имя сервиса. Атрибут nameWSDL-описания сервиса (definitions.name). Если не указан, то используется имя элемента проекта.
- КорневойUrl — базовая часть URL, по которой будет выполняться обращение к сервису.
- Обработчики — описание операций, которые выполняют обработку данных из входящего SOAP-сообщения от клиента сервиса и формируют результат для исходящего SOAP-сообщения. Для каждой операции вы пишете на встроенном языке метод, который реализует необходимую функциональность. Методы находятся в модуле SOAP-сервиса. Например, SOAP-сервис может выглядеть следующим образом:
ВидЭлемента: SoapСервис
Ид: 20658364-7777-4b14-9423-ec212de5be72
Имя: СервисМагазина
ОбластьВидимости: ВПодсистеме
КонтрольДоступа:
    Вызов: РазрешеноВсем
    ПоУмолчанию: РазрешеноВсем
ПространствоИменСервиса: https://mycustomshop.ru
ИмяСервиса: ShopService
КорневойUrl: shopservice
Обработчики:
    -
        Имя: AddToCart
        Метод: ДобавитьВКорзину
        Ошибки:
            - СервисМагазина.MyCustomExceptionМодуль SOAP сервиса
- Структуры, для описания:- Передаваемых в сервис параметров и результата запроса. Однако это не обязательно, можно также использовать встроенные типы — Число, Строка и тд. Данные типы будут автоматически сопоставлены с соответствующими XML-типами.
- Используемых в сервисе исключений. Данные типы будут сопоставлены с SOAP-ошибками.
 
- Методы, для описания:- Операций, выполняемых в результате вызова обработчиков;
 
// Описание пользовательской ошибки
@ВПроекте
исключение MyCustomException
  обз пер ReasonDescription: Строка
  обз пер AppErrorCode: Число
;
// Структура, описывающая параметры метода обработчика
структура Item
    обз пер Sku: Число
    обз пер Name: Строка
    обз пер Price: Число
;
//Обработчик операции сервиса
метод ДобавитьВКорзину(Item: Item, Count: Число)
    // Метод, написанный разработчиком
;- Запрещено использовать кириллицу в именах обработчиков;
- В структурах встроенного языка, используемых в сообщениях (параметрах и
                     возвращаемых значениях обработчиков на встроенном языке SOAP-сервиса), в
                     заголовках, а также в исключениях встроенного языка, используемых как SOAP
                        ошибки:- Не должно быть циклических ссылок;
- Допустим только составной тип, состоящий из одного из поддерживаемых
                           типов + Неопределено. В этом случае в XML-элементе
                           будет использовано ограничение minOccurs=0. Другие составные типы не разрешены;
- Допустимы только следующие типы данных:Тип встроенного языка XML тип Примечание Строка stringЧисло decimalБулево booleanДатаВремя dateTimeДата dateВремя timeМесяц gMonthДлительность durationБайты base64BinaryСтруктура complexTypeНеопределено minOccurs=0ЧитаемаяКоллекция<Тип>, где Тип — значения поддерживаемого типа minOccurs=unboundedНе поддерживается коллекция коллекций 
 
Также в модуле SOAP-сервиса можно обработать событие ВычислитьРазрешенияДоступа (подробнее).
WSDL описание SOAP-сервиса
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="https://mycustomshop.ru" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="https://mycustomshop.ru"> <types> <xsd:schema> <xsd:import namespace="https://mycustomshop.ru" schemaLocation="http://127.0.0.1:9090/applications/SOAPServis/api/shopservice?xsd=1"/> </xsd:schema> </types> <message name="AddToCart"> <part name="parameters" element="tns:AddToCart"/> </message> <message name="AddToCartResponse"> <part name="parameters" element="tns:AddToCartResponse"/> </message> <message name="MyCustomException"> <part name="fault" element="tns:MyCustomException"/> </message> <portType name="ShopService"> <operation name="AddToCart"> <input message="tns:AddToCart"/> <output message="tns:AddToCartResponse"/> <fault message="tns:MyCustomException" name="MyCustomException"/> </operation> </portType> <binding name="ShopServicePortBinding" type="tns:ShopService"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="AddToCart"> <soap:operation soapAction="AddToCart"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> <fault name="MyCustomException"> <soap:fault name="MyCustomException" use="literal"/> </fault> </operation> </binding> <service name="ShopService"> <port name="ShopServicePort" binding="tns:ShopServicePortBinding"> <soap:address location="http://127.0.0.1:9090/applications/SOAPServis/api/shopservice"/> </port> </service> </definitions>
URL для запроса к SOAP-сервису
Сервис обрабатывает POST-запросы. Корректный URL запроса к SOAP-сервису должен иметь следующую структуру:
{АдресПубликацииПриложения}/api/{КорневойURL}http://[адрес сервера]/applications/[имя приложения]/api/shopserviceЧтобы получить WSDL описание сервиса, следует отправить GET-запрос с параметром ?wsdl. Например:
http://[адрес сервера]/applications/[имя приложения]/api/shopservice?wsdlРассмотрите части запроса по порядку:
- http или https
- Используемый
                    протоколhttp://[адрес сервера]/applications/[имя приложения]/api/shopservice?wsdl
- АдресПубликацииПриложения
- Адрес «1С:Шины» и путь публикации приложения на
                    сервереhttp://[адрес сервера]/applications/[имя приложения]/api/shopservice?wsdl
- api
- Признак того, что данный URL представляет запрос к публичному API
                    приложенияhttp://[адрес сервера]/applications/[имя приложения]/api/shopservice?wsdl
- КорневойURL
- Относительный URL сервиса. Должен быть уникальным среди всех сервисов в проекте.
                    Определяет конкретный сервис, который должен обработать
                    запросhttp://[адрес сервера]/applications/[имя приложения]/api/shopservice?wsdl
- ПараметрыЗапроса
- Стандартный способ передачи параметров запроса через
                    URL.http://[адрес сервера]/applications/[имя приложения]/api/shopservice?wsdl
Элемент проекта SoapСервис предоставляет следующую функциональность и логику работы:
- Порождаемые типы встроенного языка
- SOAP-сервис, добавленный в проект, порождает во встроенном языке один тип, в модуле которого вы можете разместить все обработчики операций SOAP-сервиса
- Обработка запросов
- Для обработки запросов необходимо для каждой операции, описанной в SOAP-сервисе, создать в модуле SOAP-сервиса метод-обработчик
- Обработка ошибок
- 
                    Во время исполнения обработчика на встроенном языке при возникновении ошибки выбрасывается исключение. «1С:Шина» создает из выброшенного обработчиком запроса исключения SOAP ошибку и формирует HTTP-код ответа 500 (Internal server error). Вы также можете создать пользовательское исключение в модуле SOAP-сервиса. Когда во время исполнения обработчика операции данное исключение будет выброшено, «1С:Шина» сериализует объект-исключение в SOAP Fault сообщение. 
- Аутентификация внешних программ
- 
                    Если настроен контроль доступа, отличный от РазрешеноВсем, то для аутентификации внешних информационных систем используются токены доступа 
- Права
- Элемент проекта вида SoapСервис обладает правом Вызов (подробнее)
- Все свойства SOAP-сервиса
- Здесь описано назначение всех свойств SOAP-сервиса, которые вы можете изменять в проекте
