ЭлементЛинияHTML.ВставитьПеред

Методы · InsertBefore

Вставляет узел в список дочерних перед существующим дочерним узлом, заданным параметром <Узел>. Если вставляемый узел является узлом ФрагментДокумента, то все его дочерние узлы будут вставлены перед узлом, заданным параметром <Узел>, в том же порядке. Если узел, заданный параметром <НовыйУзел>, уже содержится в дереве документа, то он сначала удаляется из дочерних узлов прежнего родителя и вставляется в список дочерних узлов нового родителя.

Синтаксис

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

ЭлементЛинияHTML.ВставитьПеред (HTMLHRElement.InsertBefore)

ЭлементЛинияHTML (HTMLHRElement)

ВставитьПеред (InsertBefore)

Доступен, начиная с версии 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, Комментарий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.

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

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

hr: дочерняя вставка не создаёт подпись линии

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

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

Синтаксический пример в серверном обработчике или толстом клиенте. Дерево создаётся из собственной строки либо собственным конструктором в памяти. Здесь 1С, браузер, файлы и сеть не запускались.

Подготовка

  1. Все узлы берутся из собственного разобранного HTML. В картинках, колонках и ссылках нет внешних адресов.

  2. Каждый вызов получает именно лист этого типа; пример не прикрепляет его target к методу другого родителя.

Чтение = Новый ЧтениеHTML;
Чтение.УстановитьСтроку("<html><body><hr id=""leaf""><span id=""other"">Тетрадь</span></body></html>");
Построитель = Новый ПостроительDOM;
Документ = Построитель.Прочитать(Чтение);
Чтение.Закрыть();
Лист = Документ.ПолучитьЭлементПоИдентификатору("leaf");
Посторонний = Документ.ПолучитьЭлементПоИдентификатору("other").ПервыйДочерний;
НовыйУзел = Посторонний.КлонироватьУзел(Истина);
Попытка
    Лист.ВставитьПеред(НовыйУзел);
Исключение
    Сообщить("ВставитьПеред: получен отказ");
КонецПопытки;
Попытка
    Лист.ДобавитьДочерний(НовыйУзел);
Исключение
    Сообщить("ДобавитьДочерний: получен отказ");
КонецПопытки;
Попытка
    Лист.ЗаменитьДочерний(НовыйУзел, Посторонний);
Исключение
    Сообщить("ЗаменитьДочерний: получен отказ");
КонецПопытки;
Попытка
    Лист.УдалитьДочерний(Посторонний);
Исключение
    Сообщить("УдалитьДочерний: получен отказ");
КонецПопытки;
Лист.СравнитьПозициюВДокументе(Посторонний);
Сообщить("Дочерних узлов: " + Строка(Лист.ДочерниеУзлы.Количество()));

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

  1. Разберите строку и получите свой лист и отдельный посторонний узел.

  2. Проверьте четыре вызова на листе, отделяя фактический отказ от успеха.

  3. Вызовите синтаксис сравнения и покажите число дочерних узлов после диагностики.

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

  1. Недопустимые дочерние вставки должны отказать; неожиданный успех нельзя считать подтверждением ожидаемого поведения.

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

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

Приведён короткий пример синтаксиса с указанными ограничениями. Он не выполнялся здесь в 1С; проверьте реальные результаты в своём учебном контексте.

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

  1. У СравнитьПозициюВДокументе для этих HTML-узлов в установленной справке не указан тип результата. Вызов показан без присваивания и без выдуманных числовых масок.

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

  3. Чтобы поменять комментарий, используют его символьные данные; чтобы поменять картинку или линию — свойства и атрибуты, а не дочерний текст.

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

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

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

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

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