Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Получить значение объектаXDTO (получить значение элемента XML)

Получить значение объектаXDTO (получить значение элемента XML)
Я
   uzerp2
 
16.03.20 - 15:37
на вход подаем ОбъектXDTO


Функция вернутьЗначениеОбъектаXDTO(ОбъектXDTO)
    
    // Создание объекта ЗаписьXML
    ЗаписьXML = Новый ЗаписьXML;
    // Указываем, что запись производится в строку, а не в файл
    ЗаписьXML.УстановитьСтроку();
    // При помощи объекта ФабрикаXDTO записываем данные пакета XDTO в запись XML
    ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
    // Получаем текст записи XML
    ТекстОбъектаXDTO = ЗаписьXML.Закрыть();
    
    
    ЧтениеXMLДанных = Новый ЧтениеXML;
    ЧтениеXMLДанных.УстановитьСтроку(ТекстОбъектаXDTO);
    
    ЗначениеОбъектаXDTO = Неопределено;
    
    Пока ЧтениеXMLДанных.Прочитать() Цикл
        Если ЧтениеXMLДанных.ИмеетЗначение Тогда
            ЗначениеОбъектаXDTO = ЧтениеXMLДанных.Значение;
            Возврат(ЗначениеОбъектаXDTO);
        КонецЕсли;
    КонецЦикла;

    Возврат(ЗначениеОбъектаXDTO);
    
КонецФункции
   Fragster
 
1 - 16.03.20 - 15:48
что за онанизм?
   Fragster
 
2 - 16.03.20 - 15:49
ну и куча всяких мелких ошибок типа того, что объект может быть от другой фабрики (не от глобальной), реквизиты объекта могут быть в атрибутах. их может быть больше одного и т.п.
   novichok79
 
3 - 16.03.20 - 15:53
(0) а смысл так делать? почему сразу через ПолучитьСписок() или Получить() (точно не помню названия функций) нельзя?
   uzerp2
 
4 - 16.03.20 - 16:46
(3)

ну вы так атрибут можете считать (Код) а вот значение (Подразделение Самара) выдернуть например вот отсюда не сможете
<Подразделение Код="1111"> Подразделение Самара </Подразделение>
   Fragster
 
5 - 16.03.20 - 16:50
(4) сможем. во первых, если этот объект XDTO нормально описан, а не просто получен через Фабрика.Прочитать как anyType, то значение получить можно, просто обратившить по имени соответствующего свойства
   Fragster
 
6 - 16.03.20 - 16:51
во вторых, если все-таки работаем без описания пакета, то есть ОбъектXDTO.Последовательность, через которую можно вытащить значение
   Fragster
 
7 - 16.03.20 - 16:52
Лучше, конечно, сделать пакет. там и со списками проблем не будет и работать в целом проще. Жалко, что пакеты XDTO не на 100% совместимы со схемами XSD, но что поделать.
   uzerp2
 
8 - 16.03.20 - 17:21
(7)

через последовательность вытаскивается.
Спасибо !
   alekosansey
 
9 - 03.04.20 - 14:09
   alekosansey
 
10 - 03.04.20 - 14:10
Это ссылка на XDTO файл

Список тем форума
Рекламное место пустует  Рекламное место пустует
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.