Меню

Ошибка проверки данных xdto структура объекта товары строка 1 не соответствует типу

Ошибка отправки данных при синхронизации

Я
   agidov

17.03.19 — 12:21

День добрый, при синхронизации с БП 3.0, после обновления  УТ до версии 11.4.7.114, при отправке данных появляется ошибка

«Направление: Отправка.

ПОД: Документ_ЗаказПоставщику_Отправка.

ПКО: Документ_ЗаказПоставщику_Отправка.

Объект: Документ объект: Заказ поставщику, Заказ поставщику AB0T-4842 от 15.03.2019 16:42:22 (e1cib/data/Документ.ЗаказПоставщику?ref=baaa1c1b0dee81c911e94727e1ca5a93).

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(3981)}: Ошибка при вызове метода контекста (Проверить)

        ОбъектXDTO.Проверить();

по причине:

Ошибка проверки данных XDTO:

Структура объекта ‘/Товары/Строка[1]/ДанныеНоменклатуры/Упаковка’ не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.6}КлючевыеСвойстваУпаковка

Проверка свойства ‘Наименование’:

    форма: Элемент

    имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.6}Наименование

    тип: {http://www.w3.org/2001/XMLSchema}string

Не установлено значение одного из следующих свойств: ЕдиницаИзмерения»

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

   jsmith82

1 — 17.03.19 — 12:24

Видимо, реквизит ссылается на битую ссылку или null

Открыть объект в режиме предприятия и перевыбрать реквизит

   jsmith82

2 — 17.03.19 — 12:26

Поставь точку останова на ошибке, выцепи проблемный объект и далее (1)

   agidov

3 — 17.03.19 — 12:51

(1) Самое интересное, что упаковки я не использую в номенклатурах

   hhhh

4 — 17.03.19 — 13:18

(3) вы не поняли: Единица измерения не заполнена. Поэтому про упаковки тут неинтересно.

   Михаил Козлов

5 — 17.03.19 — 14:04

(4)+ Запросом из справочника УпаковкиЕдиницыИзмерения получите и проверьте, что все заполнено.

   agidov

6 — 17.03.19 — 16:19

(4) Единица измерения, где не заполнена?

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

   hhhh

7 — 17.03.19 — 16:37

(6) ну, открываешь Все Функции: справочник УпаковкиЕдиницыИзмерения и начинаешь его методично просматривать, можешь десятками, можешь сотнями строчек. Находишь места, где не заполнено Наименование, методично заполняешь.

   jsmith82

8 — 17.03.19 — 16:37

смотри в отладчике при создании на сервере у формы проблемного объекта по выражению Объект.Ссылка на предмет битой ссылки или null

   ИльдарТ

9 — 17.03.19 — 19:27

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

   hhhh

10 — 17.03.19 — 19:38

(9) ужесточили проверку на заполнение реквизитов, значит.

   ИльдарТ

11 — 17.03.19 — 19:41

Но как определить про какой реквизит идет речь ? ТиИ проведен, справочник «Упаковки и единицы измерения» заполнен полностью (все реквизиты).

   Garykom

12 — 17.03.19 — 19:57

Единицы проверь у всей Номенклатуры (базовая или как оно там) в Заказ поставщику AB0T-4842 от 15.03.2019 16:42:22

   jsmith82

13 — 17.03.19 — 20:02

чо, никто в отладчик ещё не залез?

   jsmith82

14 — 17.03.19 — 20:04

в 1с какую-то ошибку обмена зарегистрировали, но непонятно, этот ли случай

   ИльдарТ

15 — 17.03.19 — 20:06

(13) А куда поставить точку останова ?

   jsmith82

16 — 17.03.19 — 20:18

Открываешь конфигуратор

Откладка — подключение — автоматическое подключение — фоновые задания

Отладка — остановка по ошибке — останавливаться по ошибке

F5

Запускаешь обмен

В конфигураторе происходит остановка на ошибках. Если ошибка не та, жмёшь далее F5. В итоге попадёшь куда, надо

Там смотришь, что за объект вызывает ошибку

Может, сразу поймёшь, в чём косяк

Затем, ставишь точку останова в событии При создании на сервере у формы элемента / документа косячного объекта

Вычисляешь выражение Объект.Ссылка, раскрываешь все реквизиты (и реквизиты реквизитов, если надо) и смотришь, где косяк. В режиме предприятия не всё видно.

Не забыть потом снять флажки (фоновые задания и останавливаться по ошибке)

   ИльдарТ

17 — 17.03.19 — 22:08

(16) Хотел показать картинку, но не знаю как.

Действительно, значение Неопределено по пути: ОбъектXDTO.Товары.Строка[1].ДанныеНоменклатуры.Упаковка.ЕдиницаИзмерения

Но во всех остальных местах все заполнено.

   jsmith82

18 — 17.03.19 — 22:11

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

   jsmith82

19 — 17.03.19 — 22:12

должно быть СправочникСсылка.УпаковкиЕдиницыИзмерения.ПустаяСсылка (если не заполнено)

   ИльдарТ

20 — 17.03.19 — 22:25

(19) Но если я открываю это справочник, то там все заполнено. Может быть какие-то скрытые поля ?

   jsmith82

21 — 17.03.19 — 22:52

(20) Поставь точку останова при создании на сервере формы элемента и вычисли выражение Объект.Ссылка

   ИльдарТ

22 — 17.03.19 — 23:31

(21) Я так и делаю, но проблем не вижу. Как бы мне показать что я получаю при этом ?

Здесь картинку можно вывести ?

   jsmith82

23 — 17.03.19 — 23:40

   ИльдарТ

24 — 17.03.19 — 23:50

(21) Похоже, что есть какая-то кривость в базе.

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

Что можно сделать с базой, кроме ТиИ ?

   jsmith82

25 — 17.03.19 — 23:54

ничего

   hhhh

26 — 18.03.19 — 00:20

(24) ошибка не в документе, а в справочнке. Ты справочник ЕдиницыИзмерения зарегистрируй, вот тогда попрут ошибки.

   ИльдарТ

27 — 18.03.19 — 00:32

(26) Зарегистрировал весь справочник «Упаковки и единицы измерения» (для документов регистрацию снял). Синхронизация прошла без проблем. А синхронизация документов не проходит.

   Garykom

28 — 18.03.19 — 00:40

Номенклатура же. Или документ был неправильно в ТЧ заполнен, там есть скрытые колонки

   Garykom

29 — 18.03.19 — 00:40

Я уже столько разных прикольных глюков обнаружил при типовой синхронизации УТ11-БП3.

   ИльдарТ

30 — 18.03.19 — 19:56

(29) Оказалось, что нужно не заполнять реквизит табличной части документа «Упаковка»,

а очистить :()

            ДокументОбъект = Выборка.ПолучитьОбъект();

            Товары=ДокументОбъект.Товары;

            Для Каждого Товар Из Товары Цикл

                Товар.Упаковка=»»;

            КонецЦикла;

                ДокументОбъект.Записать();

   agidov

31 — 18.03.19 — 23:54

(30) А откуда это нужно удалить?

   es3000

32 — 27.03.19 — 11:53

Похоже мы тоже столкнулись с такой же ошибкой.

Интересно, что в одних документах — все нормально.

А в каком-то одном конкретном документе — ошибка.

   Garykom

33 — 27.03.19 — 12:07

(32) Ну так перезаполнить этот документ правильно

  

es3000

34 — 27.03.19 — 12:10

(33) Перезаполняли менеджеры, что-то не получается.

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

А в документе он продается в тоннах.

И вот где-то на этапе перевода килограммов в тонны не указан коэффициент.

Вхожу в справочник «Упаковки и единицы измерения» — справочник пустой!

Ни фильтров ни отборов не установлено.

В чем может быть дело?

Одним из самых популярных форматов данных, используемых практически в любой компании, является XML (расширяемый язык разметки). Разработчики 1С создали специальный объект XDTO для удобства своих клиентов и простого взаимодействия с файлами XML, поэтому программисту 1С важно работать с этими объектами платформы, так как обмен данными через XML встречается постоянно.

Преимущества механизма XDTO

Этот функционал создавался как удобный инструмент обмена данными между конфигурациями и другими приложениями. Также этот механизм используют для работы с web-сервисами и для обработки произвольных данных. Большое преимущество XDTO перед другими способами – в нем есть возможность обращаться к файлу XML, как к объекту 1С. То есть все реквизиты можно будет получить, описывая структуру через точку, не задумываясь о скобках, тегах и атрибутах.

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

Существует два способа добавить XDTO-пакет в конфигурацию:

  • Собственноручно создать. Этот вариант подойдет при самостоятельной работе с XML определенного формата. Зная, какие данные будут подаваться на вход для импорта с использованием XDTO, можно заранее создать в конфигурации нужный объект. Этот вариант хорош, если обмен данными налажен и никаких изменений не планируется;
    Рис.1 XDTO пакеты
    Рис.1 XDTO пакеты
  • Импорт присланной схемы. Когда нам присылают данные, их схема может оказаться какой угодно, особенно, если раньше мы не работали с источником. Сильно упростит ситуацию, если вместе с XML нам пришлют и файл формата xsd. В нем содержится выгрузка XDTO-пакета, который может разобрать конкретные XML. Нам останется лишь импортировать его.

Чтобы загрузить данные из присланной нам схемы, необходимо в режиме конфигуратор открыть раздел «Общие» и «XDTO-пакеты». Через контекстное меню выбрать пункт «Импорт XML-схемы…», выбрать файл и подтвердить пространство имен, взятое из файла. После этого необходимо обновить конфигурацию, и предварительные настройки сделаны.

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

Это происходит следующими командами:


ФайлXSD = Новый Массив();
ФайлXSD.Добавить("D:1strust.xsd");
ФабрикаXDTOИзФайла = СоздатьФабрикуXDTO(ФайлXSD);
Номенклатура = ФабрикаXDTOИзФайла.Тип("http://www.1c.ru/products", "Номенклатура");

Экспорт и импорт файла

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

  1. Заполняем URI-пространство имен в свойствах XDTO пакета. Среди разработчиков 1С принято заполнять этот реквизит адресом страницы, заполненной описанием тех данных, с которыми происходит работа. Это помогает в работе, но не всегда возможно. В иных случаях заполняют произвольным текстом;
  2. Задаем тип объекта и его свойства, используя контекстное меню. Задаем имя этих параметров и для свойств определяем тип, выбирая его из предложенных платформой.
Рис.2 Параметры пакета
Рис.2 Параметры пакета

Следующим этапом будет написание процедуры для создания файла XML по описанной выше схеме. Код достаточно прост, поскольку создан XDTO-пакет, а у элемента всего 2 свойства – «Наименование» и «Артикул». Обращаться к конкретной схеме позволяет объект платформы «ФабрикаXDTO». Сама процедура состоит из:

  1. Определение схемы будущей XML;
    
    ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура");
    

  2. Заполнение свойств номенклатуры;
    
    Номенклатура = ФабрикаXDTO.Создать(ТипФабрики);
    Номенклатура.Наименование = "Тест XML";
    Номенклатура.Артикул = "2";
    

  3. Создание нового XML файла.
    
    ИмяФайла = "D:1struct1.xml";
    МойXML = Новый ЗаписьXML;
    ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);
    МойXML.ОткрытьФайл(ИмяФайла, ПараметрыЗаписиXML);
    МойXML.ЗаписатьОбъявлениеXML();
    ФабрикаXDTO.ЗаписатьXML(МойXML, номенклатура);
    МойXML.Закрыть();
    

Чтение XML-файлов с помощью конкретной фабрики XDTO по уже созданному в конфигурации пакету ничуть не сложнее. Алгоритм похож по структуре и отличается только операциями взаимодействия с XML-файлами. В данном случае нам нужно воспользоваться объектом платформы «ЧтениеXML» и прочитать содержимое в переменную. На выходе у нее будет тип «ОбъектXDTO», и вы сможете обращаться ко всем ее свойствам через точку.


ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура");
 
ИмяФайла = "D:1struct1.xml";
МойXML = Новый ЧтениеXML;
МойXML.ОткрытьФайл(ИмяФайла);
номенклатура = ФабрикаXDTO.ПрочитатьXML(МойXML, ТипФабрики);
МойXML.Закрыть();

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

Рис.3 Экспорт XDTO-пакета
Рис.3 Экспорт XDTO-пакета

Лучше все-таки не рассчитывать на понятливость платформы 1С, а использовать точную схему XML. Многие специалисты используют сторонний софт для их создания, но для этого необходим достаточно большой опыт и уровень подготовки. Работа с пакетами XDTO требует внимания и соблюдения точного соответствия файлов заданной схеме, чтобы минимизировать возможные ошибки.

Исправление ошибок

Одной из достаточно распространенных ошибок, связанных с работой с XDTO-пакетами, является «Ошибка преобразования данных XDTO». Ее суть заключается в том, что платформа не может разобрать данный ей XML-файл по заданной схеме. При получении подобной ошибки при импорте данных, необходимо проверить формат файлов – возможно, присутствуют незакрытые теги.

Зачастую проблема с ошибками преобразования данных возникает и по другим причинам:

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

Чтобы исправить эту ошибку, сначала почистите кэш или удалите, а также заново добавьте информационную базу в список баз. Затем внимательно проверьте файл XML – вдруг случайно сделали ошибку в его тексте, проверьте соответствие структуры пакету XDTO. Если ошибка появилась после обновления, сделайте тестирование и исправление ИБ, сохранив перед этим резервную копию базы. Если проблема не уйдет, вернитесь на предыдущую версию и подождите, пока разработчики 1С не разберутся с этой проблемой.

Рис.4 Ошибка преобразования данных
Рис.4 Ошибка преобразования данных

Еще одна проблема, часто мучающая программистов 1С, работающих с XDTO, – ошибка проверки данных. Если при импорте вы видите подобный текст, то с высокой долей вероятности источник проблемы в несоответствии файла нужной схеме. Но проблема может быть не на вашей стороне, а в базе, из которой выгружали XML. Чтобы исправить эту оплошность, придется внимательно изучить всю последовательность действий и найти, после чего файл перестал соответствовать ожиданиям.

Рис.5 Ошибка проверки данных
Рис.5 Ошибка проверки данных

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

Рис.6 Несоответствие типов XDTO
Рис.6 Несоответствие типов XDTO

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

При входе в базу 1с вы можете увидеть “Ошибка преобразования данных XDTO:

Начало Свойства: errorProcessingSettings

Форма: Элемент

Тип: {http://v8.1c.ru/8.2/managed-application/core}ErrorProcessingSettings по причине

Чаще всего ошибка возникает при определенном типе запуска: это либо через тонкий клиент, либо через линк42, случаи бывают разные. Через браузер такие базы запускаются без ошибок.

Есть простое решение данной проблемы.

Достаточно запустить базу доступным нам способом (где нет ошибки) включить Функции тех. специалиста (Меню — Настройки — Параметры — Режим технического специалиста)

В Функциях для технического специалиста ищем Управление настройками обработки ошибок (Стандартные)

Запускаем

Готово!

Уже более 10 000 компаний работают
в облачной 1С от 42Clouds

— Консультация по 1С Бесплатно!

— Поддержка 24/7 по техническим вопросам: в чате, по телефону, по почте

— Все типовые конфигурации онлайн, доступ через RDP, Remote App, Web

Дали задание : прочитать XML-файл и закачать его в 1C. XML-схему не дали.
Создал XDTO-пакет с требуемыми типами, проверил логику структуры. Вроде сходится.
Стал закачивать данные — получил ошибку :
Проверка дополнительного свойства:
форма: Элемент
имя: Begin
по причине:
Ошибка проверки данных XDTO : Структура объекта не соответствует типу

Здесь Begin — синоним (локальное имя) первого свойства считываемого XML-документа.
Решил зайти с другой стороны : а каким 1С хочет видеть мой объект в файле?
Выкачал пробный объект (с установленным свойством Begin) в файл и обратил внимание, что имя XML-документа в файле всегда соответствует имени типа, как оно задано в конфигураторе (в файле «REPORT», а у меня — «ОтчетОПродажеБилетов»).
Задать синоним, чтобы 1С поняла, что тип ОтчетОПродажеБилетов в файле содержится в XML-документе «REPORT», не получается!
Пришлось пожертвовать понятным именем («ОтчетОПродажеБилетов») типа головного объекта, считываемого из файла, и переименование ОтчетОПродажеБилетов в REPORT решило проблему. Остальные объекты переименовывать не пришлось — для них синонимы отработали как положено.

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

Здравствуйте! Надеюсь на вашу помощь, бьюсь безрезультатно уже который день, как в стену уперся ( Ситуация такая. Есть сайт, предоставляющий веб сервис рассылки смс, адрес WSDL пакета таков: Создаю в конфигурации объект «WS-Ссылка», все создается без проблем. Необходимо реализовать работу с этим сервисом из 1С. Написал простенькую обработочку, которая обращается к функции GetCurrentCredit этого веб сервиса. После запуска 1С думает и выкидывает вот такую вот ошибку: {Обработка.Обработка2.Форма.Форма}: Ошибка при вызове метода контекста (GetCurrentCredit): Ошибка вызова операции сервиса:  {    Результат = Прокси.GetCurrentCredit(Логин); по причине: Ошибка вызова операции сервиса:  { по причине: Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: { — [1,179] Проверка дополнительного свойства:    форма: Элемент    имя: amount по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: { — [1,179] Проверка дополнительного свойства:    форма: Элемент    имя: amount по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: { Причем ошибка не зависит от того, присваиваю ли я возвращаемый результат чему-то (в данном случае переменной Результат) или нет. Не зависит и от того, какие логин и пароль передаю. Возникает впечатление, что 1С просто не может обработать ответ с сервера… Что-то можно сделать? Может я что-то делаю не так? Очень прошу помощи, не первый день уже бьюсь с этой дрянью 🙁

ошибка в веб-сервисе у тебя скорее всего… проверь, какой тип возвращает и как он описан в пакете…

млин… невнимательно прочитал сабж…

Web сервис не мой, он предоставляется извне, и менять я его не могу. Разработчики заявляют что с C# он работает без проблем. Может я что то не так определяю в обработке? Или это кривые руки девелоперов сервиса? Сразу говорю, сервис не 1Совский.

а зачем вот это? ПараметрТип = Фабрика.Тип(«http://soap.ecm.emotion.com/»,»GetCurrentCredit»); ты ничего больше не забыл? и это тоже непонятно

Это просто я делал много попыток, чтобы заработало, забыл убрать. ДА и объявление результата тоже не нужно, но это не влияет на результат. Просто пытался уже подходить со всех сторон.

через прокси работаешь? у меня было похожее, прокси мешал…

А как обойти проблему? Интернет в офисе раздается через прокси, это да. Пробовал дома, дома прокси нет (интернет раздается через рутер), возникла та же проблема. Может тогда дело не в прокси?

Что-то достучаться до не могу

функция имеет параметры? может их больше или меньше? тип параметра — строка?

Функция GetCurrentCredit имеет один параметр auth. Это структура со строчными параметрами username и password. Система не ругается на недопустимый параметр, она почему то ругается на возвращаемое значение этой функции, которое имеет тип result.

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

У них похоже сервак лежал. Уже есть доступ. Работал с этим сервисом через сайт — все работает. Через 1с — не хочет.

Раньше 1С-ка не дружила с web-сервисами на Java…

Разработчик заявляет, что сервис писался на .NET

Попробуй ответный xml сохранить в файл. И открыть его в фабрике

А как сохранить ответ в файл? Ваш код, я так понимаю, читает уже сохраненный XML.

Нужна помощь, не знаю в какую сторону копать. Если это глюк 1С (несостыковка со сторонним сервисом), как реализовать работу с этим веб сервисом сторонними средствами? Главное чтобы работало все через 1С

Скорее глюк этого вебсервиса, проверь получится ли у тебя вебсервисом аэрофлота работать.

С вебсервисом могу работать через сторонние средства, например такие как Аэрофлот проверить не могу, надо просить админа добавить мне его в разрешенный список… Даже если он заработает, что это мне даст? Может можно как то сохранить ответный XML в файл, и вручную его обрабатыватть? Или вручную формировать XML и отправлять на сервер. Только как это реализовать? Вопрос критичен, к сожалению, в пятницу уже надо сдать рабочую версию, а решения все нет 🙁

В браузере по ссылке ничего не вижу. А должен был получить wsdl. Не работает вебсервис?

Упс.. нагнал — ff все показал, хром меня ввел в заблуждение.

хм.. а у меня выдает это: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: { Ошибка преобразования данных XDTO: Чтение объекта типа: { — [1,217] Проверка дополнительного свойства: форма: Элемент имя: comment Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: { — [1,217] Проверка дополнительного свойства: форма: Элемент имя: comment Ошибка вызова операции сервиса: { Ошибка вызова операции сервиса: { Ошибка при вызове метода контекста (GetCurrentCredit): Ошибка вызова операции сервиса: {

Вобщем 1С не может принять результат потому что он не соответствует схеме. Элемент amount (на который 1С ругается в ) находится раньше значит его проверка проходит нормально. Элемент comment задан в схеме как не обязательный и тип у него простая строка. Вобщем без SOAP отладчика тут неразобраться (на худой конец просто сниффер пакетов).. 🙂 надо смотреть голый xml который приходит с сервера. В отладочных целях можно также сэмулировать SOAP запрос объектом HTTPСоединение и собственно получить сырой ответ от сервака. Вобщем до ответа в виде XML добраться надо.

вот какой должен быть ответ в сыром виде с сервера: <soap:Envelope xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»><soap:Body><ns2:GetCurrentCreditResponse xmlns:ns2=»http://soap.ecm.emotion.com/»><return type=»ok»><amount>10.0</amount></return></ns2:GetCurrentCreditResponse></soap:Body></soap:Envelope>

В приведенном примере ответа отсутствует элемент recipient. По схеме он должен быть хотя бы один.

Ну так не на него же ругается… Да и зачем в итоге серверу возвращать пустую инфу, если он просто возвращает то, что у него попросили?

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

У тебя код остался таким же как и в ?

Тот сырой XML текст, что я привел, это ответ сервера на функцию GetCurrentCredit. Получено с помощью сайта, что я приводил выше.

>>Может можно как то сохранить ответный XML в файл, и вручную его обрабатыватть? Или вручную формировать XML и отправлять на сервер. Только как это реализовать? Вопрос критичен, к сожалению, в пятницу уже надо сдать рабочую версию, а решения все нет 🙁

У меня была проблема с отладкой Вэб сервиса при передаче структуры. Если объявить через LocflHOST на сервере, то структура проходит. Если с другого компютера через глобальный адрес то метод ложится с ошибкой преобразования во втором байте чего то там.

Сделай на тоже Net или нативе Delphi или С++  Оле Объект который будет обращаться к серверу

много букв. как я курил веб сервисы и их дружбу с 1С. шаг первый — проверить сервис на одыкватность — использую soapUI 3.0 бесплатное. Удобное шаг второй — при условии что выполнен первый — начинаем курить 1С. импортируем в 1С сервис (это раз). Даже на этом этапе можно увидеть дружит 1С или нет с этим сервисом. Хоть и стандарт обще принятый, но то что курят одни системы 1С на отказ не курит. домой приду попробую курнуть.

кстати тож не могу получить тот самы wdsl =/  Proxy Encountered Error Connection Timeout: Could not contact the remote server. Possible causes include mistyped URL, transient network problems, overloaded remote server, and misconfigured proxy server. хотя может и рабочая прокся пьет. так что с дому гляну

Ошибка при вызове метода контекста (GetCurrentCredit): Ошибка вызова операции сервиса:  { Есть нормальное описание работы сервиса и методов, а не только вашего представления ? код для затравки (wdsl принят в конфу как ws-ссылка «WS») Функция СоздатьПрокси(знач ИмяWS = «WS»,

Спалил малость свои переменный =)

Тэги:

Комментарии доступны только авторизированным пользователям

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка проверки данных xdto синхронизация
  • Ошибка проверки данных xdto несоответствие фасету maxlength 1000