Два файловых метода получают точно те пути, которые только что создал этот урок. Никакие скачанные, рабочие или чужие файлы не открываются и не перезаписываются.
Где и как запускать
Полный серверный общий модуль своей отдельной учебной конфигурации.
Подготовка
В своей отдельной конфигурации УчебнаяКонфигурацияСинтаксиса создайте серверный общий модуль УчебныеПреобразованияXSL с флагом Сервер. Вставьте весь код выбранного урока.
Из серверной команды своей обработки вызовите УчебныеПреобразованияXSL.ВыполнитьПример(). Все XML и XSL уже приведены полностью; файлы реальных обменов не нужны.
Исходный XML содержит одну вымышленную Книгу: количество 3, цена 250, явно заданная сумма строки 750. XSL суммирует поле total и применяет учебный коэффициент; он не читает цены 1С.
Стиль не содержит import/include, document(), скриптов, DTD или внешних источников. Не подставляйте неизвестный XSL: преобразование не является безопасным исполнителем произвольного внешнего кода.
В первых трёх уроках всё в памяти. Последний создаёт только два собственных новых временных файла на стороне сервера и выводит пути; автоматически их не удаляет. Просмотрите и удалите только эти файлы вручную после опыта.
Процедура ВыполнитьПример() Экспорт
ИсходныйXML = "<order><line name=""Книга"" quantity=""3"" price=""250"" total=""750""/></order>";
Стиль = "<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" xmlns:g=""urn:guide:xsl-params"" exclude-result-prefixes=""g"">
|<xsl:output method=""xml"" omit-xml-declaration=""yes""/>
|<xsl:param name=""multiplier"" select=""1""/><xsl:param name=""g:caption"" select=""'Учебная Книга'""/>
|<xsl:template match=""/""><summary caption=""{$g:caption}"" amount=""{format-number(sum(order/line/@total) * $multiplier, '0')}""/></xsl:template>
|</xsl:stylesheet>";
ПутьСтиля = ПолучитьИмяВременногоФайла("xsl");
ПутьДанных = ПолучитьИмяВременногоФайла("xml");
ФайлСтиля = Новый Файл(ПутьСтиля);
ФайлДанных = Новый Файл(ПутьДанных);
Если ФайлСтиля.Существует() ИЛИ ФайлДанных.Существует() Тогда
ВызватьИсключение "Учебные пути уже существуют; перезапись запрещена";
КонецЕсли;
Сообщить("Создаётся только свой файл стиля: " + ПутьСтиля);
ТекстСтиля = Новый ТекстовыйДокумент;
ТекстСтиля.УстановитьТекст(Стиль);
ТекстСтиля.Записать(ПутьСтиля, КодировкаТекста.UTF8);
Сообщить("Создаётся только свой XML: " + ПутьДанных);
ТекстДанных = Новый ТекстовыйДокумент;
ТекстДанных.УстановитьТекст(ИсходныйXML);
ТекстДанных.Записать(ПутьДанных, КодировкаТекста.UTF8);
Преобразование = Новый ПреобразованиеXSL;
Преобразование.ЗагрузитьТаблицуСтилейXSLИзФайла(ПутьСтиля);
РезультатXML = Преобразование.ПреобразоватьИзФайла(ПутьДанных);
DOMРезультата = ПолучитьСвойXMLDOM(РезультатXML);
Сообщить(DOMРезультата.ЭлементДокумента.ПолучитьАтрибут("amount") = "750");
Сообщить(DOMРезультата.ЭлементДокумента.ПолучитьАтрибут("caption") = "Учебная Книга");
Сообщить("После проверки вручную удалите только два показанных собственных учебных файла");
КонецПроцедуры
Функция ПолучитьСвойXMLDOM(ТекстXML)
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(ТекстXML);
Попытка
Построитель = Новый ПостроительDOM;
Документ = Построитель.Прочитать(Чтение);
Исключение
ОшибкаЧтения = ОписаниеОшибки();
Попытка
Чтение.Закрыть();
Исключение
ВызватьИсключение ОшибкаЧтения + Символы.ПС + "Закрытие XML: " + ОписаниеОшибки();
КонецПопытки;
ВызватьИсключение ОшибкаЧтения;
КонецПопытки;
Чтение.Закрыть();
Возврат Документ;
КонецФункцииРазбор по шагам
Получить два уникальных временных пути серверного сеанса. До первой записи проверить, что ни один путь не существует.
Вывести точный путь до записи каждого файла. Сохранить только собственные короткие константы в UTF-8.
Загрузить стиль по ПутьСтиля, преобразовать только ПутьДанных без выходного писателя. Результат остаётся строкой в памяти.
Прочитать результат и проверить 750 и заголовок. Никакие записи базы не меняются.
Просмотреть и удалить вручную только два выведенных файла. При частичной ошибке уже созданный файл тоже остаётся по ранее показанному пути.
Как проверить результат
Обе проверки Истина. В памяти появляется summary, на диске только собственные исходные XSL/XML.
В клиент-серверном варианте пути относятся к серверу 1С, не обязательно к вашему компьютеру.
Ожидаемый результат
Полный файловый опыт демонстрирует источник и владение каждым путём.
На что обратить внимание
Не заменяйте пути каталогом выгрузок УТ/КА или скачанным неизвестным XSL.
Временный файл — не безопасное долговременное хранилище и не резервная копия.
Код не выполняет удаление по маске, очистку временного каталога или перезапись существующих файлов.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.