Тип: Строка. Имя текущего узла XML. Содержит квалифицированное имя для текущего узла. Имя зависит от типа текущего узла: Атрибут - имя атрибута; ОпределениеТипаДокумента - имя типа документа; НачалоЭлемента - имя элемента; КонецЭлемента - имя элемента; СсылкаНаСущность - имя ссылки на сущность; ИнструкцияОбработки - адрес инструкции обработки; ОбъявлениеXML - строка xml. Для узлов, для которых имя не определено, свойство содержит пустую строку.
Полное описание, параметры и ограничения
ЧтениеFastInfoset.Имя (FastInfosetReader.Name)
ЧтениеFastInfoset (FastInfosetReader)
Имя (Name)
Доступен, начиная с версии 8.1.
Использование:
Только чтение.
Описание:
Тип: Строка.
Имя текущего узла XML.
Содержит квалифицированное имя для текущего узла. Имя зависит от типа текущего узла:
Атрибут - имя атрибута;
ОпределениеТипаДокумента - имя типа документа;
НачалоЭлемента - имя элемента;
КонецЭлемента - имя элемента;
СсылкаНаСущность - имя ссылки на сущность;
ИнструкцияОбработки - адрес инструкции обработки;
ОбъявлениеXML - строка xml.
Для узлов, для которых имя не определено, свойство содержит пустую строку.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 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, не пустым строковым значением.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Пропустить служебную ветку и не потерять товар после неё
Собственный документ содержит ignored с вложенным шумом и следующий product A-01. Пропустить уже перемещает reader; в этой ветке обычное Прочитать не вызывается.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Учебная база на платформе 8.5.1.1343. Создайте серверный общий модуль УчебныеЗадачи и процедуру ВыполнитьПример() Экспорт; код урока без директив вставляйте в её тело. Каждый урок запускайте отдельно.
Все документы создаются из собственных строк и чисел в памяти. Не подставляйте файл XML, бинарный архив обмена, ссылки или данные рабочей базы вместо учебных значений.
Fast Infoset — двоичное представление XML. Для чтения нужен соответствующий reader, а не преобразование байтов в UTF-8-строку. Это не формат API Avito и не автоматическое сжатие произвольного JSON.
Запуск в 1С ещё не подтверждён; выполните контрольные проверки в учебной базе. Не сравнивайте точные байты двух кодировщиков: в заданиях проверяется восстановленная структура и значения.
Запись = Новый ЗаписьFastInfoset;
Запись.УстановитьДвоичныеДанные();
Попытка
Запись.ЗаписатьКомментарий("Перед корнем");
Запись.ЗаписатьНачалоЭлемента("products");
Запись.ЗаписатьНачалоЭлемента("ignored");
Запись.ЗаписатьНачалоЭлемента("noise");
Запись.ЗаписатьТекст("Пропускаемый учебный текст");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьНачалоЭлемента("product");
Запись.ЗаписатьАтрибут("code", "A-01");
Запись.ЗаписатьАтрибут("quantity", "3");
Запись.ЗаписатьТекст("Книга");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
Данные = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Если ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда
ВызватьИсключение "Не получены собственные Fast Infoset-данные";
КонецЕсли;
Сообщить(Данные.Размер() > 0);
Чтение = Новый ЧтениеFastInfoset;
Чтение.УстановитьДвоичныеДанные(Данные);
Попытка
ТипСодержимого = Чтение.ПерейтиКСодержимому();
Сообщить(ТипСодержимого = ТипУзлаXML.НачалоЭлемента);
Товаров = 0;
Код = "";
Пока Чтение.ТипУзла <> ТипУзлаXML.Ничего Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.Имя = "ignored" Тогда
Чтение.Пропустить();
Продолжить;
КонецЕсли;
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.Имя = "product" Тогда
Товаров = Товаров + 1;
Код = Чтение.ПолучитьАтрибут("code");
КонецЕсли;
Чтение.Прочитать();
КонецЦикла;
Сообщить(Товаров = 1);
Сообщить(Код = "A-01");
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Разбор по шагам
ПерейтиКСодержимому пропускает комментарий и возвращает тип найденного содержимого.
Цикл завершается по Ничего — отсутствию следующего узла XML, не по имени последнего тега.
На ignored вызываем Пропустить и Продолжить: новая позиция будет обработана с начала следующей итерации.
Обычное Прочитать выполняется только на ветке обычной обработки.
Как проверить результат
Четыре проверки Истина: байты, НачалоЭлемента, один товар и его код A-01.
Пропускаемый шум не обрабатывается как товар, а product сразу после ветки не теряется.
Ожидаемый результат
Показано управление позицией reader при пропуске поддерева.
На что обратить внимание
Пропустить — операция позиционирования, не фильтр без изменения состояния.
Не добавляйте второе Прочитать сразу после Пропустить: можно потерять следующий узел.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.