Создаётся только новое временное имя. UTF-8 и отсутствие BOM задаются явно, существующий путь запрещён.
Где и как запускать
Полный серверный общий модуль собственной учебной базы; не тонкий клиент.
Подготовка
В своей учебной базе 8.5.1.1343 создайте серверный общий модуль УчебнаяЗаписьXML. Вставьте полный модуль одного урока и вызовите УчебнаяЗаписьXML.ВыполнитьПример() из собственной серверной команды.
Все тексты и товары заданы константами: Книга, A&B, количество 3. Учётные данные, файлы организации, HTTP и внешние XML не используются.
Первые шесть уроков работают только со строками/потоком в памяти. Последний создаёт один новый временный XML в собственной учебной базе; имя выводится, файл оставляется для ручной проверки.
Для урока файла имя конфигурации должно быть УчебнаяКонфигурацияСинтаксиса. Существующий файл не перезаписывается. После проверки удалите вручную только показанный собственный временный файл.
ПараметрыЗаписиXML неизменяемы после создания. Все пять параметров задаются конструктором, а не присваиванием свойств.
Процедура ВыполнитьПример() Экспорт
СобственноеИмя = ПолучитьИмяВременногоФайла("xml");
ПроверкаПути = Новый Файл(СобственноеИмя);
Если ПроверкаПути.Существует() Тогда
ВызватьИсключение "Новый временный путь занят: запись не начинаем";
КонецЕсли;
Запись = Новый ЗаписьXML;
Сообщить("Начинаем запись только нового учебного файла: " + СобственноеИмя);
Запись.ОткрытьФайл(СобственноеИмя, "UTF-8", Ложь);
ОшибкаОперации = "";
ОшибкаЗакрытия = "";
Попытка
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("catalog");
Запись.ЗаписатьНачалоЭлемента("product");
Запись.ЗаписатьАтрибут("code", "A&B");
Запись.ЗаписатьАтрибут("quantity", "3");
Запись.ЗаписатьТекст("Книга <учебник> & пособие");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
Исключение
ОшибкаОперации = ОписаниеОшибки();
КонецПопытки;
Попытка
Запись.Закрыть();
Исключение
ОшибкаЗакрытия = ОписаниеОшибки();
КонецПопытки;
Если НЕ ПустаяСтрока(ОшибкаОперации) ИЛИ НЕ ПустаяСтрока(ОшибкаЗакрытия) Тогда
ВызватьИсключение "Учебный путь: " + СобственноеИмя + "; запись: " + ОшибкаОперации + "; закрытие: " + ОшибкаЗакрытия;
КонецЕсли;
СобственныйФайл = Новый Файл(СобственноеИмя);
Сообщить(СобственныйФайл.Существует());
Сообщить(СобственныйФайл.Размер() > 0);
Сообщить("Проверьте только новый собственный XML: " + СобственноеИмя);
Чтение = Новый ЧтениеXML;
Попытка
Чтение.ОткрытьФайл(СобственноеИмя);
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента
И Чтение.ЛокальноеИмя = "product" Тогда
Сообщить(Чтение.ПолучитьАтрибут("code") = "A&B");
Сообщить(Чтение.ПолучитьАтрибут("quantity") = "3");
КонецЕсли;
КонецЦикла;
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
КонецПроцедуры
Разбор по шагам
Проверить точное имя собственной учебной конфигурации и отсутствие файла по новому временно выделенному пути.
Открыть собственный файл UTF-8 без BOM. Создать объявление и товар, не вручную склеенный XML.
Отдельно сохранить ошибку записи и ошибку закрытия. При проблеме сообщить собственный путь для проверки, а не утверждать успешное сохранение.
После закрытия проверить файл и его размер, прочитать атрибуты через ЧтениеXML. Оставить созданный файл для ручного просмотра.
Как проверить результат
При успешной записи четыре проверки дают Истина.
В созданном собственном XML код A&B, quantity 3 и текст Книга <учебник> & пособие. После проверки удалите только показанный файл вручную.
Ожидаемый результат
Полный рецепт собственного файла с закрытием ресурса и проверкой обратного чтения.
На что обратить внимание
В серверном модуле временная папка и файл находятся на машине сервера 1С, не обязательно на компьютере клиента.
Не заменяйте новый временный путь существующим экспортом или документом организации.
При неудаче открытия или записи может остаться собственный неполный файл; пример не делает широкую очистку каталога.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.