Как очистить текст от HTML-тегов в 1С:Предприятии?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с внешними данными, выгрузками с сайтов или письмами часто возникает задача очистки полученного текста от HTML-разметки. Обычное удаление подстрок бывает крайне неэффективным, поэтому давайте разберем наиболее надежные и современные способы решения этой задачи в 1С.

Способ 1: Использование регулярных выражений (для современных версий платформы)

Начиная с 23-й версии платформы, разработчики 1С наконец-то внедрили нативный механизм работы с регулярными выражениями. Это лучший способ для кроссплатформенной разработки (работает как на Windows, так и на Linux), так как он не требует использования внешних объектов.

Для удаления тегов нам понадобится функция СтрЗаменитьПоРегулярномуВыражению. Рассмотрим, как это применить на практике:


// Очистка текста от любых HTML-тегов
ТекстСТегами = "<div>Пример текста</div><br>";
Шаблон = "<[^>]*>"; // Регулярное выражение для поиска тегов
ТекстБезТегов = СтрЗаменитьПоРегулярномуВыражению(ТекстСТегами, Шаблон, "");

Преимущество этого метода заключается в скорости и отсутствии привязки к COM-объектам операционной системы.

Способ 2: Использование VBScript (для серверов на Windows)

Если ваша инфраструктура работает исключительно на ОС Windows, вы можете воспользоваться классическим способом через VBScript. Этот метод долгое время был стандартом для 1С, пока не появились нативные функции платформы.

Разберем реализацию по шагам:

  1. Создаем объект VBScript.RegExp.
  2. Настраиваем параметры поиска: IgnoreCase (игнорирование регистра), Global (поиск всех вхождений), MultiLine (многострочный режим).
  3. Применяем метод Replace для удаления найденных шаблонов.

RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.IgnoreCase = Ложь;
RegExp.Global = Истина;
RegExp.MultiLine = Ложь;
RegExp.Pattern = "<[^>]*>"; 
ОчищенныйТекст = RegExp.Replace(ИсходныйТекст, "");

Важно помнить: этот способ вызовет ошибку, если код будет исполняться на сервере под управлением Linux, так как COM-объекты являются частью архитектуры Windows.

Способ 3: Использование HTML-документа

Если вам нужно не просто удалить теги, а корректно обработать HTML-сущности (например, заменить   на пробел или & на амперсанд), лучше всего использовать встроенный парсер HTML.

Для этого можно создать объект HTMLDocument. Метод GetText (или обращение к свойству innerText) автоматически преобразует спецсимволы в читаемый текст и удалит лишнюю разметку.


// Создание объекта оболочки документа
HTML = Новый COMОбъект("htmlfile");
HTML.open();
HTML.write(ИсходныйТекст);
HTML.close();
// Получение чистого текста
ЧистыйТекст = HTML.body.innerText;

Рекомендации и важные нюансы

При выборе метода учитывайте следующие советы:

Использование современных методов платформы 1С — это залог того, что ваш код будет работать стабильно, быстро и независимо от операционной системы сервера.

← На главную