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

Как добраться до значения элемента XDTO

Как добраться до значения элемента XDTO
Я
   МастерВопросов
 
02.01.16 - 11:49
есть элемент файла XML такой структуры:

<stylesheet type="222">333</stylesheet>

как добраться до через объектXDTO "333"?

читаю файл с помощью Фабрики:
    МойXML = Новый ЧтениеXML;
    МойXML.ОткрытьФайл(СокрЛП(ПутьКФайлу));
    
    НашаКнига = МояФабрикаXDTO.ПрочитатьXML(МойXML);
    МойXML.Закрыть();


в итоге "НашаКнига.stylesheet" видит свойство "type" форма = атрибут и всё. Свойства "__content" форма = текст (так я его описал в пакете) нигде нет.
Как мне получить значение элемента = "333" ?!!

Год назад парень такой же вопрос задавал, так толком ничего и не ответили.
v8: Как добраться до элемента XDTO
   МастерВопросов
 
1 - 02.01.16 - 11:50
как добраться до "333" через объектXDTO?
   МастерВопросов
 
2 - 02.01.16 - 11:54
создавал файл так:

    Типstylesheet = Типqqq.Свойства.Получить("stylesheet").Тип;
    Объектstylesheet = МояФабрикаXDTO.Создать(Типstylesheet);    
    
    Объектstylesheet.type = "222";
    Объектstylesheet.__content = "333";
    

    
    МояФабрикаXDTO.ЗаписатьXML(ЗаписьXML, НашаКнига, "5555");
    
    ЗаписьXML.Закрыть();
   vde69
 
3 - 02.01.16 - 11:55
я где-то здесь давал код как парсить сайты, поищи...
   vde69
 
4 - 02.01.16 - 11:57
   МастерВопросов
 
5 - 02.01.16 - 11:57
(3) я уже весь форум перерыл...
напиши конкретный пример, плс.
   МастерВопросов
 
6 - 02.01.16 - 11:59
(4) там с помощью ПостроительDOM, а мне нужно через объектXDTO
   vde69
 
7 - 02.01.16 - 12:00
   vde69
 
8 - 02.01.16 - 12:00
(6) какая разница?
   МастерВопросов
 
9 - 02.01.16 - 12:03
(8) ну типа я в конфигураторе структуру пакетов XDTO описал, с помощью них записываю файл. Логично с помощью них и читать, а не перебором через ПостроительDOM, или ЧтениеXML.
   hhhh
 
10 - 02.01.16 - 12:20
ну ты же добавил этот элемент через задницу, почему должно прочитать?
   МастерВопросов
 
11 - 02.01.16 - 12:26
(10) через какую задницу? Ровно через тот пакет XDTO, через который и пытаюсь прочитать
   vde69
 
12 - 02.01.16 - 12:27
фабрика хороша для сериализации, то есть с типами которые 1с понимает.

Если хочешь что-то нестандартное - то или хмл читай и разбирай как дерево или используй дом (то-же как дерево),
а вот как объект и не должно работать
   vde69
 
13 - 02.01.16 - 12:30
в твоем случае тебе в самом пакете хдто (в конфигураторе) нужно добавить свойство а не в коде
   МастерВопросов
 
14 - 02.01.16 - 12:31
(12) ну так "__content" это свойство объекта "stylesheet", почему с ним нельзя через объект работать?
   МастерВопросов
 
15 - 02.01.16 - 12:32
(13) я в конфигураторе и описал свойство "__content" форма = текст. При записи его и использую.
   vde69
 
16 - 02.01.16 - 12:35
сообщить(СокрЛП(НашаКнига.__content))

ошибку генерит или "неопределено"
   МастерВопросов
 
17 - 02.01.16 - 12:37
(16) ошибку
   МастерВопросов
 
18 - 02.01.16 - 12:37
   МастерВопросов
 
19 - 02.01.16 - 12:39
(16) НашаКнига.stylesheet.__content    
{(1)}: Поле объекта не обнаружено (__content)
   МастерВопросов
 
20 - 02.01.16 - 12:43
   vde69
 
21 - 02.01.16 - 12:44
а в файле свойство есть? может проблема не с чтением а с записью?
   vde69
 
22 - 02.01.16 - 12:45
так ты тип поля не определил :))))
   МастерВопросов
 
23 - 02.01.16 - 12:45
(21) да,см.(0)
   МастерВопросов
 
24 - 02.01.16 - 12:46
(22) пробовал разные типы и стринг, и энисимплтип и вообще убрать - результат один и тот же, см.(20)
   vde69
 
25 - 02.01.16 - 12:52
вот это у тебя неправильно

    Объектstylesheet.type = "222";

по этому при чтении свойство пропускается...

сделай так,
в конфигураторе определи тип как строка, а в коде вообще ничего не присваивай,
на строке "    Объектstylesheet.__content = "333";"
остановись и посмотри чему равен тип и значение "Объектstylesheet.__content" до записи и после
   Serginio1
 
26 - 02.01.16 - 12:52
   МастерВопросов
 
27 - 02.01.16 - 14:16
(25) установил у "__content" такой тип: anySimpleType (http://www.w3.org/2001/XMLSchema)

строку "//Объектstylesheet.__content = "3b33";"  закооментил, после записи "МояФабрикаXDTO.ЗаписатьXML(ЗаписьXML, НашаКнига, "555");"

Объектstylesheet.__content возвращает значение = пусто, тип = неопределено

http://s006.radikal.ru/i215/1601/07/92007ccf6fdf.jpg
   МастерВопросов
 
28 - 02.01.16 - 14:20
(26) О! Наконец то! Огромное спсибо!
XDTO атрибуты и свойства

"обРез.Msg[0].Последовательность().ПолучитьТекст(0)"
   МастерВопросов
 
29 - 02.01.16 - 14:26
кстати, а что такое "Последовательность" ?
ОбъектXDTO.Последовательность (XDTODataObject.Sequence)
ОбъектXDTO (XDTODataObject)
Последовательность (Sequence)
Синтаксис:

Последовательность()
Возвращаемое значение:

Тип: ПоследовательностьXDTO.

Описание:

Получает последовательность объекта.

Доступность:

Тонкий клиент, сервер
   МастерВопросов
 
30 - 02.01.16 - 14:37
"XDTO
Механизм XDTO позволяет создать модель представления данных (модель типов и значений), которая, с одной стороны, обеспечивает возможность просто и естественно манипулировать данными в среде 1С:Предприятия 8,"


это они (28) называют "просто и естественно"? Я себе чуть мозг не вывернул пока получил значение. И так, кстати, и не понял что за "последовательность" такая загадошная - вложенные в объектXDTO элементы XML что ли?
 
 
   Записьдампа
 
31 - 02.01.16 - 15:32
(11) Через обыкновенную, которая приключений ищет.

Зачем тебе "__content", если это обычный тип - stylesheet в форме элемента строкового типа, у которого есть подчинённый type в форме атрибута?
   МастерВопросов
 
32 - 02.01.16 - 16:01
(31) и как по твоему без свойства "__content" записать "333" внутрь элемента как в (0)?
   Записьдампа
 
33 - 02.01.16 - 20:27
(32) Дней через 5 отвечу, как до 1С доберусь.
   Serginio1
 
34 - 03.01.16 - 10:24
(32) Ну это же очевидно.
ПоследовательностьXDTO (XDTOSequence)
Добавить (Add)
Вариант синтаксиса: Добавить текст

Синтаксис:

Добавить(<Текст>)
Параметры:

<Текст> (обязательный)

Тип: Строка.
Текст, добавляемый в последовательность. 
Вариант синтаксиса: Добавить значение

Синтаксис:

Добавить(<Свойство>, <Элемент>)
Параметры:

<Свойство> (обязательный)

Тип: СвойствоXDTO.
Свойство, значение которого добавляется в последовательность. 
<Элемент> (обязательный)

Тип: ЗначениеXDTO; ОбъектXDTO; Неопределено. 
Элемент данных XDTO, добавляемый в последовательность.

А вот описание последовательности вообще нет.
Нет и примеров.
   МастерВопросов
 
35 - 03.01.16 - 11:18
(34) я уже пробовал "Объектstylesheet.Последовательность().Добавить("444"); "

выдаёт ошибку, т.к. Объектstylesheet.Последовательность() = неопределено
   Serginio1
 
36 - 03.01.16 - 11:32
А описание аналогично Получить значение объекта XDTO

<xs:extension base="xs:string">
   Serginio1
 
37 - 03.01.16 - 12:21
Кстати если в конфигураторе создать объект и добавить свойство (Свойство1) с Форма текст схема будет 
<xs:complexType name="ТипОбъекта1">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:sequence>
                    <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

                </xs:sequence>
                <xs:attribute name="Свойство2" type="xs:string" use="required"/>
                <xs:anyAttribute namespace="##any" processContents="lax"/>

            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

И к нему можно обратиться как Свойство1
   Serginio1
 
38 - 03.01.16 - 12:23
Там еще добавлено свойство последовательный истина
   МастерВопросов
 
39 - 08.01.16 - 05:21
(33) прошло пять дней!
   МастерВопросов
 
40 - 11.01.16 - 14:28
(33) прошло девять дней!
   Широкий
 
41 - 11.01.16 - 14:35
Об_Элемент.Последовательность().ПолучитьТекст(0);
   МастерВопросов
 
42 - 12.01.16 - 15:38
(41) Спасибо, но с этим мы разобрались в (28)
Сейчас речь идет о обратном - как записать этот текст в элемент XML, через объект XDTO, если тот не имеет атрибута с формой "текст" в описании пакета XDTO.  
з.ы.: "Последовательность" появляется только после записи ЗаписьXML.


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