Вызов WS на 1С 8.3 падает, а в SoapUI работает. Как обойти?

26.08.24

Интеграция - WEB-интеграция

Иногда при интеграции с веб-сервисом 1С может вернуть ошибку проверки данных XDTO: Структура объекта не соответствует типу. При этом это не ваша XDTO, и Вы не хотите или не можете поправить его. Что же делать? Решение есть!

Делаю заметку для себя и для всех, кому может быть полезно. Если Ваша 1С не может собрать XDTO и падает с ошибкой, а SoapUI отрабатывает без ошибок.

Ошибка для примера:

Ошибка проверки данных XDTO:
Структура объекта не соответствует типу:
Проверка свойства 'id':
                форма: Элемент
                имя: id
                тип: {http://www.w3.org/2001/XMLSchema}integer
Отсутствует обязательное свойство

При этом это не ваша XDTO, и Вы не хотите или не можете поправить его.

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

Интересный момент: формально 1С права, но если выполнить вызов такого метода при помощи SoapUI, он отработает без ошибок.    

И тут Вы зададитесь вопросом: что же делать?

Я Вам отвечу: Решение есть! Это HTTP-запрос.

Ну что же, погнали:


лСоединение = Новый HTTPСоединение(СерверХТТП);
лЗапрос = Новый HTTPЗапрос(АдресРесурсаХТТП);
лЗапрос.Заголовки.Вставить("Content-Type", ЗаголовокХТТП);
лсТелоКакСтрока = "<soap:Envelope xmlns:soap=""http://www.w3.org/2003/05/soap-envelope"">
|   <soap:Header/>
|   <soap:Body>
|      <ws:getContr>
|         <request>
|            <employeeSmpId>%1</employeeSmpId>
|            <contractualDocumentId>%2</contractualDocumentId>
|         </request>
|      </ws:getContr>
|   </soap:Body>
|</soap:Envelope>";
лсТелоКакСтрока = СтрШаблон(лсТелоКакСтрока, Параметр1, Параметр2);
лЗапрос.УстановитьТелоИзСтроки(лсТелоКакСтрока);
лРезультат = лСоединение.ОтправитьДляОбработки(лЗапрос);
лсТелоКакСтрокаОтвет = лРезультат.ПолучитьТелоКакСтроку();
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(лсТелоКакСтрокаОтвет);
лОтвет = ФабрикаXDTO.ПрочитатьXML(Чтение);
  • http://***Имя Сервера***/***Имя WS***?WSDL - так у вас выглядит ссылка на wsdl
  • СерверХТТП = ***Имя Сервера***
  • АдресРесурсаХТТП = /***Имя WS***
  • ЗаголовокХТТП - это мы берем SoapUI с закладки Raw (сверху под кнопкой пуска есть переключатель закладок  XML/Raw)

  • лсТелоКакСтрока - сюда мы помещаем весь запрос XML, как он выведен в SoapUI на закладке XML

Вступайте в нашу телеграмм-группу Инфостарт

Вызов WS на 1с падает а в SoapUI работает. Ошибка проверки данных XDTO: Структура объекта не соответствует типу:

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    22203    32    24    

26

SALE! 15%

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17280 14688 руб.

20.12.2024    4382    22    4    

23

WEB-интеграция Программист Руководитель проекта 1С:Предприятие 8 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки. Основные преимущества: 1. Документация API создаётся автоматически. Удобна для программной обработки. 2. Изменить API столь же просто как настроить отчёт. Можно опубликовать существующий вариант отчёта. 3. Отчёты в API поддерживают параметры (Период, ДатаНачала и др.) 4. При создании простых методов не требуется изменять конфигурацию. 5. Поддерживается работа с планами обмена.<br/> 6. Возможно настроить отправку из 1С данных корреспондирующей системе, для случаев когда 1С сама "знает" какие данные нужно отправить. 7. После записи в 1С Ле Мурр может возвращать соответствие полученных идентификаторов созданным в 1С объектам данных.

36000 руб.

27.09.2024    10150    7    5    

11

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

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

12000 руб.

02.02.2021    20958    60    52    

38
Для отправки сообщения требуется регистрация/авторизация