Вход | Регистрация
 

Получить значение объекта XDTO

Получить значение объекта XDTO
Я
   Krabobor
 
20.11.14 - 13:15
Сильно не пинать, только учусь.

Есть хмл со строками типа
<ЗаполнятьРеквизит Тип="Перечисление" Вид="ЗаполнятьРеквизит" Идентификатор="ЧерезСоответствие">Из реквизита исходного документа через соответствие</ЗаполнятьРеквизит>

Получаем объектХДТО, и в нем есть доступ только к полям "Тип", "Вид", "Идентификатор". Подскажите как достучаться в объектеХДТО именно к значению "Из реквизита исходного документа через соответствие"?
   Krabobor
 
1 - 20.11.14 - 13:44
апну
   Jaap Vduul
 
2 - 20.11.14 - 13:57
По-умолчанию, вроде через свойство __content
   Krabobor
 
3 - 20.11.14 - 14:06
(2) ничего такого нет
   Serginio1
 
4 - 20.11.14 - 14:14
Бери отладчик и спотри.
ЗаполнятьРеквизит=объектХДТО.ЗаполнятьРеквизит;
Тип=ЗаполнятьРеквизит.Тип
Вид=ЗаполнятьРеквизит.Вид
   Fragster
 
5 - 20.11.14 - 14:14
нужно сделать пакетXDTO и у него сделать свойство с формой "текст", тогда в него попадет твое содержимое
   Krabobor
 
6 - 20.11.14 - 14:15
(4) в том то и фокус что доступ к полям "Тип", "Вид", "Идентификатор" есть, а к самому значению НЕТ
   Serginio1
 
7 - 20.11.14 - 14:15
А до Из реквизита исходного документа через соответствие
не получится. Только через разбор XML
   Krabobor
 
8 - 20.11.14 - 14:16
(5) подскажи как?
   Serginio1
 
9 - 20.11.14 - 14:16
   Fragster
 
10 - 20.11.14 - 14:17
получилось без пакета:


чтение = Новый ЧтениеXML;
чтение.УстановитьСтроку(стр);
Объ = ФабрикаXDTO.ПрочитатьXML(чтение);
Сообщить(Объ.Последовательность().ПолучитьТекст(0))
   Fragster
 
11 - 20.11.14 - 14:18
(8) с пакетом правильнее, но долго объяснять
   Krabobor
 
12 - 20.11.14 - 14:20
(10) действительно работает! спасибо.
(11) если не затруднит объясни)
   Serginio1
 
13 - 20.11.14 - 14:21
(10) Спасибо. Не знал
   Fragster
 
14 - 20.11.14 - 14:22
(12) ну лень мне
   Serginio1
 
15 - 20.11.14 - 14:24
(14) Да ладно. Поделись опытом.
   Serginio1
 
16 - 20.11.14 - 14:25
15+ Пожалуйста
   DS
 
17 - 20.11.14 - 15:27
Кстати, тоже не знал. Будем пользовать.
   Fragster
 
18 - 20.11.14 - 15:28
в двух словах для того же случая - 

а) создаем схему (для данного случая:):

<xs:schema xmlns:tns="test.test" xmlns:xs="http://www.w3.org/2001/XMLSchema"; targetNamespace="test.test" attributeFormDefault="unqualified" elementFormDefault="qualified">
    <xs:complexType name="ЗаполнятьРеквизит">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="Тип" type="xs:string"/>
                <xs:attribute name="Вид" type="xs:string"/>
                <xs:attribute name="Идентификатор" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:schema>если указать правильные типы - то примитивные типы (даты, числа, булево...) в 1с сразу станут правильными значениями

код будет такой:
Фабрика = СоздатьФабрикуXDTO("D:\temp\схема.xsd");
чтение = Новый ЧтениеXML;
чтение.УстановитьСтроку(стр);
Тип = Фабрика.Тип("test.test", "ЗаполнятьРеквизит");
Объ = Фабрика.ПрочитатьXML(чтение,Тип);
Сообщить(Объ.__content)


б) создаем пакет в конфе:
http://wstaw.org/m/2014/11/20/0.png

код будет такой:
чтение = Новый ЧтениеXML;
чтение.УстановитьСтроку(стр);
Тип = ФабрикаXDTO.Тип("test.test", "ЗаполнятьРеквизит");
Объ = ФабрикаXDTO.ПрочитатьXML(чтение,Тип);
Сообщить(Объ.Текст);
   Fragster
 
19 - 20.11.14 - 15:29
+ к схеме и пакету - правильная работа со списками (нет отсутствующих свойств, нет прыжков между объектомXDTO и спискомXDTO)
   DS
 
20 - 20.11.14 - 15:30
(18) Это понятно. Почему пакетом правильнее? Какой-то подвох в (10) таится?
   Fragster
 
21 - 20.11.14 - 15:33
(20) необязательные свойства, примитивные типы, работа со списками
   Fragster
 
22 - 20.11.14 - 15:34
контроль структуры загружаемых/выгружаемых данных, опять же
   Serginio1
 
23 - 20.11.14 - 17:34
(18) Спасибо


Список тем форума
 
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.