#0
by D_Pavel
Продукция в схеме так обозначена: Если в XML много строк с Продукцией, то когда разбираю XML с помощью Фабрики, то все ок, в 1С Поставщик.Продукция - это массив: <Поставщик> Если строка одна, то 1С считает это не массивом, а объектом: (Поставщик.Продукция - это объект) Как сделать чтобы 1С всегда считала Продукцию массивом, даже если ее всего один элемент? Может в схеме как-то по другому задать?
#4
by D_Pavel
Как же долго просыпаются умные одноэсники на западе... А от восточных совсем никакой пользы.
#6
by D_Pavel
Чтобы не получить исключение при обходе массива циклом, и не добавлять проверок на тип.
#9
by Fragster
проблема в том, что в неправильно читается. прошу привести пример кода и первой строки XML
#10
by Fragster
а также нужно учитывать то, что 1с не умеет работать с "неопределенным" пространством имен, т.е. и в XML и в схеме оно должно быть.
#12
by Fragster
Интересует фрагмент ФабрикаXDTO.ПрочитатьXML, как получается параметр "тип". Ну и фрагмент XML, где определяется пространство имен (чаще всего - корневой тег)
#13
by D_Pavel
У меня правильно читается. Что именно не читается? Как пример кода может повлиять на то что человек знающий ответ на мой вопрос зайдет в эту тему?
#14
by Fragster
я знаю ответ на твой вопрос. у тебя XML читается не как объект твоего типа из схемы, а как anytype.
#17
by Serginio1
Делает прекрасно Такой массив будет прекрасно считываться и с одним элементом minOccurs="0" maxOccurs="unbounded"/> А вот такой minOccurs="1" maxOccurs="unbounded"/> При одном элементе будет давать элемент, а не список
#22
by Fragster
а вот при отсутствии указания maxOccurs указание minOccurs в 0 делает тег необязательным. А свойство у результирующего объекта все равно будет.
#23
by Serginio1
Ну да. Проверь. Я уже на эти грабли наступал. Заодно посмотри чему равен minOccurs по умолчанию
#25
by D_Pavel
Зачем указываешь в XML это xsi:schemaLocation=""test file:///X:/tmp/Untitled.xsd"" если у тебя в прочтении XML фабрикой и так указан тип?
#26
by Fragster
это потому что XML делался во внешнем редакторе. можно удалить, поведение кода не изменится.
#28
by Serginio1
Для примера сделал с minOccurs=""1"" В отладчике показывает Объект.Продукция это строка. Стоит добавить второй элемент Объект.Продукция.Добавить("ВторойЭлемент"); И уже показывает СписокXDTO
#29
by Serginio1
Но 1С генерит такую схему <xs:schema xmlns:tns="http:/Test5" xmlns:xs="; targetNamespace="http:/Test5" attributeFormDefault="unqualified" elementFormDefault="qualified">
#32
by Serginio1
Я сейчас добавлю в схему в 29 и проверю. Смысл то в тм, что 1С генерит такую схему при минимальном количестве 1
#36
by Fragster
+ и у тебя ФабрикаXDTO.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя) из-за этого возвращает неопределено.
#37
by Serginio1
Да она и так читает. Твоя показыват список Кстати строка такая <Поставщик xmlns="http:/Test5" xmlns:xs="; xmlns:xsi="; <Продукция>ОдинЭлемент</Продукция> Сечас поставлю Я создал тип в тестовой конфигурации. Сейчас через файл сделаю
#39
by Fragster
все хорошо со схемой. на то, список это или объект - влияет maxOccurs. если там не 1, то будет список. у тебя неправильно идет определение типа. вернее в него передаются неверные параметры. проверь в отладчике - если не сделать Чтение.ПерейтиКСодержимому, то у тебя получается Фабрика.Тип("","");
#43
by Serginio1
Еще раз прошу прощение и большое спасибо за поправку и добродушие. Просто давным давно работа с с сайтом на Asp.Net и там формировались классы как Object и при 1 элементе давали не массив а элемент. Это была такая реализация в Net. На 1С не проверял. в 28 чтение происходило через AnyType
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Запуск 1с из командной строки: как задать имя архива
- Задать значение константе
- Как задать уникальный идентификатор для нового элемента справочника
- Как задать значение параметра (массив) в консоли запросов или в СКД
- Как скопировать массив структур в массив
- Можно ли в СКД задать параметр массив типов?
- Тип значения элемента "ПолеВвода" выдает название элемента, например "Банк"
- СКД. Как задать сортировку в функциях Массив или Соединить строки
В этой группе 1С
- СКД: не выводится вычисляемое поле
- УПП РАУЗ себестоимость МПЗ при средней на разных складах
- Как удалить строки вне отбора в табличной части документа
- Ввод чисел пользователем
- Ошибка "Преобразование значения к типу Булево не может быть выполнено"?
- Сложный отбор в обработке "Групповое изменение реквизитов" в 1С:Бухгалтерии 3.0
- Как программно сохранить вариант отчета?
- УТ 11. При заполнении документов через подбор товаров нет цен номенклатуры.
- Обработка выбора с отбором по списку значений в УФ
- Ошибка в СКД: глобальные элементы отбора обязательно должны использовать поля
- Расхождение данных отчета с расшифровкой ЗУП 4-ФСС
- ERP 2.0 Ручная корректировка проводок.
- Перепроведение документов 1с8
- Начисление по больничному ЗУП 2.5 (нарушение режима)
- Контекстное меню на поле табличного документа
- УТ 11 В печатную форму не выводится штрихкод
- Атол: Драйвер устройств ввода v 6.8
- Трудовой договор в ЗУП 3.0
- УТ11 после обновления не подает признаков жизни при запуске обработок обновления
- Web-сервисы запись в регистры.