Заменяет дочерний узел, указанный параметром <СтарыйУзел>, на узел, указанный параметром <НовыйУзел>. Если новый узел - это ФрагментДокумента, то заменяемый узел будет заменен всеми дочерними узлами фрагмента документа. Если новый узел уже содержится в дереве документа, то он сначала удаляется из дочерних узлов старого родителя и вставляется в список дочерних узлов нового родителя.
Синтаксис
ЗаменитьДочерний(<НовыйУзел>, <СтарыйУзел>)Полное описание, параметры и ограничения
ЭлементКолонкаТаблицыHTML.ЗаменитьДочерний (HTMLTableColElement.ReplaceChild)
ЭлементКолонкаТаблицыHTML (HTMLTableColElement)
ЗаменитьДочерний (ReplaceChild)
Доступен, начиная с версии 8.2.
Синтаксис:
ЗаменитьДочерний(<НовыйУзел>, <СтарыйУзел>)
Параметры:
<НовыйУзел> (обязательный)
Тип: АтрибутHTML, ЭлементHTML, ЭлементКнопкаHTML, ЭлементВводаHTML, ЭлементЗаголовокHTML, ЭлементРазметкаHTML, ЭлементПлавающийФреймHTML, ЭлементВставкаHTML, ЭлементФреймHTML, ЭлементНаборФреймовHTML, ЭлементМетаHTML, ЭлементОбъектHTML, ЭлементСкриптHTML, ЭлементТаблицаHTML, ЭлементСтрокаТаблицыHTML, ЭлементЯчейкаТаблицыHTML, ЭлементКолонкаТаблицыHTML, ЭлементЗаголовокТаблицыHTML, ЭлементБлокHTML, ЭлементЛинияHTML, ЭлементФорматированногоТекстаHTML, ЭлементКартинкаHTML, ЭлементСвязьHTML, ЭлементЯкорьHTML, ЭлементАплетHTML, ЭлементФормаHTML, ДокументHTML, ТекстHTML, КомментарийHTML.
Новый дочерний узел.
<СтарыйУзел> (обязательный)
Тип: АтрибутHTML, ЭлементHTML, ЭлементКнопкаHTML, ЭлементВводаHTML, ЭлементЗаголовокHTML, ЭлементРазметкаHTML, ЭлементПлавающийФреймHTML, ЭлементВставкаHTML, ЭлементФреймHTML, ЭлементНаборФреймовHTML, ЭлементМетаHTML, ЭлементОбъектHTML, ЭлементСкриптHTML, ЭлементТаблицаHTML, ЭлементСтрокаТаблицыHTML, ЭлементЯчейкаТаблицыHTML, ЭлементКолонкаТаблицыHTML, ЭлементЗаголовокТаблицыHTML, ЭлементБлокHTML, ЭлементЛинияHTML, ЭлементФорматированногоТекстаHTML, ЭлементКартинкаHTML, ЭлементСвязьHTML, ЭлементЯкорьHTML, ЭлементАплетHTML, ЭлементФормаHTML, ДокументHTML, ТекстHTML, КомментарийHTML.
Существующий дочерний узел.
Возвращаемое значение:
Значение прежнего узла.
Описание:
Заменяет дочерний узел, указанный параметром <СтарыйУзел>, на узел, указанный параметром <НовыйУзел>.
Если новый узел - это ФрагментДокумента, то заменяемый узел будет заменен всеми дочерними узлами фрагмента документа.
Если новый узел уже содержится в дереве документа, то он сначала удаляется из дочерних узлов старого родителя и вставляется в список дочерних узлов нового родителя.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Исключение вызывается в случаях:
если данный узел не допускает в качестве дочерних добавляемый узел или добавляемый узел является одним из предков данного;
если узел добавляется сам в себя;
если данный узел - Документ и добавляется второй узел ОпределениеТипаДокумента или Элемент;
если добавляемый узел был создан документом отличным от создавшего данный узел;
если данный узел в режиме только для чтения или если предыдущий родитель добавляемого узла в режиме Только для чтения;
если заменяемый узел не найден;
если добавляемый узел является дочерним узлом узла Документ и реализация не поддерживает удаления узлов ОпределениеТипаДокумента и Элемент у узла Документ.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
col: текст ячейки не принадлежит колонке
Диагностика листового узла: попытки дочернего редактирования показаны как ожидаемые отказы, а не как полезное успешное добавление.
Где и как запускать
Синтаксический пример в серверном обработчике или толстом клиенте. Дерево создаётся из собственной строки либо собственным конструктором в памяти. Здесь 1С, браузер, файлы и сеть не запускались.
Подготовка
Все узлы берутся из собственного разобранного HTML. В картинках, колонках и ссылках нет внешних адресов.
Каждый вызов получает именно лист этого типа; пример не прикрепляет его target к методу другого родителя.
Чтение = Новый ЧтениеHTML;
Чтение.УстановитьСтроку("<html><body><table><colgroup><col id=""leaf""></colgroup><tbody><tr><td>Книга</td></tr></tbody></table><span id=""other"">Тетрадь</span></body></html>");
Построитель = Новый ПостроительDOM;
Документ = Построитель.Прочитать(Чтение);
Чтение.Закрыть();
Лист = Документ.ПолучитьЭлементПоИдентификатору("leaf");
Посторонний = Документ.ПолучитьЭлементПоИдентификатору("other").ПервыйДочерний;
НовыйУзел = Посторонний.КлонироватьУзел(Истина);
Попытка
Лист.ВставитьПеред(НовыйУзел);
Исключение
Сообщить("ВставитьПеред: получен отказ");
КонецПопытки;
Попытка
Лист.ДобавитьДочерний(НовыйУзел);
Исключение
Сообщить("ДобавитьДочерний: получен отказ");
КонецПопытки;
Попытка
Лист.ЗаменитьДочерний(НовыйУзел, Посторонний);
Исключение
Сообщить("ЗаменитьДочерний: получен отказ");
КонецПопытки;
Попытка
Лист.УдалитьДочерний(Посторонний);
Исключение
Сообщить("УдалитьДочерний: получен отказ");
КонецПопытки;
Лист.СравнитьПозициюВДокументе(Посторонний);
Сообщить("Дочерних узлов: " + Строка(Лист.ДочерниеУзлы.Количество()));Разбор по шагам
Разберите строку и получите свой лист и отдельный посторонний узел.
Проверьте четыре вызова на листе, отделяя фактический отказ от успеха.
Вызовите синтаксис сравнения и покажите число дочерних узлов после диагностики.
Как проверить результат
Недопустимые дочерние вставки должны отказать; неожиданный успех нельзя считать подтверждением ожидаемого поведения.
Посторонний не является ребёнком листа, поэтому замена и удаление также должны отказать; у листа по-прежнему нет дочерних узлов.
Ожидаемый результат
Приведён короткий пример синтаксиса с указанными ограничениями. Он не выполнялся здесь в 1С; проверьте реальные результаты в своём учебном контексте.
На что обратить внимание
У СравнитьПозициюВДокументе для этих HTML-узлов в установленной справке не указан тип результата. Вызов показан без присваивания и без выдуманных числовых масок.
Перехват исключений здесь нужен только для отдельного учебного опыта. Он не делает отказ успешным редактированием.
Чтобы поменять комментарий, используют его символьные данные; чтобы поменять картинку или линию — свойства и атрибуты, а не дочерний текст.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.