|
Как добавить в ОбъектXDTO типа "ArrayOfString" новый элемент типа "string" | ☑ | ||
---|---|---|---|---|
0
desean
08.11.21
✎
17:12
|
Доброго дня!
При написании процедур обмена со сторонней системой необходимо создать переменную типа ОбъектXDTO содержащую массив строк. Создать переменную типа ОбъектXDTO удалось, добавить в него "элемент массива" не получается. Я уверен, что на просторах этого форума/интернета эта проблема обсуждалась, но самостоятельно найти не смог, поэтому прошу помощи. Вероятно, ввиду прострации в данном вопросе, я кардинально неверно использую конструкцию "РезультирующийМассив.Добавить()". Кто знает, где собака порылась? Как добавить в ОбъектXDTO типа "ArrayOfString" новый элемент типа "string"? // Создаем подключение WSОпределения = WSСсылки[0].ПолучитьWSОпределения(); URIПространстваИмен = WSОпределения.Сервисы[0].URIПространстваИмен; ИмяСервиса = WSОпределения.Сервисы[0].Имя; ИмяПорта = WSОпределения.Сервисы[0].ТочкиПодключения[0].Имя; Местоположение = WSОпределения.Сервисы[0].ТочкиПодключения[0].Местоположение; WSПрокси = Новый WSПрокси( WSОпределения, URIПространстваИмен, ИмяСервиса, ИмяПорта, Новый ИнтернетПрокси, 20, Новый ЗащищенноеСоединениеOpenSSL, Местоположение, Истина ); //Создаем параметр, который будем передавать ТипВходногоПараметра = WSОпределения.Сервисы[0].ТочкиПодключения[0].Интерфейс.Операции[2].Параметры[0].Тип; ВходныеПараметры = WSПрокси.ФабрикаXDTO.Создать(ТипВходногоПараметра); // Создаем ОбъектXDTO - элемент входного параметра // из его названия понимаем, что это массив строк РезультирующийМассив = WSПрокси.ФабрикаXDTO.Создать(WSПрокси.ФабрикаXDTO.Тип(URIПространстваИмен,"ArrayOfString")); // Создаем ЗначениеXDTO – элемент массива строк // и записываем в него значение «[Содержание]» ЗначениеМассива = WSПрокси.ФабрикаXDTO.Создать(WSПрокси.ФабрикаXDTO.Тип(URIПространстваИмен,"ArrayOfString").Свойства[0].Тип, "[Содержание]" ); // Пытаемся добавить в массив новый элемент ЛокальноеИмя = "string"; РезультирующийМассив.Добавить( ФормаXML.Элемент, URIПространстваИмен, ЛокальноеИмя, ЗначениеМассива ); // при выполнении этой строки выдается ошибка: {ВнешняяОбработка.ТестПодключения.Форма.Форма.Форма(141)}: Ошибка при вызове метода контекста (Добавить) РезультирующийМассив.Добавить(ФормаXML.Элемент,URIПространстваИмен,ЛокальноеИмя,ЗначениеМассива); по причине: Несоответствие типов XDTO: Тип '{Integration1C}ArrayOfString' не найден Тип объекта не является открытым // Отправляем запрос стороннему серверу РезультатЗапроса = WSПрокси.GetItemInfo(ВходныеПараметры); |
|||
1
azernot
08.11.21
✎
18:10
|
Я может что-то не так понимаю, но как я делаю множественные элементы в XDTO:
Я завожу тип объекта XDTO с именем "МойМассивДанных" и у этого типа добавляю свойство "ЭлементМоегоМассиваДанных" у которого указываю значение "Максимальное количество" = -1 (т.е. множественные данные). ЭлементМоегоМассиваДанных - может быть любого типа, в т.ч. сложного с множеством атрибутов, вложенных элементов и т.п. Далее, в коде это выглядит так: ТипМоегоМассиваДанных = МояФабрикаXDTO.Тип(ПространствоИмен, "МойМассивДанных"); ТипЭлементаМоегоМассиваДанных = ТипМоегоМассиваДанных.Свойства.Получить("ЭлементМоегоМассиваДанных").Тип; ПакетМойМассивДанных = МояФабрикаXDTO.Создать(ТипМоегоМассиваДанных); Пока [пербор нужной коллекции] Цикл ПакетЭлементМоегоМассиваДанных = МояФабрикаXDTO.Создать(ТипЭлементаМоегоМассиваДанных); ... // тут заполняется ПакетЭлементМоегоМассиваДанных ... ПакетМойМассивДанных.ЭлементМоегоМассиваДанных.Добавить(ПакетЭлементМоегоМассиваДанных); КонецЦИкла; |
|||
2
PaulBC
09.11.21
✎
04:01
|
(0) у меня так:
ТипМассив = Сервис.ФабрикаXDTO.Тип(Настройка.ПространствоИмен, "ArrayOfString"); МассивXDTO = Сервис.ФабрикаXDTO.Создать(ТипМассив); Для Каждого ЭлементМассива Из МассивСтрок Цикл МассивXDTO.string.Add(ЭлементМассива); КонецЦикла; Здесь Сервис - WSПрокси |
|||
3
Strogg
09.11.21
✎
08:25
|
(0) если я правильно понимаю вопрос, то твое свойство "массив" должно иметь тип элемент массива(включающим в себя все элементы из того же пространства имен), который ты опишешь в другом свойстве.
|
|||
4
desean
10.11.21
✎
15:11
|
Заработала конструкция:
РезультирующийМассив.string.Добавить( ЗначениеМассива ); |
|||
5
desean
10.11.21
✎
15:12
|
Всем Спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |