|   |   | 
| 
 | Как добраться до значения элемента XDTO | ☑ | ||
|---|---|---|---|---|
| 0
    
        МастерВопросов 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.Закрыть(); | |||
| 3
    
        vde69 02.01.16✎ 11:55 | 
        я где-то здесь давал код как парсить сайты, поищи...     | |||
| 4
    
        vde69 02.01.16✎ 11:57 | ||||
| 5
    
        МастерВопросов 02.01.16✎ 11:57 | 
        (3) я уже весь форум перерыл...
 напиши конкретный пример, плс. | |||
| 6
    
        МастерВопросов 02.01.16✎ 11:59 | 
        (4) там с помощью ПостроительDOM, а мне нужно через объектXDTO     | |||
| 7
    
        vde69 02.01.16✎ 12:00 | ||||
| 8
    
        vde69 02.01.16✎ 12:00 | 
        (6) какая разница?     | |||
| 9
    
        МастерВопросов 02.01.16✎ 12:03 | 
        (8) ну типа я в конфигураторе структуру пакетов XDTO описал, с помощью них записываю файл. Логично с помощью них и читать, а не перебором через ПостроительDOM, или ЧтениеXML.     | |||
| 10
    
        hhhh 02.01.16✎ 12:20 | 
        ну ты же добавил этот элемент через задницу, почему должно прочитать?     | |||
| 11
    
        МастерВопросов 02.01.16✎ 12:26 | 
        (10) через какую задницу? Ровно через тот пакет XDTO, через который и пытаюсь прочитать     | |||
| 12
    
        vde69 02.01.16✎ 12:27 | 
        фабрика хороша для сериализации, то есть с типами которые 1с понимает.
 Если хочешь что-то нестандартное - то или хмл читай и разбирай как дерево или используй дом (то-же как дерево), а вот как объект и не должно работать | |||
| 13
    
        vde69 02.01.16✎ 12:30 | 
        в твоем случае тебе в самом пакете хдто (в конфигураторе) нужно добавить свойство а не в коде     | |||
| 14
    
        МастерВопросов 02.01.16✎ 12:31 | 
        (12) ну так "__content" это свойство объекта "stylesheet", почему с ним нельзя через объект работать?     | |||
| 15
    
        МастерВопросов 02.01.16✎ 12:32 | 
        (13) я в конфигураторе и описал свойство "__content" форма = текст. При записи его и использую.     | |||
| 16
    
        vde69 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 | ||||
| 21
    
        vde69 02.01.16✎ 12:44 | 
        а в файле свойство есть? может проблема не с чтением а с записью?     | |||
| 22
    
        vde69 02.01.16✎ 12:45 | 
        так ты тип поля не определил :))))     | |||
| 23
    
        МастерВопросов 02.01.16✎ 12:45 | 
        (21) да,см.(0)     | |||
| 24
    
        МастерВопросов 02.01.16✎ 12:46 | 
        (22) пробовал разные типы и стринг, и энисимплтип и вообще убрать - результат один и тот же, см.(20)     | |||
| 25
    
        vde69 02.01.16✎ 12:52 | 
        вот это у тебя неправильно
 Объектstylesheet.type = "222"; по этому при чтении свойство пропускается... сделай так, в конфигураторе определи тип как строка, а в коде вообще ничего не присваивай, на строке " Объектstylesheet.__content = "333";" остановись и посмотри чему равен тип и значение "Объектstylesheet.__content" до записи и после | |||
| 26
    
        Serginio1 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С доберусь.     | |||
| 34
    
        Serginio1 03.01.16✎ 10:24 | 
        (32) Ну это же очевидно.
 ПоследовательностьXDTO (XDTOSequence) Добавить (Add) Вариант синтаксиса: Добавить текст Синтаксис: Добавить(<Текст>) Параметры: <Текст> (обязательный) Тип: Строка. Текст, добавляемый в последовательность. Вариант синтаксиса: Добавить значение Синтаксис: Добавить(<Свойство>, <Элемент>) Параметры: <Свойство> (обязательный) Тип: СвойствоXDTO. Свойство, значение которого добавляется в последовательность. <Элемент> (обязательный) Тип: ЗначениеXDTO; ОбъектXDTO; Неопределено. Элемент данных XDTO, добавляемый в последовательность. А вот описание последовательности вообще нет. Нет и примеров. | |||
| 35
    
        МастерВопросов 03.01.16✎ 11:18 | 
        (34) я уже пробовал "Объектstylesheet.Последовательность().Добавить("444"); "
 выдаёт ошибку, т.к. Объектstylesheet.Последовательность() = неопределено | |||
| 36
    
        Serginio1 03.01.16✎ 11:32 | ||||
| 37
    
        Serginio1 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 | |||
| 38
    
        Serginio1 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. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |