Гайд 1С: Публикация и отладка SOAP Web-сервисов (WSDL) на платформе 1С
При эксплуатации SOAP Web-сервисов на платформе 1С возникают сложности:
- Ошибки разбора контракта
WSDL is not valid XMLпри импорте сторонними клиентами (Java, .NET, SAP). - Исключения
SOAP-ENV:Fault: Ошибка проверки XDTO-пакета. - Отказ публикации Web-сервисов при наличии циклических ссылок в типах данных.
- Низкая скорость разбора тяжелых SOAP-конвертов (SOAP Envelope).
1. Разработка операции Web-сервиса
Создайте Web-сервис в конфигураторе, определите пакет XDTO и опишите операцию экспорта данных:
Функция GetAccountBalance(AccountID, CurrencyCode)
// Проверка входных параметров
Если ПустаяСтрока(AccountID) Тогда
ВызватьИсключение "Параметр AccountID обязателен для заполнения!";
КонецЕсли;
// Создание результирующего XDTO-объекта на основе схемы
ТипРезультата = ФабрикаXDTO.Тип("http://corp.local/banking/ws", "AccountData");
ОтветXDTO = ФабрикаXDTO.Создать(ТипРезультата);
ОтветXDTO.AccountID = AccountID;
ОтветXDTO.Balance = ПолучитьОстатокПоСчету(AccountID, CurrencyCode);
Возврат ОтветXDTO;
КонецФункции2. Проверка WSDL-схемы
После публикации проверьте доступность WSDL через браузер по адресу:
https://server.corp.local/base_ws/ws/BankingService.1cws?wsdlУбедитесь, что все пространство имен (Target Namespace) уникально и доступно клиентам без циклических импортов.
Частые вопросы (FAQ)
Где описываются сложные типы возвращаемых данных для Web-сервиса?
Сложные типы (структуры, массивы объектов) описываются в конфигураторе в ветке 'Пакеты XDTO' и затем выбираются в качестве типа возвращаемого значения операции сервиса.
Как перехватить и кастомизировать SOAP Fault при ошибке в коде 1С?
При возникновении необработанного исключения платформа 1С автоматически оборачивает текст ошибки в стандартный узел <soap:Fault>. Для кастомизации возвращайте типизированный XDTO-объект с кодом статуса.
Почему Web-сервисы 1С требуют обязательной аутентификации?
Для выполнения операций веб-сервиса платформа создает пользовательский сеанс, права которого определяют доступ к метаданным. Аутентификация настраивается в файле default.vrd или заголовках HTTP Basic.
Можно ли генерировать статический WSDL файл для передачи партнерам?
Да, откройте Web-сервис в конфигураторе, перейдите в свойства и нажмите кнопку сохранения WSDL-описания в файл на диске.