|
Текст с форматированием (разметка, теги) - как работать? | ☑ | ||
---|---|---|---|---|
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
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 прописан" - это будет работать для тонкого и толстого клиента. А если веб-клиент + Хром? Взлетит ли? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |