Имя: Пароль:
1C
 
Значения данного типа не могут быть представлены в XML
☑
0 alf2006x
 
27.10.26
✎
17:40
Всем доброго дня.

И снова XML...
В какой-то момент я начал было наивно полагать что уже понимаю что к чему. Ан нет... не тут то было.

Опять 3 часа выковыривал xml не из того места ))

Спойлером скажу что проблемы уже как бы нет. Если не считать того, что есть большая проблема с пониманием происходящего.
Ближе к делу.

Ну вот как так-то?!

Код:
ЗаписьXML = Новый ЗаписьXML;
ИмяФайла = ПолучитьИмяВременногоФайла("xml");
ЗаписьXML.ОткрытьФайл(ИмяФайла,"WINDOWS-1251");
ЗаписьXML.ЗаписатьНачалоЭлемента("root");
    ЗаписьXML.ЗаписатьАтрибут("attr", "My_attr");
ЗаписьXML.ЗаписатьКонецЭлемента(); // root
ЗаписьXML.Закрыть();
    
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
Результат = ПрочитатьXML(ЧтениеXML); // ФабрикаXDTO.


Результат:

Ошибка при вызове метода контекста (ПрочитатьXML)
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(14)}:    Результат = ПрочитатьXML(ЧтениеXML); // ФабрикаXDTO.
по причине:
Значения данного типа не могут быть представлены в XML

А через фабрику - работает.
А совсем недавно была история строго наоборот.
Бился открывал файл фабрикой, в итоге через час случайно понял что открывать надо НЕ фабрикой.

Объясните христа ради, что чем надо открывать?..
Какие признаки у того, кого надо фабрикой и какие признаки у того, кого НЕ фабрикой ?
(если открыть его простым блокнотом, например)

Заранее благодарю.
1 Мультук
 
гуру
27.10.26
✎
17:50
1) Звучит так.
Я записал всякую фигню в файл, переименовал его в GreatTits.jpg , но увы.

2) ИИ предлагает следующий код.
Код я не писал, не проверял, но вроде всё правильно написано.
Нужно выполнить код и сравнить ваш файл с тем, что сгенерирует фабрика, сделать выводы

// 1. Создаем объект 1С, который можно сериализовать
ДанныеДляЗаписи = Новый Структура("attr", "My_attr");

// 2. Запись
ЗаписьXML = Новый ЗаписьXML;
ИмяФайла = ПолучитьИмяВременногоФайла("xml");
ЗаписьXML.ОткрытьФайл(ИмяФайла, "WINDOWS-1251");

// Платформа сама запишет типы структуры внутри XML
ЗаписатьXML(ЗаписьXML, ДанныеДляЗаписи); 
ЗаписьXML.Закрыть();
    
// 3. Чтение
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);

// Платформа автоматически восстановит Структуру
Результат = ПрочитатьXML(ЧтениеXML); 
ЧтениеXML.Закрыть();

// Проверяем результат
Сообщить(Результат.attr); // Выведет: My_attr
2 Garykom
 
гуру
27.10.26
✎
18:12
А чем фабрика не устраиват?
3 Serg_1960
 
27.10.26
✎
20:22
Классика жанра :)

    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл(ИмяФайла);
    Попытка
        Пока ЧтениеXML.Прочитать() Цикл
            Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
                Если ЧтениеXML.Имя = "root" Тогда
                    Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
                        Сообщить("" + ЧтениеXML.Имя + ": " + ЧтениеXML.Значение);
                    КонецЦикла;
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;    
    ЧтениеXML.Закрыть();

Источник: https://its.1c.ru/db/intgr83/content/203/hdoc
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.