ЭлементТаблицаHTML.УдалитьСтроку

Методы · DeleteRow

Предназначен для удаления строки из таблицы HTML-документа.

Синтаксис

УдалитьСтроку(<Индекс>)
Полное описание, параметры и ограничения

ЭлементТаблицаHTML.УдалитьСтроку (HTMLTableElement.DeleteRow)

ЭлементТаблицаHTML (HTMLTableElement)

УдалитьСтроку (DeleteRow)

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

Синтаксис:
УдалитьСтроку(<Индекс>)
Параметры:

<Индекс> (необязательный)
Тип: Число.
Индекс удаляемой строки.
Описание:

Предназначен для удаления строки из таблицы HTML-документа.

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

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

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

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

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

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

Добавить учебную строку таблицы и удалить её по фактическому индексу

Копия HTML-таблицы получает строку с данными Блокнот и 2. Индекс результата узнаём после вставки, не переносим правила JavaScript на API 1С.

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

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

Подготовка

  1. Используйте учебную базу платформы 8.5.1.1343 и серверную процедуру учебного общего модуля. Каждый пример выполняйте отдельно.

  2. Все данные заказа вымышлены и находятся в строке. ЧтениеHTML разбирает данные, но не является браузером: форма не отправляется, ссылки не открываются, картинки не скачиваются.

  3. Никакие файлы, адреса сайтов, токены и документы информационной базы не нужны. Не заменяйте учебную строку произвольным внешним HTML без отдельной проверки безопасности.

  4. Индексы коллекций начинаются с нуля. Перед обращением к найденному узлу проверяйте Неопределено; перед специальными свойствами элемента проверяйте его тип.

HTML = "<html><head><title>Учебный заказ</title><meta id='meta' name='description' content='Вымышленный заказ'></head>
|<body id='body'><p id='note'>Заказ существует только в памяти</p><pre id='code'>A-01: 3
|B-02: 1</pre>
|<form id='order' name='order' action='' method='get'>
|<input id='customer' name='customer' type='text' value='Учебный покупатель'>
|<input id='accepted' name='accepted' type='checkbox' value='yes'>
|<button id='preview' name='preview' type='button' value='preview'>Предпросмотр</button></form>
|<table id='items' summary='Книга и ручка'><caption id='caption'>Товары</caption><colgroup><col id='column'></colgroup><tbody>
|<tr id='book'><td id='book-name'>Книга</td><td>3</td></tr><tr id='pen'><td>Ручка</td><td>1</td></tr>
|</tbody></table><a id='help' name='help' href='#note'>Пояснение</a><img id='logo' alt='Учебная картинка без источника'>
|</body></html>";
Чтение = Новый ЧтениеHTML;
Чтение.УстановитьСтроку(HTML);
Попытка
    Построитель = Новый ПостроительDOM;
    Документ = Построитель.Прочитать(Чтение);
Исключение
    Чтение.Закрыть();
    ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Если ТипЗнч(Документ) <> Тип("ДокументHTML") Тогда
    ВызватьИсключение "Ожидался ДокументHTML, а не XML-документ";
КонецЕсли;
Таблица = Документ.ПолучитьЭлементПоИдентификатору("items");
Если Таблица = Неопределено Тогда
    ВызватьИсключение "Не найден учебный элемент items";
КонецЕсли;
Если ТипЗнч(Таблица) <> Тип("ЭлементТаблицаHTML") Тогда
    ВызватьИсключение "Неожиданный тип учебного элемента items";
КонецЕсли;
Копия = Таблица.КлонироватьУзел(Истина);
НоваяСтрока = Копия.ВставитьСтроку(0);
Если ТипЗнч(НоваяСтрока) <> Тип("ЭлементСтрокаТаблицыHTML") Тогда
    ВызватьИсключение "Для специальных методов нужна строка HTML-таблицы";
КонецЕсли;
Первая = НоваяСтрока.ВставитьЯчейку();
Первая.ДобавитьДочерний(Документ.СоздатьТекстовыйУзел("Блокнот"));
Вторая = НоваяСтрока.ВставитьЯчейку();
Вторая.ДобавитьДочерний(Документ.СоздатьТекстовыйУзел("2"));
Сообщить(НоваяСтрока.Ячейки.Количество() = 2);
Сообщить(Копия.ПолучитьСтроки().Количество() = 3);
Индекс = НоваяСтрока.ИндексСтроки;
Если Индекс < 0 Или Индекс >= Копия.ПолучитьСтроки().Количество() Тогда
    ВызватьИсключение "Не получен допустимый индекс вставленной строки";
КонецЕсли;
Сообщить(Копия.ПолучитьСтроки().Элемент(Индекс).УзелИдентичен(НоваяСтрока));
Копия.УдалитьСтроку(Индекс);
Сообщить(Копия.ПолучитьСтроки().Количество() = 2);
Сообщить(Таблица.ПолучитьСтроки().Количество() = 2);

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

  1. В справке 1С индекс вставки описан как индекс строки, после которой добавляется новая; пример не полагается на её точную позицию.

  2. Специальный тип результата проверяем перед ВставитьЯчейку.

  3. Заполняем созданные ячейки текстом, после чего используем фактический ИндексСтроки для точного удаления.

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

  1. Пять сравнений Истина: две новые ячейки, три строки копии, идентичность строки по индексу, возврат к двум строкам и две строки оригинала.

  2. Вставка без индекса у ячейки не обещает определённого порядка; смотрите фактические ИндексЯчейки при следующем упражнении.

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

Вставленный элемент удалён безопасно, исходная таблица не изменена.

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

  1. Не передавайте -1 только потому, что так принято у DOM браузера.

  2. Это не Добавить/Удалить строки ТаблицыЗначений или табличной части документа базы.

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

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

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

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

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