| 
    
            
         
         | 
    
    
  | 
Текст с форматированием (разметка, теги) - как работать? | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Dmitriy_
 Kolesnikov 25.10.17 
            ✎
    17:17 
 | 
         
        У меня в текстовом реквизите есть вот такой текст, например:
 
        <p class="MsoListParagraph" style="text-align:justify"><span style="font-size: 12.0pt;line-height:107%;font-family:"Segoe UI",sans-serif;background:honeydew">В РФ аналогов планируемого центра нет. Лидером в мире является Центр персонализированной медицины клиники Мэйо   (http://mayoresearch.mayo.edu/mayo/research/center-for-individualized-medicine/individualized-medicine-clinic.asp).</span></p><p class="MsoListParagraph" style="text-align:justify"><span style="font-size: 12.0pt;line-height:107%;font-family:"Segoe UI",sans-serif;background:honeydew"></span></p><p class="MsoNormal" style="text-align:justify"><span style="font-size:12.0pt; line-height:107%">Планируемый центр генетического прогнозирования, профилактики и персонализированной медицины уникальный для РФ и будет соответствовать мировым лидерам в этой области.</span><span style="font-size:12.0pt;line-height: 107%;font-family:"Times New Roman",serif;color:red"><o:p></o:p></span></p><p class="MsoNormal" style="text-align:justify"><span style="font-size:12.0pt; line-height:107%"></span></p><p class="MsoNormal"><br></p> Вопрос: 1. Как мне ЭТО вывести на управляемую форму? 2. Как мне это редактировать на управляемой форме? 3. Как мне это вывести в табличный документ? 4. Как мне это преобразовать в простой текст? Хотя бы намек дайте, дальше я сам разберусь.  | 
|||
| 
    1
    
        dezss    
     25.10.17 
            ✎
    17:19 
 | 
         
        Вид реквизита Поле html документа.
 
        А вот что с этим делать дальше, надо копать)))  | 
|||
| 
    2
    
        Ц_У    
     25.10.17 
            ✎
    17:20 
 | 
         
        что то там было body innertext если мне не изменяет память     
         | 
|||
| 
    3
    
        mehfk    
     25.10.17 
            ✎
    17:21 
 | 
         
        Поле HTML документа     
         | 
|||
| 
    4
    
        Dmitriy_
 Kolesnikov 25.10.17 
            ✎
    17:46 
 | 
         
        Благодарю.
 
        А по вопросам 3 и 4: вывод в табличный документ и преобразование в plain text?  | 
|||
| 
    5
    
        mistеr    
     25.10.17 
            ✎
    17:46 
 | 
         
        (0) Встречный вопрос: а зачем вам ЭТО в реквизите в таком виде? 1С вроде научилась очищать текст от форматирования. ДО по крайней мере, умеет.     
         | 
|||
| 
    6
    
        Dmitriy_
 Kolesnikov 25.10.17 
            ✎
    18:37 
 | 
         
        Потому что там в текстовых полях используются, в частности, подстрочные и надстрочные символы. Специфический медицинский текст. Поэтому надо не только сохранять форматирование, но и редактировать rich text в форме документа.     
         | 
|||
| 
    7
    
        Dmitriy_
 Kolesnikov 25.10.17 
            ✎
    23:02 
 | 
         
        Короче, для хранения удобно использовать объект ФорматированныйДокумент. Засовывать его в ХранилищеЗначения. Поле HTML документа не подходит, т. к. его невозможно редактировать.
 
        Я уперся в вывод в табличный документ. У меня есть макет таблицы. Как мне в какую-то ячейку таблицы вставить текст с форматированием (он у меня будет в объекте ФорматированныйДокумент)? То есть несколько абзацев форматированного текста из ФорматированныйДокумент вставить в ячейку табличного документа?  | 
|||
| 
    8
    
        Dmitriy_
 Kolesnikov 26.10.17 
            ✎
    13:49 
 | 
         
        Господа, неужели никто не знает, как вставить форматированный текст в ячейку табличного документа?     
         | 
|||
| 
    9
    
        DrShad    
     26.10.17 
            ✎
    13:57 
 | 
         
        Поле HTML документа не подходит, т. к. его невозможно редактировать.
 
        это еще почему невозможно?  | 
|||
| 
    10
    
        Tatitutu    
     26.10.17 
            ✎
    14:13 
 | 
         
        В РФ аналогов планируемого центра нет. Лидером в мире является Центр персонализированной медицины клиники Мэйо   (http://mayoresearch.mayo.edu/mayo/research/center-for-individualized-medicine/individualized-medicine-clinic.asp).
 
        Планируемый центр генетического прогнозирования, профилактики и персонализированной медицины уникальный для РФ и будет соответствовать мировым лидерам в этой области.  | 
|||
| 
    11
    
        Tatitutu    
     26.10.17 
            ✎
    14:16 
 | 
         
        (0)
 
        если просто НА ПОСМОТРЕТЬ у любого объекта (Обработка, Отчет) действия - справочная информация - три вкладки Редактирование Текст Просмотр в Текст - копируешь из (0) и смотришь в Просмотр как в (10) Можешь не благодарить!  | 
|||
| 
    12
    
        Dmitriy_
 Kolesnikov 26.10.17 
            ✎
    14:19 
 | 
         
        (9) Поле ввода формы с видом "Поле HTML документа" - это фрейм интернет эксплорера, встроенный в форму, в котором отображается форматированный текст. Никакой возможности редактирования у веб-страницы разумеется нет.
 
        Зато у объекта типа "ФорматированныйДокумент" нет таких ограничений, более того, можно прицепить панель форматирования.  | 
|||
| 
    13
    
        Dmitriy_
 Kolesnikov 26.10.17 
            ✎
    14:40 
 | 
         
        (10)
 
        Вы меня не поняли. В случае с простым текстом вывод в табличный документ делается так: ТабДок = новый ТабличныйДокумент; ОбластьШапка = Макет.ПолучитьОбласть("ОбластьШапка"); ОбластьШапка.Параметры.ДатаВыдачиПлан = ЭтотОбъект.ДатаИсполнения; ТабДок.Вывести(ОбластьШапка); Теперь представим, что в этом примере ДатаИсполнения - это не просто строка или число или что-то ещё примитивное, а, например, ФорматированныйДокумент. Или просто строка, но в которой содержится HTML-разметка. Задача - вывести этот отформатированный документ в параметр области табличного документа.  | 
|||
| 
    14
    
        lodger    
     26.10.17 
            ✎
    15:19 
 | 
         
        (13) Максим Радченко говорит можно так:
 
        ФД = Ссылка[0].Текст.Получить(); ТекстФД = ФД.ПолучитьТекст();  | 
|||
| 
    15
    
        lodger    
     26.10.17 
            ✎
    15:21 
 | 
         
        (14) извращенцы придумали такой вариант
 
        &НаКлиенте Процедура ВыгрузитьHTML(Команда) Перем html_string; // переменная для помещения в неё HTML-составляющих форматированного документа attach = Новый Структура; // сюда попадут вложенные рисунки, если они есть в документе ФорматДокумент.ПолучитьHTML(html_string,attach); ТекстДок = Новый ТекстовыйДокумент; // с его помощью запишем строку в файл на диске ТекстДок.ДобавитьСтроку(html_string); ТекстДок.Записать("e:\temp\test.html"); КонецПроцедуры http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=598510&print=1  | 
|||
| 
    16
    
        Dmitriy_
 Kolesnikov 26.10.17 
            ✎
    15:36 
 | 
         
        (14) так мы получим текст с потерей всего форматирования!
 
        А задача в том, чтобы форматирование в ячейке сохранить... (15) Там документ на 33 страницы, в котором много обычных параметров, включая таблицы, а куски форматированного текста составляют лишь небольшую часть. Плюс колонтитулы, разделители страниц, картинки. Если я буду сам руками формировать этот документ в HTML, то, как минимум, не смогу контролировать колонтитулы и разделители страниц. Поэтому идеальным вариантом будет использование ТабличныйДокумент.  | 
|||
| 
    17
    
        MrStomak    
     26.10.17 
            ✎
    15:41 
 | 
         
        (12)
 
        "Никакой возможности редактирования у веб-страницы разумеется нет." И как же ты, позволь поинтересоваться, разместил это сообщение, если ты не можешь редактировать формы браузера?  | 
|||
| 
    18
    
        lodger    
     26.10.17 
            ✎
    15:45 
 | 
         
        (16) на мисте была такая же тема. там все заглохло без решения. последний вариант на-пофиг был: создать хтмл документ. распечатать его в картинку. вставить картинку в табдок.     
         | 
|||
| 
    19
    
        Лодырь    
     26.10.17 
            ✎
    15:45 
 | 
         
        (7) TinyMCE нио чем не говорит?
 
        Форматированный документ забудь как страшный сон. Настойчиво не рекомендую его использовать.  | 
|||
| 
    20
    
        lodger    
     26.10.17 
            ✎
    15:46 
 | 
         
        (19) а вот и герой той темы.     
         | 
|||
| 
    21
    
        Сти    
     26.10.17 
            ✎
    15:51 
 | 
         
        (17) Редактируются поля ввода на странице, а не сама страница. Веб-страница не изменяется, то есть её HTML, скрипты и все такое остаются такими как были. А автору надо править страницу.
 
        ПолеHTMLДокумента в обычном приложении имело свойство "Режим", где можно было установить режим редактирования. Этим я успешно пользовался еще лет 5 назад. В управляемых формах случился облом, и поле HTML документа, увы, не редактируется.  | 
|||
| 
    22
    
        Сти    
     26.10.17 
            ✎
    15:58 
 | 
         
        (12) Строго говоря, возможность редактирования содержимого страницы или какой-то заданной ее части в окне почти любого браузера есть - если в тегах body, div, span и так далее, то есть в нужном месте, указать contenteditable="true". Вот только здесь это мало чем поможет.     
         | 
|||
| 
    23
    
        AlvlSpb    
     naïve 
    26.10.17 
            ✎
    16:23 
 | 
         
        (0) А просто чтение HTML не подойдет? Что-то типа:
 
        ЧтениеHTML = Новый ЧтениеHTML; ЧтениеHTML.УстановитьСтроку(ВашаСтрока.ПолучитьТелоКакСтроку()); ПостроительDOM = Новый ПостроительDOM; ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML); А потом вытаскивайте любые данные через перебор элементов по имени или обращение к дочерним узлам Или я не понял задачу?  | 
|||
| 
    24
    
        Лодырь    
     26.10.17 
            ✎
    16:27 
 | 
         
        (23) посмотри пункт 3. И подумай. Как придумаешь - напиши )     
         | 
|||
| 
    25
    
        Dmitriy_
 Kolesnikov 26.10.17 
            ✎
    16:46 
 | 
         
        С пунктом 3 всё упирается в органичения табличного документа.
 
        Я не могу в одной ячейке сделать так, чтобы было два слова: "тест1 тест2", при этом тест1 было полужирным, а тест2 - нет. Всё форматирование всегда применяется целиком к ячейке и никак иначе. А зная это, вариант с ТабличнымДокументом придётся отставить. Теперь остается только формировать макет печатного документа в Word через OLE. Пошел искать, как вставить в Word кусок HTML-текста. (18) приходила в голову мысль с картинкой. Но это архитектурно неправильное решение, корявое по определению, хотя вполне может быть, что рабочее. Я так делать не буду.  | 
|||
| 
    26
    
        Сти    
     26.10.17 
            ✎
    17:13 
 | 
         
        (25) На самом деле, поле HTML документа в управляемых тоже может редактироваться, если сделать как в (22).
 
        Убил пару минут. Картинка: https://drive.google.com/file/d/0B9b0r9pu7axlRzZfN21EZVNrTWM/view тестовая обработка: https://drive.google.com/open?id=0B9b0r9pu7axla3d6TmF4NkNfazQ Результат редактирования ловится в Элементы.Реквизит1.Документ.body.innerHTML Просто преобразованный в обычный текст - в Элементы.Реквизит1.Документ.body.innerText Вот только полноценный редактор из этого делать - много писать придется.  | 
|||
| 
    27
    
        Dmitriy_
 Kolesnikov 26.10.17 
            ✎
    18:08 
 | 
         
        (26) ну ни фига себе...
 
        И правда редактируется, хотя и нет панели инструментов. Но! У меня в форме - абсолютно то же самое, за исключением того, что путь к данным указывает на реквизит документа. Но - поле ридонли. Хотя я проверил все свойства табличного поля - они совпадают с вашими. Полтергейст. Но это всё уже непринципиально. Осталась последняя задача - имея строку текста с разметкой (например, <html><body><p>Это <b>форматированный</b> текст</P></body></html> ), через OLE Передать её в Word так, чтобы он вставил её как текст с форматированием.  | 
|||
| 
    28
    
        Сти    
     26.10.17 
            ✎
    18:15 
 | 
         
        (27) Не полтергейст ) В <body> "contenteditable" прописан. Эта фича в IE работает еще с 5 версии. В остальных браузерах позже. В вебе ее обычно не применяют - и на сервер вернуть сложно, и в безопасности дырки тяжко закрыть. А тут в общем-то можно.     
         | 
|||
| 
    29
    
        PiotrLoginov    
     26.10.17 
            ✎
    18:31 
 | 
         
        (27) >>Осталась последняя задача - имея строку текста с разметкой (например, <html><body><p>Это <b>форматированный</b> текст</P></body></html> ), через OLE Передать её в Word так, чтобы он вставил её как текст с форматированием
 
        Чтобы представить, о чем речь, достаточно скопировать что-то из html-страницы и вставить это в Word. Оно, конечно, вставится - и попытается отформатироваться также, как в источнике. Но результат зачастую не самый удобоваримый. то же самое можно сделать программно. Copy - paste еще никто не отменял.  | 
|||
| 
    30
    
        Dmitriy_
 Kolesnikov 26.10.17 
            ✎
    19:14 
 | 
         
        Вся эта копипаста через буфер обмена с использованием ОЛЕ - жутко тормозная вещь.
 
        Короче, пока думаю делать так. 1. Все форматированные фрагменты через объект ТекстовыйДокумент пишутся во временные файлы, сохраняются с расширением HTML. 2. Основная таблица формируется как обычно через ТабличныйДокумент, затем сохраняется во временный файл в формате ВОРД. В тех местах, куда надо засунуть форматированные фрагменты, ставятся якори или закладки. 3. Через ОЛЕ Ворд открывает шаблон (колонтитулы, титульный лист и тп уже заполнены). Открывает временный файл основной таблицы и через буфер копипастит в шаблон. 4. Через ОЛЕ Ворд открывает всеHTML-файлы форматированных фрагментов. Через буфер копипастит в шаблон в места закладок. Думаю, так будет быстрее всего. Потому что формировать в Ворде через ОЛЕ таблицу на 10 страниц будет очень-очень медленно.  | 
|||
| 
    31
    
        Dmitriy_
 Kolesnikov 26.10.17 
            ✎
    19:15 
 | 
         
        P. S. А кто что слышал про новый способ формирования DOCX через XML? Вроде как очень быстро должно быть.     
         | 
|||
| 
    32
    
        Dmitriy_
 Kolesnikov 27.10.17 
            ✎
    15:15 
 | 
         
        (19) можно попробовать и TinyMCE, но только в том случае, если качество работы ФорматированныйДокумент будет не устраивать. Просто больше телодвижений.
 
        (28) "В <body> contenteditable прописан" - это будет работать для тонкого и толстого клиента. А если веб-клиент + Хром? Взлетит ли?  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |