Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Текст с форматированием (разметка, теги) - как работать?

Текст с форматированием (разметка, теги) - как работать?
Я
   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:&quot;Segoe UI&quot;,sans-serif;background:honeydew">В РФ аналогов планируемого центра нет. Лидером в мире является Центр
персонализированной медицины клиники Мэйо&nbsp;&nbsp;
(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:&quot;Segoe UI&quot;,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:&quot;Times New Roman&quot;,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. Как мне это преобразовать в простой текст?

Хотя бы намек дайте, дальше я сам разберусь.
 
 
   dezss
 
1 - 25.10.17 - 17:19
Вид реквизита Поле html документа.
А вот что с этим делать дальше, надо копать)))
   Ц_У
 
2 - 25.10.17 - 17:20
что то там было body innertext если мне не изменяет память
   mehfk
 
3 - 25.10.17 - 17:21
Поле HTML документа
   Dmitriy_ Kolesnikov
 
4 - 25.10.17 - 17:46
Благодарю.
А по вопросам 3 и 4: вывод в табличный документ и преобразование в plain text?
   mistеr
 
5 - 25.10.17 - 17:46
(0) Встречный вопрос: а зачем вам ЭТО в реквизите в таком виде? 1С вроде научилась очищать текст от форматирования. ДО по крайней мере, умеет.
   Dmitriy_ Kolesnikov
 
6 - 25.10.17 - 18:37
Потому что там в текстовых полях используются, в частности, подстрочные и надстрочные символы. Специфический медицинский текст. Поэтому надо не только сохранять форматирование, но и редактировать rich text в форме документа.
   Dmitriy_ Kolesnikov
 
7 - 25.10.17 - 23:02
Короче, для хранения удобно использовать объект ФорматированныйДокумент. Засовывать его в ХранилищеЗначения. Поле HTML документа не подходит, т. к. его невозможно редактировать.

Я уперся в вывод в табличный документ.
У меня есть макет таблицы.
Как мне в какую-то ячейку таблицы вставить текст с форматированием (он у меня будет в объекте ФорматированныйДокумент)?
То есть несколько абзацев форматированного текста из ФорматированныйДокумент вставить в ячейку табличного документа?
   Dmitriy_ Kolesnikov
 
8 - 26.10.17 - 13:49
Господа, неужели никто не знает, как вставить форматированный текст в ячейку табличного документа?
   DrShad
 
9 - 26.10.17 - 13:57
Поле HTML документа не подходит, т. к. его невозможно редактировать.

это еще почему невозможно?
   Tatitutu
 
10 - 26.10.17 - 14:13
В РФ аналогов планируемого центра нет. Лидером в мире является Центр персонализированной медицины клиники Мэйо   (http://mayoresearch.mayo.edu/mayo/research/center-for-individualized-medicine/individualized-medicine-clinic.asp).


Планируемый центр генетического прогнозирования, профилактики и персонализированной медицины уникальный для РФ и будет соответствовать мировым лидерам в этой области.
 
 Рекламное место пустует
   Tatitutu
 
11 - 26.10.17 - 14:16
(0)

если просто НА ПОСМОТРЕТЬ

у любого объекта (Обработка, Отчет)
действия - справочная информация
- три вкладки
Редактирование
Текст
Просмотр

в Текст - копируешь из (0)
и смотришь в Просмотр как в (10)

Можешь не благодарить!
   Dmitriy_ Kolesnikov
 
12 - 26.10.17 - 14:19
(9) Поле ввода формы с видом "Поле HTML документа" - это фрейм интернет эксплорера, встроенный в форму, в котором отображается форматированный текст. Никакой возможности редактирования у веб-страницы разумеется нет.
Зато у объекта типа "ФорматированныйДокумент" нет таких ограничений, более того, можно прицепить панель форматирования.
   Dmitriy_ Kolesnikov
 
13 - 26.10.17 - 14:40
(10)
Вы меня не поняли.
В случае с простым текстом вывод в табличный документ делается так:

ТабДок = новый ТабличныйДокумент;
ОбластьШапка = Макет.ПолучитьОбласть("ОбластьШапка");
ОбластьШапка.Параметры.ДатаВыдачиПлан = ЭтотОбъект.ДатаИсполнения;
ТабДок.Вывести(ОбластьШапка);

Теперь представим, что в этом примере ДатаИсполнения - это не просто строка или число или что-то ещё примитивное, а, например, ФорматированныйДокумент. Или просто строка, но в которой содержится HTML-разметка.
Задача - вывести этот отформатированный документ в параметр области табличного документа.
   lodger
 
14 - 26.10.17 - 15:19
(13) Максим Радченко говорит можно так:
ФД = Ссылка[0].Текст.Получить();
ТекстФД = ФД.ПолучитьТекст();
   lodger
 
15 - 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
   Dmitriy_ Kolesnikov
 
16 - 26.10.17 - 15:36
(14) так мы получим текст с потерей всего форматирования!
А задача в том, чтобы форматирование в ячейке сохранить...

(15) Там документ на 33 страницы, в котором много обычных параметров, включая таблицы, а куски форматированного текста составляют лишь небольшую часть. Плюс колонтитулы, разделители страниц, картинки. Если я буду сам руками формировать этот документ в HTML, то, как минимум, не смогу  контролировать колонтитулы и разделители страниц. Поэтому идеальным вариантом будет использование ТабличныйДокумент.
   MrStomak
 
17 - 26.10.17 - 15:41
(12)
"Никакой возможности редактирования у веб-страницы разумеется нет."

И как же ты, позволь поинтересоваться, разместил это сообщение, если ты не можешь редактировать формы браузера?
   lodger
 
18 - 26.10.17 - 15:45
(16) на мисте была такая же тема. там все заглохло без решения. последний вариант на-пофиг был: создать хтмл документ. распечатать его в картинку. вставить картинку в табдок.
   Лодырь
 
19 - 26.10.17 - 15:45
(7) TinyMCE нио чем не говорит?

Форматированный документ забудь как страшный сон. Настойчиво не рекомендую его использовать.
   lodger
 
20 - 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". Вот только здесь это мало чем поможет.
   AlvlSpb
 
23 - 26.10.17 - 16:23
(0) А просто чтение HTML не подойдет? Что-то типа:
ЧтениеHTML = Новый ЧтениеHTML;
                                  
ЧтениеHTML.УстановитьСтроку(ВашаСтрока.ПолучитьТелоКакСтроку());
    ПостроительDOM = Новый ПостроительDOM;
    ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);

А потом вытаскивайте любые данные через перебор элементов по имени или обращение к дочерним узлам
  Или я не понял задачу?
   Лодырь
 
24 - 26.10.17 - 16:27
(23) посмотри пункт 3. И подумай. Как придумаешь - напиши )
   Dmitriy_ Kolesnikov
 
25 - 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

Вот только полноценный редактор из этого делать - много писать придется.
   Dmitriy_ Kolesnikov
 
27 - 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 версии. В остальных браузерах позже. В вебе ее обычно не применяют - и на сервер вернуть сложно, и в безопасности дырки тяжко закрыть. А тут в общем-то можно.
   PiotrLoginov
 
29 - 26.10.17 - 18:31
(27) >>Осталась последняя задача - имея строку текста с разметкой (например, <html><body><p>Это <b>форматированный</b> текст</P></body></html> ), через OLE Передать её в Word так, чтобы он вставил её как текст с форматированием

Чтобы представить, о чем речь, достаточно скопировать что-то из html-страницы и вставить это в Word.  Оно, конечно, вставится - и попытается отформатироваться также, как в источнике. Но результат зачастую не самый удобоваримый.

то же самое можно сделать программно. Copy - paste еще никто не отменял.
   Dmitriy_ Kolesnikov
 
30 - 26.10.17 - 19:14
Вся эта копипаста через буфер обмена с использованием ОЛЕ - жутко тормозная вещь.

Короче, пока думаю делать так.
1. Все форматированные фрагменты через объект ТекстовыйДокумент пишутся во временные файлы, сохраняются с расширением HTML.
2. Основная таблица формируется как обычно через ТабличныйДокумент, затем сохраняется во временный файл в формате ВОРД. В тех местах, куда надо засунуть форматированные фрагменты, ставятся якори или закладки.
3. Через ОЛЕ Ворд открывает шаблон (колонтитулы, титульный лист и тп уже заполнены). Открывает временный файл основной таблицы и через буфер копипастит в шаблон.
4. Через ОЛЕ Ворд открывает всеHTML-файлы форматированных фрагментов. Через буфер копипастит в шаблон в места закладок.

Думаю, так будет быстрее всего.

Потому что формировать в Ворде через ОЛЕ таблицу на 10 страниц будет очень-очень медленно.
   Dmitriy_ Kolesnikov
 
31 - 26.10.17 - 19:15
P. S. А кто что слышал про новый способ формирования DOCX через XML? Вроде как очень быстро должно быть.
   Dmitriy_ Kolesnikov
 
32 - 27.10.17 - 15:15
(19) можно попробовать и TinyMCE, но только в том случае, если качество работы ФорматированныйДокумент будет не устраивать. Просто больше телодвижений.

(28) "В <body> contenteditable прописан" - это будет работать для тонкого и толстого клиента. А если веб-клиент + Хром? Взлетит ли?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует