helpf.pro
Регистрация
 0 
Распечатать

Как получить текст из 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.Видимость = Истина;
        ЭУТекст.Видимость = Ложь;
    КонецЕсли; 
    
    Если ЕстьКнопка Тогда
        Кнопка.Пометка = Истина;         
    КонецЕсли;   
    Возврат Истина;                     


КонецФункции // обИзменитьФорматТекста()
Разместил:   Версии: | 8.x | 8.2 УП | 8.3 |  Дата:   Прочитано: 37642
 0 
Распечатать
Возможно, вас также заинтересует
10060 (0x0000274C): Попытка установить соединение была безуспешной 24
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 52
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = " Иванов Иван Иванович" ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = " " ;
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.