Имя: Пароль:
1C
1С v8
Получить значение объектаXDTO (получить значение элемента XML)
0 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);
    
КонецФункции
1 Fragster
 
гуру
16.03.20
15:48
что за онанизм?
2 Fragster
 
гуру
16.03.20
15:49
ну и куча всяких мелких ошибок типа того, что объект может быть от другой фабрики (не от глобальной), реквизиты объекта могут быть в атрибутах. их может быть больше одного и т.п.
3 novichok79
 
16.03.20
15:53
(0) а смысл так делать? почему сразу через ПолучитьСписок() или Получить() (точно не помню названия функций) нельзя?
4 uzerp2
 
16.03.20
16:46
(3)

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

через последовательность вытаскивается.
Спасибо !
9 alekosansey
 
03.04.20
14:09
10 alekosansey
 
03.04.20
14:10
Это ссылка на XDTO файл
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.