|
Как добраться до значения элемента 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. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |