Имя: Пароль:
1C
1С v8
Запись/чтение XMLфайла через XDTO.
0 SpellKeeper
 
16.04.19
14:06
Добрый день.
Второй день занимаюсь XDTO и XML. Толком пока ничего не понимаю.
Вот какой вопрос.
Сделал пакет XDTO в конфигураторе.
Пакет использует только простые типы.
Сделал выгрузку в файл. При выгрузке проверяю типы данных в объекте XDTO. Кроме строковых там есть типы Дата, Булево и Число.
При чтении данных все параметры приходят в виде строки.
Это нормально? Или я что-то не так сделал и у меня пакет читается с ошибками? И на самом деле в структуру должны четко вернуться типы, которые прописаны в пакете?
1 Жан Пердежон
 
16.04.19
14:13
в 3й строке ошибка
2 RomaH
 
naïve
16.04.19
15:14
ЧтениеХМЛ = Новый ЧтениеXML;
    
    ЧтениеХМЛ.ОткрытьФайл(ИмяФайла);
    
    ТипПациент             = ФабрикаXDTO.Тип("http://tfoms.yar.ru/BILL/613";, "patient");
    ТипПерсональныйСчет = ФабрикаXDTO.Тип("http://tfoms.yar.ru/BILL/613";, "personal_account");
    
    ВсегоПациентов = 0;
    
    
    Пока ЧтениеХМЛ.Прочитать() Цикл
        
        Пока ЧтениеХМЛ.ЛокальноеИмя = "patient" И ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента    И ВсегоПациентов < 2000 Цикл
            
            ВсегоПациентов = ВсегоПациентов + 1;
            
            Попытка
                Данные = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ,ТипПациент);
3 RomaH
 
naïve
16.04.19
15:15
надо указать какой тип из пакета хочешь использовать

ФабрикаXDTO.Тип("http://tfoms.yar.ru/BILL/613";;, "patient");
4 SpellKeeper
 
16.04.19
15:27
Спасибо за ответы, но я спрашивал не что конкретно у меня не так (я бы код написал), а правильно ли вообще, что при чтении возвращались все поля с типом строка, если записывались разные типы?
Выяснилось, что это не правильно.
У меня данные были выгружены из 1С и туда же загружались. Поэтому пакет XDTO должен нормально переварить все данные в типы 1С.
Нужно правильно тип указывать. Если 1С не смогла однозначно определиться с типом, то она все в строку конвертирует.
Не уверен, но, похоже, что если тип объекта XDTO и свойство объекта XDTO называются одинаково, то она не может правильно определить тип данных.