HelpF.pro

Как получить текст из html?

Один мой хороший клиент использует встроенный в 1С почтовый клиент.

До этого все работало хорошо, но недавно из-за установки нового банк-клиента на компьютере обновили Internet Explorer до 11 версии - стала появляться ошибка:

Поле объекта не обнаружено innerText

Пришлось немного доработать типовую функцию получения текста из html:

Код 1C v 8.х
 Функция ПреобразоватьТекстИзХТМЛФорматаВПростой(ТекстВФорматеХТМЛ) Экспорт
Попытка
НовыйHTMLДокумент = Новый COMОбъект("HtmlFile");
НовыйHTMLДокумент.open("text/html");
НовыйHTMLДокумент.write(ТекстВФорматеХТМЛ);
НовыйHTMLДокумент.close();

Возврат СтрЗаменить(НовыйHTMLДокумент.all.item(0).innerText, Символ(13), "");
Исключение
Построитель = Новый ПостроительDOM;
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.УстановитьСтроку(ТекстВФорматеХТМЛ);
ДокументHTML = Построитель.Прочитать(ЧтениеHTML);

Возврат СокрЛП(ДокументHTML.Тело.ТекстовоеСодержимое);
КонецПопытки;
КонецФункции

еще функции пример получения:

Код 1C v 8.х
 // Процедура изменяет признак формат текста письма (Текст, HТМЛ),
// и при этом конвертирует сам текст.
//
// Параметры:
//  ЭУHTML,ЭУТекст - Элементы управления формы, соответственно поле HTML и поле Текст
//  Кнопка - выбранная кнопка ее текст "Простой текст" или "HTML" новый вид текста письма
//  либо текст кнопки если пометку кнопки менять не требуется, соответственно 
//  вопрос о потере форматирования задаваться не будет
// Возвращаемое значение:
//  Булево, признак выполнения изменения формата
//
Функция удИзменитьФорматТекста(ЭУHTML,ЭУТекст, Кнопка) Экспорт
    Если ТипЗнч(Кнопка) = Тип("Строка") Тогда
        НовыйВидТекстаПисьма = Кнопка;
        ЕстьКнопка = Ложь;
    Иначе
        Если Кнопка.Пометка Тогда 
            Возврат Ложь; 
        КонецЕсли;
        НовыйВидТекстаПисьма = Кнопка.Текст;        
        ЕстьКнопка = Истина;
    КонецЕсли;     
        
    Если Найти(НовыйВидТекстаПисьма,"Простой текст") > 0 Тогда          
        ИсходныйТекст = ЭУHTML.ПолучитьТекст();
        НачалоBODY = Найти(ИсходныйТекст, "<BODY>");
        КонецBODY  = Найти(ИсходныйТекст, "</BODY>");
        Если ЕстьКнопка и (НачалоBODY > 0 И КонецBODY > 0 И (НачалоBODY + 6) < КонецBODY) Тогда
            СтрокаВопроса = "Будет потеряно форматирование текста. Продолжить?";
            ОтветНаВопрос = Вопрос(СтрокаВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет);
            Если ОтветНаВопрос <> КодВозвратаДиалога.Да Тогда                
                Возврат Ложь;
            КонецЕсли;
        КонецЕсли;
        ФорматТекста = ЭУHTML.Документ.all.item(0).innerText;             
        ЭУТекст.Значение =  СтрЗаменить(ФорматТекста, Символ(13), "");
        ЭУТекст.Видимость = Истина;
        ЭУHTML.Видимость = Ложь;
        ЭУHTML.УстановитьТекст("");                        
    Иначе
        ФорматХТМЛ = СтрЗаменить(ЭУТекст.Значение, Символы.ПС, "<BR>");
    
        ЭУHTML.УстановитьТекст(ФорматХТМЛ);
        ЭУHTML.Видимость = Истина;
        ЭУТекст.Видимость = Ложь;
    КонецЕсли; 
    
    Если ЕстьКнопка Тогда
        Кнопка.Пометка = Истина;         
    КонецЕсли;   
    Возврат Истина;                     


КонецФункции // обИзменитьФорматТекста()

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq82/view/1723.html