ЭлементDOM.УдалитьДочерний

Методы · RemoveChild

Удаляет узел из списка дочерних узлов.

Синтаксис

УдалитьДочерний(<Узел>)
Полное описание, параметры и ограничения

ЭлементDOM.УдалитьДочерний (DOMElement.RemoveChild)

ЭлементDOM (DOMElement)

УдалитьДочерний (RemoveChild)

Доступен, начиная с версии 8.1.

Синтаксис:
УдалитьДочерний(<Узел>)
Параметры:

<Узел> (обязательный)
Тип: АтрибутDOM, ДокументDOM, ЭлементDOM, ОпределениеТипаДокументаDOM, НотацияDOM, СущностьDOM, ФрагментДокументаDOM, ТекстDOM, КомментарийDOM, СекцияCDATADOM, ИнструкцияОбработкиDOM, СсылкаНаСущностьDOM, ПространствоИменXPath.
Удаляемый узел DOM.
Возвращаемое значение:
Тип: АтрибутDOM, ДокументDOM, ЭлементDOM, ОпределениеТипаДокументаDOM, НотацияDOM, СущностьDOM, ФрагментДокументаDOM, ТекстDOM, КомментарийDOM, СекцияCDATADOM, ИнструкцияОбработкиDOM, СсылкаНаСущностьDOM, ПространствоИменXPath.
Удаляемый узел.
Описание:

Удаляет узел из списка дочерних узлов.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Исключение вызывается в случаях:
если данный узел в режиме Только для чтения;

если удаляемый узел не найден;

если удаляемый узел является дочерним узлом узла Документ, исключение генерируется в случае, если реализация не поддерживает удаление узлов ОпределениеТипаДокумента и Элемент.

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Вставить, заменить и удалить товар в DOM

Изменяем порядок дочерних узлов и различаем копию узла и тот же самый узел. Пользовательские данные служат локальной пометкой, не XML-атрибутом.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Выполняйте на сервере. Текст названия записывается непосредственно в product для компактности учебного документа.

  2. Вставляемые и заменяемые узлы созданы одним документом; перенос между документами требует ИмпортироватьУзел.

Документ = Новый ДокументDOM("", "products");
Корень = Документ.ЭлементДокумента;
Первый = Документ.СоздатьЭлемент("product");
Первый.УстановитьАтрибут("code", "A-01");
Первый.ТекстовоеСодержимое = "Книга";
Корень.ДобавитьДочерний(Первый);
Последний = Документ.СоздатьЭлемент("product");
Последний.ТекстовоеСодержимое = "Ручка";
Корень.ДобавитьДочерний(Последний);
Вставленный = Документ.СоздатьЭлемент("product");
Вставленный.ТекстовоеСодержимое = "Тетрадь";
Корень.ВставитьПеред(Вставленный, Последний);
Копия = Первый.КлонироватьУзел(Истина);
Сообщить(Первый.УзелРавен(Копия));
Сообщить(Первый.УзелИдентичен(Копия));
Копия.ТекстовоеСодержимое = "Новая книга";
Удалённый = Корень.ЗаменитьДочерний(Копия, Первый);
Сообщить(Удалённый.РодительскийУзел = Неопределено);
Корень.УдалитьДочерний(Последний);
Вставленный.УстановитьПользовательскиеДанные("Проверено", Истина);
Сообщить(Вставленный.ПолучитьПользовательскиеДанные("Проверено"));
Сообщить(Корень.ПервыйДочерний.ТекстовоеСодержимое);
Сообщить(Корень.ПоследнийДочерний.ТекстовоеСодержимое);
Сообщить(Копия.СледующийСоседний.УзелИдентичен(Вставленный));
Сообщить(Вставленный.ПредыдущийСоседний.УзелИдентичен(Копия));
Сообщить(Вставленный.ДокументВладелец = Документ);
Узлы = Корень.ДочерниеУзлы;
Сообщить(Узлы.Количество());
Для Номер = 0 По Узлы.Количество() - 1 Цикл
    Узел = Узлы.Элемент(Номер);
    Сообщить(Узел.ИмяУзла + ": " + Узел.ТекстовоеСодержимое);
КонецЦикла;

Разбор по шагам

  1. Добавляем книгу и ручку, вставляем тетрадь перед ручкой.

  2. Глубокая копия книги имеет одинаковое содержимое, но является другим узлом.

  3. ЗаменитьДочерний возвращает удалённый старый узел; затем отдельно удаляем ручку.

  4. Проверяем связи соседей и обходим оставшийся СписокУзловDOM по индексам.

Как проверить результат

  1. Перед изменением копии УзелРавен даёт Истина, УзелИдентичен — Ложь.

  2. После изменений остаются 2 узла: Новая книга, Тетрадь; у удалённой книги нет родителя.

  3. Проверки соседей, владельца и пользовательской пометки дают Истина.

Ожидаемый результат

Дерево изменено осмысленно, различие между равенством содержимого и идентичностью узла показано явно.

На что обратить внимание

  1. Список дочерних узлов отражает изменения дерева: при удалении во время обхода индексы смещаются.

  2. УстановитьПользовательскиеДанные не создаёт атрибут и не является способом сохранить пометку в XML-файле.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.