Бьюсь второй день, не могу понять что не так. Вот такой простенький код:
Выдает ошибку:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://www.unistation.ru/xdto }TicketSeats - [5,3]
Проверка дополнительного свойства:
форма: Элемент
имя: {http://www.unistation.ru/xdto }Elements
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://www.unistation.ru/xdto }TicketSeats
Если убираю строку
Запись.ЗаписатьАтрибут("type", "http://www.w3.org/2001/XMLSchema-instance", "TicketSeats");
То всё норм, ошибки нет.
Но дело в том, что мне нужна эта строка
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку("UTF-8");
Запись.ЗаписатьНачалоЭлемента("TicketSeats");
Запись.ЗаписатьСоответствиеПространстваИмен("", "http://www.unistation.ru/xdto");
Запись.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema");
Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
Запись.ЗаписатьАтрибут("type", "http://www.w3.org/2001/XMLSchema-instance", "TicketSeats");
Запись.ЗаписатьНачалоЭлемента("Elements");
Запись.ЗаписатьНачалоЭлемента("SeatNum");
Запись.ЗаписатьТекст(Билеты[0].Место);
Запись.ЗаписатьКонецЭлемента(); //SeatNum
Запись.ЗаписатьКонецЭлемента(); //Elements
Запись.ЗаписатьКонецЭлемента(); //TicketSeats
СтрокаXML = Запись.Закрыть();
ЧтениеXMLСхемы.УстановитьСтроку(СтрокаXML);
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXMLСхемы);
ПоказатьВыдает ошибку:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {
Проверка дополнительного свойства:
форма: Элемент
имя: {
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {
Если убираю строку
Запись.ЗаписатьАтрибут("type", "http://www.w3.org/2001/XMLSchema-instance", "TicketSeats");
То всё норм, ошибки нет.
Но дело в том, что мне нужна эта строка
Прикрепленные файлы:
По теме из базы знаний
- XDTO - часть 3
- EnterpriseData – часть 2. Процесс выгрузки данных
- Десериализация объектов в конфигурации-приемнике с отличиями в реквизитах от конфигурации-источника
- Обмен между базами с разными версиями формата обмена (УТ11 Узбекистан -> Бухгалтерия для Узбекистана 3.0)
- Самые используемые методы БСП 3.1.9
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)А в схеме xdto что написано?
Если у вас есть схема, зачем использовать ЗаписьXML, может сразу через фабрику и записывать?
А зачем вам эта строка?
Если у вас есть схема, зачем использовать ЗаписьXML, может сразу через фабрику и записывать?
Если убираю строку
Запись.ЗаписатьАтрибут("type", "http://www.w3.org/2001/XMLSchema-instance", "TicketSeats");
То всё норм, ошибки нет.
Но дело в том, что мне нужна эта строка
Запись.ЗаписатьАтрибут("type", "http://www.w3.org/2001/XMLSchema-instance", "TicketSeats");
То всё норм, ошибки нет.
Но дело в том, что мне нужна эта строка
А зачем вам эта строка?
(4) в том то и дело что схемы нет, надо получить на выходе объект XDTO такого содержания:
< TicketSeats xmlns= "http://www.unistation.ru/xdto"
xmlns:xs= "http://www.w3.org/2001/XMLSchema"
xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:type= "TicketSeats" >
< Elements >
< SeatNum >0</ SeatNum >
</ Elements >
</ TicketSeats >
я не придумал ничего другого кроме как выше описал
< TicketSeats xmlns= "http://www.unistation.ru/xdto"
xmlns:xs= "http://www.w3.org/2001/XMLSchema"
xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:type= "TicketSeats" >
< Elements >
< SeatNum >0</ SeatNum >
</ Elements >
</ TicketSeats >
я не придумал ничего другого кроме как выше описал
(9) Как же вы были правы. Всё делается намного проще
Я какой-то велосипед изобретал
вот весь код в итоге:
и передача СозданиеПрокси.Результат.AddTickets(WSПараметрTicketSeats);
Я какой-то велосипед изобретал
вот весь код в итоге:
ТипWSПараметраTicketSeats
= СозданиеПрокси.Результат.ФабрикаXDTO.Пакеты.Получить("http://www.unistation.ru/xdto").Получить("TicketSeats");
ТипWSПараметраTicketSeat = СозданиеПрокси.Результат.ФабрикаXDTO.Пакеты.Получить("http://www.unistation.ru/xdto").Получить("TicketSeat");
WSПараметрTicketSeats = СозданиеПрокси.Результат.ФабрикаXDTO.Создать(ТипWSПараметраTicketSeats);
WSПараметрTicketSeat = СозданиеПрокси.Результат.ФабрикаXDTO.Создать(ТипWSПараметраTicketSeat);
WSПараметрTicketSeat.ParentTicketSeatNum = "0";
WSПараметрTicketSeats.Elements.добавить(WSПараметрTicketSeat);
Показатьи передача СозданиеПрокси.Результат.AddTickets(WSПараметрTicketSeats);
Используйте фабрику XDTO.
Далее из пакета получается тип объекта XDTO, а фабрика создаёт экземпляр объекта XDTO.
На мой взгляд здесь неплохо описаноhttps://infostart.ru/1c/articles/167459/
ПакетXDTO = ФабрикаXDTO.Пакеты.Получить("http://www.unistation.ru/xdto")
Далее из пакета получается тип объекта XDTO, а фабрика создаёт экземпляр объекта XDTO.
Тип = ПакетCML.Получить("ИмяТипа");
Объект= ФабрикаXDTO.Создать(Тип );
На мой взгляд здесь неплохо описано
Очень странно. Попробовал прогнать ваш код. У меня все работает. Создается XTDO объект.
Единственное дописал строчку
ЧтениеXMLСхемы = новый ЧтениеXML;
перед ЧтениеXMLСхемы.УстановитьСтроку(СтрокаXML);
Единственное дописал строчку
ЧтениеXMLСхемы = новый ЧтениеXML;
перед ЧтениеXMLСхемы.УстановитьСтроку(СтрокаXML);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот