Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
31 окт 2024, 11:34

Преобразовать Структуру в Объект XDTO, или как работать с объектом XDTO Structur

Автор znepok, 21 окт 2011, 14:55

0 Пользователей и 2 гостей просматривают эту тему.

znepok

Добрый день!

Реализую веб-интерфейс, который получает данные из 1С через веб-службу.

Веб-служба возвращает ответ в виде Объекта XDTO.
Ответ:
   Статус - int
   Сообщение - string
   Результат - anyType

Одна из функций должна вернуть простую структуру. Поэтому мне нужно преобразовать структуру в объект XDTO, чтобы записать ее в св-во Результат

Пробовал так:
StructureТип = ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "Structure");
StructureХДТО = ФабрикаXDTO.Создать(StructureТип);

Результат = Новый Структура;
Результат.Вставить("ААА", 1);
Результат.Вставить("БББ", "ВВВ");

StructureХДТО = СериализаторXDTO.ЗаписатьXDTO(Результат);
ОтветХДТО.Результат = StructureХДТО;

Выбрасывается ошибка в предпоследней строке "Ошибка при вызове метода контекста (ЗаписатьXDTO)"


Подскажите как правильно сделать преобразование.

Или подскажите, как работать с объектом StructureХДТО, чтобы добавить значения.
StructureХДТО.Add("AAA") ругается на недостаточное кол-во аргументов,
а StructureХДТО.Add("AAA", "БББ") на ошибку при вызове метода контекста


Создавать специально тип объекта для результата данной функции в пакете XDTO не хочется.

Спасибо!

sergeevds

Что-то я из первой части немного недопонял, тебе надо положить в твою вебформу объект XDTO или из него получить структуру? А то написано, что она у тебя возвращает XDTO.
А про добавить вот:
ОбъектXDTO (XDTODataObject)
Добавить (Add)
Вариант синтаксиса: Установка значения нового произвольного свойства
Описание:
Добавляет значение произвольного свойства. Имя свойства будет создано автоматически, на основе локального имени XML представления свойства.
В случае, если произвольное свойство с полученным именем уже существует и, если предыдущая установка значения произвольного свойства выполнялась для данного произвольного свойства, либо другого свойства в случае наличия последовательности, - свойство становится списковым с неограниченной верхней границей.
В противном случае будет инициировано исключение.
Тип создаваемого свойства всегда устанавливается anyType пространства имен схемы XML.
Синтаксис:
Добавить(<Форма>, <URI пространства имен>, <Локальное имя>, <Элемент данных>)
Параметры:
<Форма> (обязательный)
Тип: ФормаXML. Форма XML представления произвольного свойства.
Может принимать значения Элемент или КартинкаКнопкиВыбора.
<URI пространства имен> (обязательный)
Тип: Строка. URI пространства имен XML представления произвольного свойства.
<Локальное имя> (обязательный)
Тип: Строка. Локальное имя произвольного свойства.
<Элемент данных> (обязательный)
Тип: ЗначениеXDTO, ОбъектXDTO. Элемент данных XDTO (значение или объект), являющийся значением произвольного свойства.
Вариант синтаксиса: Установка значения существующего произвольного свойства
Описание:
Добавляет значение произвольного свойства с указанным именем.
Если свойства с указанным именем не существует, то будет инициировано исключение.
Если предыдущая установка значения произвольного свойства выполнялась для данного произвольного свойства, либо другого свойства в случае наличия последовательности, - свойство становится списковым с неограниченной верхней границей.
В противном случае будет инициировано исключение.
Синтаксис:
Добавить(<Имя>, <Элемент данных>)
Параметры:
<Имя> (обязательный)
Тип: Строка. Имя произвольного свойства.
<Элемент данных> (обязательный)
Тип: ЗначениеXDTO, ОбъектXDTO. Элемент данных XDTO (значение или объект), являющийся значением произвольного свойства.
Описание:
Добавляет в объект значения произвольного свойства.
Примечание:
Вызов метода может быть осуществлен только для объектов типов с установленным свойством Открытый, в противном случае будет инициировано исключение.

znepok

Не получается воспользоваться методом Добавить()

Пробую так:

StructureType = ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "Structure");
Structure = ФабрикаXDTO.Создать(StructureType);

StrType = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string");
Str = ФабрикаXDTO.Создать(StrType, "345fgsdfg");

Structure.Add("AAA", Str); // Ошибка "Ошибка при вызове метода контекста (Добавить)"

sergeevds

Так ты посмотри в добавить практически все параметры обязательные, а у тебя указаны только 2

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск