Записывает атрибут элемента.
Синтаксис
ЗаписатьАтрибут(<ПолноеИмя>, <Значение>)ЗаписатьАтрибут(<ЛокальноеИмя>, <URIПространстваИмен>, <Значение>)Примеры платформы
Запись.ЗаписатьНачалоЭлемента("apple");
Запись.ЗаписатьСоответствиеПространстваИмен("nsp", "http://metrics.org");
Запись.ЗаписатьАтрибут("weight", "http://metrics.org", "12.5");
Запись.ЗаписатьКонецЭлемента();Полное описание, параметры и ограничения
ЗаписьFastInfoset.ЗаписатьАтрибут (FastInfosetWriter.WriteAttribute)
ЗаписьFastInfoset (FastInfosetWriter)
ЗаписатьАтрибут (WriteAttribute)
Доступен, начиная с версии 8.1.
Вариант синтаксиса: Запись атрибута с полным именем
Синтаксис:
ЗаписатьАтрибут(<ПолноеИмя>, <Значение>)
Параметры:
<ПолноеИмя> (обязательный)
Тип: Строка.
Полное имя атрибута. Может включать префикс.
<Значение> (обязательный)
Тип: Строка.
Значение атрибута.
Вариант синтаксиса: Запись атрибута с локальным именем и URI пространства имен
Синтаксис:
ЗаписатьАтрибут(<ЛокальноеИмя>, <URIПространстваИмен>, <Значение>)
Параметры:
<ЛокальноеИмя> (обязательный)
Тип: Строка.
Локальное имя атрибута.
<URIПространстваИмен> (обязательный)
Тип: Строка.
URI пространства имен для локального имени атрибута.
<Значение> (обязательный)
Тип: Строка.
Значение атрибута.
Описание:
Записывает атрибут элемента.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Атрибутов может быть произвольное количество. Атрибут может идентифицироваться полным именем или локальным именем и URI пространства имен. Атрибуты должны записываться после записи начала элемента и перед записью текста элемента.
Пример:
Запись.ЗаписатьНачалоЭлемента("apple");
Запись.ЗаписатьСоответствиеПространстваИмен("nsp", "http://metrics.org");
Запись.ЗаписатьАтрибут("weight", "http://metrics.org", "12.5");
Запись.ЗаписатьКонецЭлемента();
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Пройти атрибуты отдельным курсором и проверить code/quantity
ПервыйАтрибут и СледующийАтрибут меняют текущий узел reader. После перехода Имя и Значение относятся уже к атрибуту, а не к элементу товара.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Учебная база на платформе 8.5.1.1343. Создайте серверный общий модуль УчебныеЗадачи и процедуру ВыполнитьПример() Экспорт; код урока без директив вставляйте в её тело. Каждый урок запускайте отдельно.
Все документы создаются из собственных строк и чисел в памяти. Не подставляйте файл XML, бинарный архив обмена, ссылки или данные рабочей базы вместо учебных значений.
Fast Infoset — двоичное представление XML. Для чтения нужен соответствующий reader, а не преобразование байтов в UTF-8-строку. Это не формат API Avito и не автоматическое сжатие произвольного JSON.
Запуск в 1С ещё не подтверждён; выполните контрольные проверки в учебной базе. Не сравнивайте точные байты двух кодировщиков: в заданиях проверяется восстановленная структура и значения.
Запись = Новый ЗаписьFastInfoset;
Запись.УстановитьДвоичныеДанные();
Попытка
Запись.ЗаписатьНачалоЭлемента("product");
Запись.ЗаписатьАтрибут("code", "A-01");
Запись.ЗаписатьАтрибут("quantity", "3");
Запись.ЗаписатьТекст("Книга");
Запись.ЗаписатьКонецЭлемента();
Данные = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Если ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда
ВызватьИсключение "Не получены собственные Fast Infoset-данные";
КонецЕсли;
Сообщить(Данные.Размер() > 0);
Чтение = Новый ЧтениеFastInfoset;
Чтение.УстановитьДвоичныеДанные(Данные);
Попытка
НайденКорень = Ложь;
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
НайденКорень = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не НайденКорень Тогда
ВызватьИсключение "Не найден собственный корневой элемент";
КонецЕсли;
Код = "";
Количество = "";
ЕстьАтрибут = Чтение.ПервыйАтрибут();
Пока ЕстьАтрибут Цикл
Сообщить(Чтение.ТипУзла = ТипУзлаXML.Атрибут);
Сообщить(Чтение.ИмеетИмя И Чтение.ИмеетЗначение);
Сообщить(Не Чтение.ЭтоАтрибутПоУмолчанию);
Если Чтение.Имя = "code" Тогда
Код = Чтение.Значение;
ИначеЕсли Чтение.Имя = "quantity" Тогда
Количество = Чтение.Значение;
КонецЕсли;
ЕстьАтрибут = Чтение.СледующийАтрибут();
КонецЦикла;
Сообщить(Код = "A-01");
Сообщить(Количество = "3");
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Разбор по шагам
Сначала позиционируем reader на корневом НачалоЭлемента.
ПервыйАтрибут возвращает булевый признак успешного перехода; при отсутствии атрибутов цикл не выполняется.
Внутри цикла используем текущее Имя и Значение, а не индексные методы для начала элемента.
ЭтоАтрибутПоУмолчанию здесь Ложь: оба атрибута записаны явно, DTD и XSD не используются.
Как проверить результат
В каждой итерации три проверки Истина: тип атрибута, наличие имени/значения и явное происхождение.
Последние проверки кода A-01 и количества 3 Истина; порядок обхода не используется как условие.
Ожидаемый результат
Курсорный обход атрибутов отделён от последовательного обхода элементов.
На что обратить внимание
После ПервыйАтрибут нельзя считать Чтение.Имя именем товара product.
Атрибут по умолчанию определяется DTD/XSD, не пустым строковым значением.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Создать и удалить только собственный временный Fast Infoset-файл
Путь выдаёт платформа. Упражнение запрещает подмену имени существующим руководством, архивом или каталогом проекта.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Учебная база на платформе 8.5.1.1343. Создайте серверный общий модуль УчебныеЗадачи и процедуру ВыполнитьПример() Экспорт; код урока без директив вставляйте в её тело. Каждый урок запускайте отдельно.
Все документы создаются из собственных строк и чисел в памяти. Не подставляйте файл XML, бинарный архив обмена, ссылки или данные рабочей базы вместо учебных значений.
Fast Infoset — двоичное представление XML. Для чтения нужен соответствующий reader, а не преобразование байтов в UTF-8-строку. Это не формат API Avito и не автоматическое сжатие произвольного JSON.
Запуск в 1С ещё не подтверждён; выполните контрольные проверки в учебной базе. Не сравнивайте точные байты двух кодировщиков: в заданиях проверяется восстановленная структура и значения.
Это отдельное файловое упражнение: оно при вашем запуске создаёт и удаляет только один новый временный .fi-файл. Используйте учебную базу и разрешённый временный каталог сервера.
Никогда не заменяйте ПолучитьИмяВременногоФайла существующим путём. В УдалитьФайлы передаётся только полученное имя без маски и без рекурсивного удаления.
ИмяУчебногоФайла = ПолучитьИмяВременногоФайла("fi");
Сообщить("Собственный временный файл на сервере: " + ИмяУчебногоФайла);
Запись = Новый ЗаписьFastInfoset;
Чтение = Новый ЧтениеFastInfoset;
ЗаписьОткрыта = Ложь;
ЧтениеОткрыто = Ложь;
Попытка
Запись.ОткрытьФайл(ИмяУчебногоФайла);
ЗаписьОткрыта = Истина;
Запись.ЗаписатьНачалоЭлемента("product");
Запись.ЗаписатьАтрибут("code", "A-01");
Запись.ЗаписатьАтрибут("quantity", "3");
Запись.ЗаписатьТекст("Книга");
Запись.ЗаписатьКонецЭлемента();
РезультатЗакрытия = Запись.Закрыть();
ЗаписьОткрыта = Ложь;
Сообщить(РезультатЗакрытия = Неопределено);
УчебныйФайл = Новый Файл(ИмяУчебногоФайла);
Сообщить(УчебныйФайл.Существует());
Чтение.ОткрытьФайл(ИмяУчебногоФайла);
ЧтениеОткрыто = Истина;
Название = "";
Пока Чтение.Прочитать() Цикл
Если Чтение.ЭтоСимвольныеДанные Тогда
Название = Название + Чтение.Значение;
КонецЕсли;
КонецЦикла;
Сообщить(Название = "Книга");
Чтение.Закрыть();
ЧтениеОткрыто = Ложь;
Исключение
Если ЧтениеОткрыто Тогда
Чтение.Закрыть();
КонецЕсли;
Если ЗаписьОткрыта Тогда
Запись.Закрыть();
КонецЕсли;
ПроверкаФайла = Новый Файл(ИмяУчебногоФайла);
Если ПроверкаФайла.Существует() Тогда
УдалитьФайлы(ИмяУчебногоФайла);
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
УдалитьФайлы(ИмяУчебногоФайла);
ПроверкаУдаления = Новый Файл(ИмяУчебногоФайла);
Сообщить(Не ПроверкаУдаления.Существует());Разбор по шагам
Новое временное имя получается на сервере, где выполняется код; путь может отличаться от пути на вашем клиентском ПК.
Writer пишет один собственный товар, закрывает файл и возвращает Неопределено согласно файловому варианту.
Reader читает тот же конкретный новый файл и проверяет кириллическое название.
Закрываем ресурсы перед удалением. В ошибочной ветке проверяем наличие только этого файла, затем сохраняем исключение.
Как проверить результат
Четыре проверки ожидаются Истина: файловый результат Неопределено, существование до чтения, название Книга и отсутствие после удаления.
Вывод содержит точное имя файла; руководство HTML, исходные XML и рабочие данные базы не изменяются.
Ожидаемый результат
Показан полный безопасно ограниченный жизненный цикл собственного временного двоичного XML-файла.
На что обратить внимание
.fi — двоичный файл: открытие блокнотом не является проверкой правильности XML.
Если у сервера нет разрешения на временный каталог, исправьте учебное окружение; не выбирайте чужую существующую папку и не запускайте с повышением прав автоматически.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.