|
Объект XDTO как узнать массив ли это
comp2006, Ненавижу 1С, Dzenn, Franchiser, lxndr, youalex, Anton1307, Kongo2019, d4rkmesa, sikuda, dedmoroz777, H A D G E H O G s, DiMel_77, Hawk_1c, Argo, rozer76, АнализДанных, Eiffil123, Смотрящий, RomaH, formista2000, Garykom, Доминошник, AlexKimp, Михаил Козлов, Homer, ads55, sansys, SleepyHead, zippygrill, Greeen, golem14, mTema32, osa1C, vbus, yurikmellon2, Shurjk, timurhv, Гипервизор, mikecool, maxab72, Буковка, Gennady, Fedor-1971, фросия, chelentano, Мультук, sahactys123, Timon1405, banco, Silgis
| ☑ |
0
sahactys123
20.11.24
✎
14:42
|
Добрый день загружаю XML, преобразую его в объект XDTO и обхожу строки Для каждого Элемент из Данные Цикл, где данные это объект XDTO. Если в XML несколько строк, то все отрабатывает, но если 1, то падает с ошибкой "Итератор для значения не определен". Как узнать несколько ли значений в объекте ?
|
|
1
osa1C
20.11.24
✎
14:44
|
(0) Данные.Количество()
|
|
2
Garykom
20.11.24
✎
14:45
|
|
|
3
mikecool
20.11.24
✎
15:01
|
(1) у объекта хдто есть такой метод?
|
|
4
d4rkmesa
20.11.24
✎
15:05
|
(0) Надо проверять тип для Данные, для коллекции это будет "СписокXDTO", а не "ОбъектXDTO".
|
|
5
rozer76
20.11.24
✎
15:11
|
(1) ты весь код в try-except пишешь ? ))
|
|
6
Franchiser
20.11.24
✎
16:29
|
(0) обход цикла с нуля идет
|
|
7
АнализДанных
20.11.24
✎
16:55
|
(0) Создай служебную функцию КоллекцияОбъектаXDTO():
Для Каждого ЭлементXDTO Из КоллекцияОбъектаXDTO(ОбъектИлиСписокXDTO) Цикл
// обработка данных
КонецЦикла
Функция ОбъеткXDTO_Списком(КоллекцияОбъектаXDTO)
Если ТипЗнч(КоллекцияОбъектаXDTO) = Тип("ОбъектXDTO") Тогда
Возврат ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(КоллекцияОбъектаXDTO);
ИначеЕсли ТипЗнч(КоллекцияОбъектаXDTO) = Тип("СписокXDTO") Тогда
Возврат КоллекцияОбъектаXDTO;
КонецЕсли;
КонецФункции
|
|
8
АнализДанных
20.11.24
✎
16:59
|
(7) Ошибся, функция называется "КоллекцияОбъектаXDTO"
Функция КоллекцияОбъектаXDTO(КоллекцияОбъектаXDTO)
...
КонецФункции
|
|
9
Kongo2019
20.11.24
✎
18:38
|
(0)
Если ТипЗнч (ПриходныйбордерXDTO.Состав.СтрокаСостава) <> Тип ("СписокXDTO) Тогда
СписокхXDTOСтрокаСостава = Новый Массив;
СписокXDTOСтрокаСостава .Добавить (ПриходныйОрдерXDTO.Состав.СтрокаСостава);
Иначе
СписокXDTOСтрокаСостава = ПриходныйОрдерXDTO.Состав.СтрокаСостава;
КонецЕсли;
|
|
10
Dzenn
20.11.24
✎
19:51
|
(9) о, я примерно так же делаю.
1) ввожу переменную типа Массив = Новый Массив;
2) Проверяю данные на входе что это — СписокXDTO или ОбъектXDTO
3) если список, то Массив = ДанныеНаВходе
4) если объект, то Массив.Добавить(ДанныеНаВходе)
5) обхожу массив, будучи полностью уверенным, что это именно массив
|
|
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший