Получает пользовательские данные.
Синтаксис
ПолучитьПользовательскиеДанные(<Ключ>)Полное описание, параметры и ограничения
АтрибутDOM.ПолучитьПользовательскиеДанные (DOMAttribute.GetUserData)
АтрибутDOM (DOMAttribute)
ПолучитьПользовательскиеДанные (GetUserData)
Доступен, начиная с версии 8.1.
Синтаксис:
ПолучитьПользовательскиеДанные(<Ключ>)
Параметры:
<Ключ> (обязательный)
Тип: Строка.
Ключ пользовательских данных.
Возвращаемое значение:
Тип: Произвольный.
Неопределено, если указанному ключу не соответствовали никакие пользовательские данные.
Описание:
Получает пользовательские данные.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Отличить неглубокую копию элемента от полной копии и служебных данных
Клонируем реальный элемент товара и его текст/комментарий/CDATA/инструкцию/атрибут/фрагмент. Копия равна по содержимому, но не идентична и не наследует локальную метку.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Используйте весь приведённый код с собственной подготовкой восьми узлов.
Метки source-row и training-tag — локальные учебные значения, не атрибуты XML и не номера строк источника конфигурации.
Документ = Новый ДокументDOM("urn:guide:nodes", "g:guide");
Корень = Документ.ЭлементДокумента;
Корень.УстановитьСоответствиеПространстваИмен("g", "urn:guide:nodes");
Атрибут = Документ.СоздатьАтрибут("code");
Атрибут.Значение = "A-01";
Корень.УстановитьУзелАтрибута(Атрибут);
Текст = Документ.СоздатьТекстовыйУзел("Книга");
Комментарий = Документ.СоздатьКомментарий("учебный комментарий");
CDATA = Документ.СоздатьСекциюCDATA("<данные>");
Инструкция = Документ.СоздатьИнструкциюОбработки("guide", "mode=test");
Корень.ДобавитьДочерний(Текст);
Корень.ДобавитьДочерний(Комментарий);
Корень.ДобавитьДочерний(CDATA);
Корень.ДобавитьДочерний(Инструкция);
Фрагмент = Документ.СоздатьФрагментДокумента();
Фрагмент.ДобавитьДочерний(Документ.СоздатьЭлемент("note"));
Узлы = Новый Массив;
Узлы.Добавить(Документ);
Узлы.Добавить(Корень);
Узлы.Добавить(Атрибут);
Узлы.Добавить(Текст);
Узлы.Добавить(Комментарий);
Узлы.Добавить(CDATA);
Узлы.Добавить(Инструкция);
Узлы.Добавить(Фрагмент);
Корень.УстановитьПользовательскиеДанные("source-row", 7);
НеглубокаяКопия = Корень.КлонироватьУзел(Ложь);
ПолнаяКопия = Корень.КлонироватьУзел(Истина);
Сообщить(НеглубокаяКопия.ДочерниеУзлы.Количество() = 0);
Сообщить(НеглубокаяКопия.ЕстьАтрибут("code"));
Сообщить(ПолнаяКопия.ДочерниеУзлы.Количество() = 4);
Сообщить(ПолнаяКопия.УзелРавен(Корень));
Сообщить(Не ПолнаяКопия.УзелИдентичен(Корень));
Сообщить(ПолнаяКопия.РодительскийУзел = Неопределено);
Сообщить(Корень.ПолучитьПользовательскиеДанные("source-row") = 7);
Сообщить(ПолнаяКопия.ПолучитьПользовательскиеДанные("source-row") = Неопределено);
// Документ не клонируем: остальные семь видов созданы именно в нём.
Узлы.Удалить(0);
Для Каждого Узел Из Узлы Цикл
Узел.УстановитьПользовательскиеДанные("training-tag", "обработано");
Копия = Узел.КлонироватьУзел(Истина);
Сообщить(Узел.ПолучитьПользовательскиеДанные("training-tag") = "обработано");
Сообщить(Копия.ПолучитьПользовательскиеДанные("training-tag") = Неопределено);
Сообщить(Копия.УзелРавен(Узел));
Сообщить(Не Копия.УзелИдентичен(Узел));
КонецЦикла;Разбор по шагам
У элемента неглубокое клонирование сохраняет атрибуты, но не копирует детей. Полное копирует всё поддерево.
УзелРавен сравнивает содержимое по правилам DOM; УзелИдентичен проверяет один и тот же узел.
Копия отсоединена от родителя. Пользовательские данные не переносятся и не участвуют в равенстве.
Отдельно клонируем семь конкретных видов: элемент, атрибут, текст, комментарий, CDATA, инструкцию и фрагмент. Документ из этого цикла исключён.
Как проверить результат
Неглубокий элемент: 0 детей и сохранён code. Полный элемент: 4 ребёнка.
Полная копия равна, не идентична исходному корню и не имеет родителя.
Для всех семи отдельных видов копия не получает training-tag, хотя исходник её имеет.
Ожидаемый результат
Показаны реальные различия структуры копии, идентичности узла и служебных локальных меток.
На что обратить внимание
Клонирование не переносит узел в другой документ: для этого используйте ИмпортироватьУзел.
Изменение копии не следует интерпретировать как изменение исходного элемента.
Служебные данные DOM не сериализуются как XML-атрибуты; если нужен атрибут обмена, задайте его явно.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.