Имя: Пароль:
1C
1С v8
Можно ли поменять значения аргументов в xdto?
, , ,
0 Веселый собака
 
19.04.21
14:40
Можно ли в полученных таким способом данных или в фабрике изменить определенные аргументы (значения)  

    СхемаXML = Новый СхемаXML;
    СхемаXML.РасположениеСхемы = ФайлXsd";
    СхемыXML = Новый НаборСхемXML;
    СхемыXML.Добавить(СхемаXML);
    
    ЧтениеXML = Новый ЧтениеXML();
    ЧтениеXML.ОткрытьФайл(ФайлXml");
    
    Фабрика = Новый ФабрикаXDTO(СхемыXML);
    Данные = Фабрика.ПрочитатьXML(ЧтениеXML);

тут внести изменения,
а потом сделать


        Запись = Новый ЗаписьXML;
    Запись.ОткрытьФайл(ВыходнойФайл, Новый ПараметрыЗаписиXML("UTF-8", "1.0", ));
    Запись.ЗаписатьОбъявлениеXML();
    Фабрика.ЗаписатьXML(Запись,Данные);
    Запись.Закрыть();

И получить измененный xml.
1 Fragster
 
гуру
19.04.21
15:02
можно
2 Веселый собака
 
19.04.21
15:09
(1) Это было бы прекрасно, если бы можно было поменять значение обращаясь к нему через точку, как это мы можем видеть в переменной Данные..
3 acht
 
19.04.21
15:12
(2) Что у тебя не получается?
4 Веселый собака
 
19.04.21
15:13
(3) изменить "Данные"
5 acht
 
19.04.21
15:17
(4) Как у тебя не получается изменить данные?
6 Веселый собака
 
19.04.21
15:19
(5) через точку я могу прочитать данные, а вот записать- ругается что это объект
7 acht
 
19.04.21
15:22
(6) Какой тип данных у переменной типа "Данные"?
8 acht
 
19.04.21
15:22
Тьфу. Тип у "Данные" какой?
9 Веселый собака
 
19.04.21
15:23
(8) xdto  с таким же типом
10 acht
 
19.04.21
15:24
(9) Скриншот показывай. С твоей терминологией это затянется надолго.
11 Веселый собака
 
19.04.21
15:25
Просто не хочется варганить рядом еще одну xdto-фабрику для того чтобы заполнять из первой.
Задача вывести на экран- дать отредактировать и записать.

(10) минутку
12 Веселый собака
 
19.04.21
15:30
13 Почему 1С
 
19.04.21
15:44
(12) Данные.DeliveryNote.Carrier.ContactName = "Vasya";
не дает что-ли?
14 Веселый собака
 
19.04.21
15:52
(13) ошибку дает, что записать нельзя, тип обьектный.
15 Веселый собака
 
19.04.21
15:53
Ведь там точно данные есть, раз я их могу записать.. А методов подобраться к ним не вижу.
16 Мимохожий Однако
 
19.04.21
15:54
Данные.DeliveryNote.ContactName = "Vasya";
17 Веселый собака
 
19.04.21
16:25
(16) см. (14)
18 acht
 
19.04.21
16:25
(14) Полностью тип ошибки приведи.
А то окажется сйечас, что там список какой-нибудь или непростое значение
19 acht
 
19.04.21
16:25
(18) Текст, тьфу
20 Веселый собака
 
19.04.21
16:31
(19)


{Форма.Форма.Форма(20)}: Ошибка при установке значения атрибута контекста (MessageID)
    Данные.MessageHeader.MessageID = Строка(РасхНакладная.Номер);
по причине:

по причине:
Несоответствие типов XDTO:
Тип '{http://www.w3.org/2001/XMLSchema}anyType' не найден
Значение не может быть установлено свойству, имеющему объектный тип
21 Веселый собака
 
19.04.21
16:31
(20) + тип Данные.MessageHeader.MessageID  - строка
22 Веселый собака
 
19.04.21
16:32
т.е. пространство имен типа укажи..
так это делается при создании узла или как его правильно назвать
23 Веселый собака
 
19.04.21
16:32
(22) точнее, тип
24 Веселый собака
 
19.04.21
16:34
(23) но я же не завожу ничего нового, я хочу лишь изменить значение атрибута
25 acht
 
19.04.21
16:35
(20) > {http://www.w3.org/2001/XMLSchema}anyType'
Есть подозрение, что у тебя фабрика хдто не привела объект к типу при чтении, потому что состояние чтения XML при чтении не указало нужный тип объекта. Показывай xml и схему, по которой фабрика строится
26 acht
 
19.04.21
16:37
И ломается оно на типе MessageHeader на самом деле
27 Веселый собака
 
19.04.21
16:43
(25) вот и у меня подозрение, что схему не сожрал.
т.к. anyType в таких случаях вроде как и возникает.
Сравнение исходной и конечной xml показывает, что верхний уровень пропал, стал anyType


Без схемы вроде тоже самое.
К сожалению схему не покажу, тут связали нас конфиденциальностью на весь пакет документов (тупо, да?).
28 Веселый собака
 
19.04.21
16:44
(26) а почему все прекрасно показывает, тот же тип
29 acht
 
19.04.21
16:46
(27) Такое обычно происходит из-за пустого целевого пространства имен в XML.
Попробуй в шапку добавить tns по тем данным, что у тебя в схеме прописаны.
30 Веселый собака
 
19.04.21
16:46
(26) "ломается" на всех простых типах, которые по идее могут быть присвоены

завтра вытяну схему из фабрики xdto, может там пусто
31 Веселый собака
 
19.04.21
16:47
(29) да, в xml пространства нет, есть только в xsd
32 acht
 
19.04.21
16:53
(31) Ну вот оно и не знает, как типы сопоставлять. И не будет знать как тебе обратно в xml записать, кстати.
Попробуй через ДокументDOM какой-нибудь, что-ли