ПолеHTMLДокумента.ПолучитьТекст

Методы · GetText

Получает текст HTML-документа.

Синтаксис

ПолучитьТекст()
Полное описание, параметры и ограничения

ПолеHTMLДокумента.ПолучитьТекст (HTMLDocumentField.GetText)

ПолеHTMLДокумента (HTMLDocumentField)

ПолучитьТекст (GetText)

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

Синтаксис:
ПолучитьТекст()
Возвращаемое значение:
Тип: Строка.

Описание:

Получает текст HTML-документа.

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

Толстый клиент.

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

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

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

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

Проверить собственный HTML как строку и как DOM-документ

Сначала читаем значимый фрагмент HTML, затем проверяем корневой узел html. Документ — внешний объект реализации, не ДокументDOM из XML API.

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

Полный модуль собственной обычной формы; толстый клиент. Не HTML браузера руководства и не управляемая форма.

Подготовка

  1. Создайте внешнюю обработку с отдельной обычной формой в учебной базе. Добавьте ПолеHTMLДокумента с именем УчебныйHTML и кнопку УчебнаяКоманда вне него.

  2. Добавьте реквизиты УчебноеНазвание (Строка 100), УчебноеКоличество (Число 9.0), УчебноеРедактирование (Булево). Поле ввода УчебноеНазвание свяжите с реквизитом названия.

  3. ПриОткрытии назначьте одноимённой процедуре. Действие внешней кнопки вручную не назначайте: код связывает Нажатие с экспортной процедурой ВыполнитьУчебноеДействие(Элемент). ПриОткрытии самой формы остаётся без параметров.

  4. Толстый клиент с обычными формами. Каждый урок — полный модуль своей копии формы. Собственный HTML не содержит сценариев, внешних картинок, URL или сетевых запросов.

Процедура ПриОткрытии()
    УчебноеНазвание = "Книга";
    УчебноеКоличество = 3;
    УчебноеРедактирование = Ложь;
    Поле = ЭтаФорма.ЭлементыФормы.УчебныйHTML;
    Поле.УстановитьРежим(РежимПоляHTMLДокумента.Просмотр);
    Поле.УстановитьТекст(СформироватьУчебныйHTML());
    Кнопка = ЭтаФорма.ЭлементыФормы.УчебнаяКоманда;
    Кнопка.УстановитьДействие("Нажатие", Новый Действие("ВыполнитьУчебноеДействие"));

КонецПроцедуры

Процедура ВыполнитьУчебноеДействие(Элемент) Экспорт
    Поле = ЭтаФорма.ЭлементыФормы.УчебныйHTML;
    ТекстHTML = Поле.ПолучитьТекст();
    Сообщить(СтрНайти(ТекстHTML, "Количество: 3") > 0);
    ДокументHTML = Поле.Документ;
    Если ДокументHTML = Неопределено Тогда
        Сообщить("HTML-документ пока недоступен; дождитесь загрузки собственного текста и повторите");
        Возврат;
    КонецЕсли;
    Корень = ДокументHTML.documentElement;
    Если Корень = Неопределено ИЛИ Корень = Null Тогда
        Сообщить("Корневой узел ещё не готов; повторите после загрузки");
        Возврат;
    КонецЕсли;
    Сообщить(НРег(Строка(Корень.nodeName)) = "html");
    Сообщить(УчебноеКоличество = 3);
КонецПроцедуры

Функция СформироватьУчебныйHTML()
    БезопасноеНазвание = СтрЗаменить(УчебноеНазвание, "&", "&");
    БезопасноеНазвание = СтрЗаменить(БезопасноеНазвание, "<", "&lt;");
    БезопасноеНазвание = СтрЗаменить(БезопасноеНазвание, ">", "&gt;");
    Возврат "<!doctype html><html><head><meta charset='utf-8'><title>Свой учебный HTML</title></head><body><h1>"
        + БезопасноеНазвание + "</h1><p>Количество: " + Строка(УчебноеКоличество) + "</p></body></html>";
КонецФункции

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

  1. Свойство Документ только для чтения. Оно даёт внешний HTML DOM по реализации WebKit, не созданный Новый ДокументDOM.

  2. До обращения к documentElement проверено отсутствие документа; до nodeName проверено отсутствие корня.

  3. documentElement и nodeName — члены внешнего DOM, их регистр написания важен. Имя узла сравнивается без предположения HTML/html.

  4. Читается только собственный документ из УстановитьТекст. Повторная кнопка после загрузки предусмотрена, синхронная готовность не обещается.

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

  1. После загрузки собственного текста: три Истина.

  2. Никакие атрибуты, дочерние узлы или данные формы не изменяются.

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

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

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

  1. Для страницы другого происхождения документ может быть недоступен: ограничения безопасности не обходятся.

  2. Не переносите сюда русские методы ЧтениеDOM, предназначенные для другого типа объекта.

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

Включить редактирование своего HTML без перезаписи при выходе

Кнопка переключает режим, но не вызывает УстановитьТекст повторно. Ручная правка заголовка остаётся в HTML поля, а реквизит Книга сам не обновляется.

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

Полный модуль собственной обычной формы; толстый клиент. Не HTML браузера руководства и не управляемая форма.

Подготовка

  1. Создайте внешнюю обработку с отдельной обычной формой в учебной базе. Добавьте ПолеHTMLДокумента с именем УчебныйHTML и кнопку УчебнаяКоманда вне него.

  2. Добавьте реквизиты УчебноеНазвание (Строка 100), УчебноеКоличество (Число 9.0), УчебноеРедактирование (Булево). Поле ввода УчебноеНазвание свяжите с реквизитом названия.

  3. ПриОткрытии назначьте одноимённой процедуре. Действие внешней кнопки вручную не назначайте: код связывает Нажатие с экспортной процедурой ВыполнитьУчебноеДействие(Элемент). ПриОткрытии самой формы остаётся без параметров.

  4. Толстый клиент с обычными формами. Каждый урок — полный модуль своей копии формы. Собственный HTML не содержит сценариев, внешних картинок, URL или сетевых запросов.

Процедура ПриОткрытии()
    УчебноеНазвание = "Книга";
    УчебноеКоличество = 3;
    УчебноеРедактирование = Ложь;
    Поле = ЭтаФорма.ЭлементыФормы.УчебныйHTML;
    Поле.УстановитьРежим(РежимПоляHTMLДокумента.Просмотр);
    Поле.УстановитьТекст(СформироватьУчебныйHTML());
    Кнопка = ЭтаФорма.ЭлементыФормы.УчебнаяКоманда;
    Кнопка.УстановитьДействие("Нажатие", Новый Действие("ВыполнитьУчебноеДействие"));

КонецПроцедуры

Процедура ВыполнитьУчебноеДействие(Элемент) Экспорт
    Поле = ЭтаФорма.ЭлементыФормы.УчебныйHTML;
    УчебноеРедактирование = НЕ УчебноеРедактирование;
    Если УчебноеРедактирование Тогда
        Поле.УстановитьРежим(РежимПоляHTMLДокумента.Редактирование);
        Сообщить("Измените заголовок Книга на Учебная книга в самом HTML-поле");
    Иначе
        Поле.УстановитьРежим(РежимПоляHTMLДокумента.Просмотр);
        ТекстПослеПравки = Поле.ПолучитьТекст();
        Сообщить(СтрНайти(ТекстПослеПравки, "Учебная книга") > 0);
        Сообщить(УчебноеНазвание = "Книга");
        Сообщить(УчебноеКоличество = 3);
    КонецЕсли;
КонецПроцедуры

Функция СформироватьУчебныйHTML()
    БезопасноеНазвание = СтрЗаменить(УчебноеНазвание, "&", "&amp;");
    БезопасноеНазвание = СтрЗаменить(БезопасноеНазвание, "<", "&lt;");
    БезопасноеНазвание = СтрЗаменить(БезопасноеНазвание, ">", "&gt;");
    Возврат "<!doctype html><html><head><meta charset='utf-8'><title>Свой учебный HTML</title></head><body><h1>"
        + БезопасноеНазвание + "</h1><p>Количество: " + Строка(УчебноеКоличество) + "</p></body></html>";
КонецФункции

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

  1. Первое нажатие включает Редактирование. Пользователь сам изменяет заголовок внутри HTML-поля.

  2. Второе нажатие возвращает Просмотр и читает текущий текст, не строя документ заново.

  3. Изменения HTML не привязаны автоматически к УчебноеНазвание. Показано различие визуального документа и реквизита формы.

  4. Перейти, Назад и Вперед в режиме Редактирование недоступны по справке; этот урок их не вызывает.

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

  1. После ручной замены и второго нажатия: три Истина.

  2. Если заголовок не меняли, первое сравнение Ложь — это отсутствие правки, не успешное редактирование.

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

Ручная правка HTML сохраняется в поле, но не выдаётся за запись реквизита.

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

  1. Не вставляйте УстановитьТекст в ветку выхода: это затёрло бы введённое пользователем.

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

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

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

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

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

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