|
Преобразование СписокXDTO в ТаблицаЗначений | ☑ | ||
---|---|---|---|---|
0
Mentos1C
20.07.21
✎
09:28
|
Всем привет. Делаю запрос к API, получаю списокXDTO. Хотелось бы преобразовать в таблицу значений каким-нибудь максимально коротким, и максимально универсальным кодом, ибо получаю несколько разных СписокXDTO, с различной структурой. Ваши предложения? И где про это почитать? Ни с .Net ни с сериализаторами незнаком, и даже не понимаю зачем они нужны. Всем спасибо
|
|||
1
Галахад
гуру
20.07.21
✎
09:31
|
Что за странное API?
|
|||
2
mikecool
20.07.21
✎
09:35
|
(0) как "с различной структурой" преобразовать в 1 ТЗ?
|
|||
3
Mentos1C
20.07.21
✎
09:41
|
(2) разные списки в разные ТЗ. Это ж логично)
(1) Да вроде дефолтное апи. Пишу запрос, получаю Объект, а внутри списки, которые нужно раскидать по таблицам значений |
|||
4
END
20.07.21
✎
09:42
|
(3) Дефолтное API для кого дефолтное?
|
|||
5
Mentos1C
20.07.21
✎
09:42
|
API на сайте магазина
|
|||
6
END
20.07.21
✎
09:43
|
(5) Пригласите программиста...
|
|||
7
Mentos1C
20.07.21
✎
09:44
|
(4) SOAP протокол... Это имеет значение? Какие то другие объекты можно получить при десериализации XML?
|
|||
8
Kassern
20.07.21
✎
09:48
|
(0) я правильно понимаю, вы получаете xml схему с данными на выходе? Если да, то можно так:
Преобразование_ПВЗ = Новый ПреобразованиеXSL; Преобразование_ПВЗ.ЗагрузитьИзСтроки(Схема); СтрокаXML_ПВЗ = Преобразование_ПВЗ.ПреобразоватьИзСтроки(СтрокаXML); ЧтениеXML_ПВЗ = Новый ЧтениеXML(); ЧтениеXML_ПВЗ.УстановитьСтроку(СтрокаXML_ПВЗ); ТЗ2 = СериализаторXDTO.ПрочитатьXML(ЧтениеXML_ПВЗ); Взято из https://forum.infostart.ru/forum9/topic131918/ |
|||
9
Mentos1C
20.07.21
✎
09:58
|
(8) Очень интересный вариант. Если я правильно понимаю, XSL описание это и есть новая, пока не созданная и не заполненная таблица, с фиксированым количество, и наименованием колонок, что не соответствует постановке вопроса :( Но решение действительно хорошее, создать XDTOПакет и с его помощью формировать ТЗ. Просто я заранее не могу знать о структуре списков, это усложняет задачу
|
|||
10
Kassern
20.07.21
✎
10:05
|
(9) как то странно, обычно у апишек статичная структура ответа. Если что то и меняется, то это за несколько недель предупреждается.
|
|||
11
Mentos1C
20.07.21
✎
15:08
|
(10) Да я могу перебрать все возможные списки которые я буду преобразовывать в ТЗ. Но тоже, получается не универсальный метод) У меня получилось вот так
Функция XDTOВТаблицуЗначений(XDTOСписок) ТаблицаЗначений = Новый ТаблицаЗначений; //Создание колонок идентично колонкам в списке ХДТО Если XDTOСписок.Количество() > 0 тогда Для каждого Строка из XDTOСписок[1].Свойства() цикл ТаблицаЗначений.Колонки.Добавить(Строка.Имя); КонецЦикла; КонецЕсли; //Копирование ХДТО списка в таблицу значений Для каждого Строка из XDTOСписок цикл НоваяСтрока = ТаблицаЗначений.Добавить(); Для каждого Колонка из ТаблицаЗначений.Колонки цикл НоваяСтрока[Колонка.Имя] = Строка[Колонка.Имя]; КонецЦикла; КонецЦикла; Возврат ТаблицаЗначений; КонецФункции |
|||
12
Mentos1C
20.07.21
✎
15:10
|
Я не правильно вопрос сформулировал или мое решение жуткий костыль, который никому даже в голову не приходит? Или тут помощь только на платной основе?
|
|||
13
Вафель
20.07.21
✎
15:31
|
А смысл?
Этот список можно обходить через для каждого по месту требования. Ну может если только в запрос |
|||
14
fisher
20.07.21
✎
15:36
|
(11) Ну, норм. Куда уж проще-то?
В цикле обхода строк можно попробовать избавиться от вложенного цикла обхода колонок через ЗаполнитьЗначенияСвойств() |
|||
15
Mentos1C
20.07.21
✎
17:39
|
(13) да не только в запрос. Искать строки по множественным, иногда взаимозависимым, условиям используя обход "Для каждого", то ещё приключение, на итак короткие выходные)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |