![]() |
|
Одна или несколько строк в выборке XDTO: Итератор для значения не определен | ☑ | ||
---|---|---|---|---|
0
romix
30.10.14
✎
00:43
|
При выборке данных из XDTO получение значений сбоит на ситуации, когда, например, в табличной части загружаемого документа есть только одна строка. Приходится анализировать тип (список там или объект) и дублировать код загрузки этой строки. Отдельный случай - когда в табличной части совсем нет строк.
Если Данные.Свойства().Получить("Контрагенты")=Неопределено Тогда //Нет контрагентов ИначеЕсли Данные.Контрагенты.Свойства().Получить("Строка")=Неопределено Тогда //Нет строк ИначеЕсли ТипЗнч(Данные.Контрагенты.Строка)=Тип("СписокXDTO") Тогда Для Каждого зн из Данные.Контрагенты.Строка Цикл сКонтрагенты.Вставить(ч(зн.Код), зн.Наименование); КонецЦикла; ИначеЕсли ТипЗнч(Данные.Контрагенты.Строка)=Тип("ОбъектXDTO") Тогда зн=Данные.Контрагенты.Строка; сКонтрагенты.Вставить(ч(зн.Код), зн.Наименование); КонецЕсли; Вопрос: есть ли более аккуратный способ обработать все три варианта загрузки, чтобы не дублировать код? |
|||
1
FlashC
30.10.14
✎
00:46
|
(9) можно
|
|||
2
FlashC
30.10.14
✎
00:46
|
+(1) можно, конечно...
|
|||
3
FlashC
30.10.14
✎
00:48
|
(0) для начала проанализируй условия... потом вопросы
|
|||
4
Armando
30.10.14
✎
03:08
|
Тож сталкивался с этим. С первого раза не понял как решить. В итоге оставил проверку на СписокXDTO и на ОбъектXDTO.
|
|||
5
romix
30.10.14
✎
19:28
|
Сделал функцию, которая возвращает массив структур.
Функция ПолучитьИзXDTO(Данные) мРезультат=Новый Массив; Если ТипЗнч(Данные)=Тип("СписокXDTO") Тогда Для Каждого зн из Данные Цикл пСвойства=зн.Свойства(); ст=Новый Структура; Для Каждого св из пСвойства Цикл ст.Вставить(св.Имя, зн[св.Имя]); КонецЦикла; мРезультат.Добавить(ст); КонецЦикла; Иначе //Если ТипЗнч(Данные)=Тип("ОбъектXDTO") Тогда зн=Данные.Контрагенты.Строка; пСвойства=зн.Свойства(); ст=Новый Структура; Для Каждого св из пСвойства Цикл ст.Вставить(св.Имя, зн[св.Имя]); КонецЦикла; мРезультат.Добавить(ст); КонецЕсли; Возврат мРезультат; КонецФункции |
|||
6
Armando
30.10.14
✎
21:34
|
Прошелся поиском в партнерском форуме:
Вот например: "Платформа определяет наличие списка значений свойства по максимальному количеству, указанному в определении типа (в XSD-схеме это соответствует атрибуту maxOccurs)." И если AnyType тож такое поведение будет |
|||
7
Fragster
гуру
30.10.14
✎
22:49
|
в схеме надо прописать минимальное количество = 0, максимальное количество = -1
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |