Текст форматированного документа.
Полное описание, параметры и ограничения
ТекстФорматированногоДокумента (FormattedDocumentText)
ТекстФорматированногоДокумента (FormattedDocumentText)
Доступен, начиная с версии 8.3.1.
Свойства:
ЗакладкаКонца (EndBookmark)
ЗакладкаНачала (BeginBookmark)
НавигационнаяСсылка (URL)
Родитель (Parent)
Текст (Text)
ЦветТекста (TextColor)
ЦветФона (BackColor)
Шрифт (Font)
Описание:
Текст форматированного документа.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.3.1.
Методическая информация
Практические примеры
Показать на форме оформленную памятку с двумя шагами и итогом
Законченная собственная форма отображает заголовок, нумерованные шаги и зелёный итог. Пользователь может сверить расчёт кнопкой без записи в базу.
Где и как запускать
Полный модуль отдельной управляемой формы с реквизитом УчебныйТекст, полем и командой, перечисленными в подготовке.
Подготовка
Создайте отдельную учебную внешнюю обработку и пустую управляемую основную форму.
В реквизитах формы добавьте УчебныйТекст типа ФорматированныйДокумент. Перетащите его на форму: поле ПолеУчебногоТекста, Вид = Поле форматированного документа, Только просмотр = Да.
Создайте команду УчебныйПример и кнопку этой команды. Действие команды свяжите с процедурой УчебныйПример.
Событие формы ПриСозданииНаСервере свяжите с одноимённой процедурой. Вставьте ВЕСЬ модуль и откройте учебную EPF в клиенте Windows.
Это собственная учебная памятка. Она не является макетом рабочего отчёта и не отправляется на принтер.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УчебныйТекст = СоздатьУчебнуюПамятку();
КонецПроцедуры
&НаСервереБезКонтекста
Функция СоздатьУчебнуюПамятку()
Документ = Новый ФорматированныйДокумент;
Заголовок = Документ.Добавить("Расчёт учебной покупки");
Заголовок.Шрифт = Новый Шрифт("Arial", 16, Истина);
Заголовок.ЦветТекста = Новый Цвет(25, 50, 80);
Заголовок.Родитель.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
Шаг1 = Документ.Элементы.Добавить(Неопределено, Неопределено);
Шаг1.ТипПараграфа = ТипПараграфаФорматированногоДокумента.НумерованныйСписок;
Шаг1.Отступ = 12;
Шаг1.МеждустрочныйИнтервал = 1.2;
Шаг1.Элементы.Добавить("Выберите товар: Книга.");
Шаг2 = Документ.Элементы.Добавить(Неопределено, Неопределено);
Шаг2.ТипПараграфа = ТипПараграфаФорматированногоДокумента.НумерованныйСписок;
Шаг2.Отступ = 12;
Шаг2.МеждустрочныйИнтервал = 1.2;
Шаг2.Элементы.Добавить("Количество 3, цена 250 руб., сумма 3 × 250 = 750 руб.");
Итог = Документ.Элементы.Добавить(Неопределено, Неопределено);
Итог.ТипПараграфа = ТипПараграфаФорматированногоДокумента.Обычный;
ТекстИтога = Итог.Элементы.Добавить("Итого: 750 руб. Ничего не записано в базу.");
ТекстИтога.ЦветТекста = Новый Цвет(20, 110, 50);
ТекстИтога.ЦветФона = Новый Цвет(235, 248, 239);
ТекстИтога.Шрифт = Новый Шрифт("Arial", 12, Истина);
Возврат Документ;
КонецФункции
&НаКлиенте
Процедура УчебныйПример(Команда)
Сумма = 3 * 250;
Сообщить(Сумма = 750);
Сообщить(СтрНайти(УчебныйТекст.ПолучитьТекст(), "750 руб.") > 0);
КонецПроцедурыРазбор по шагам
УчебныйТекст — реквизит именно этой учебной формы, поле связано с ним путём к данным.
Объект ФорматированныйДокумент содержит корневую коллекцию параграфов. Внутри параграфа — текстовые элементы, картинки и переводы строк.
Добавить у документа создаёт текст; через Родитель получаем его параграф для выравнивания заголовка.
Добавить(Неопределено, Неопределено) у корневой коллекции создаёт пустой параграф. Добавить у его Элементы создаёт содержимое этого параграфа.
Отступ измеряется в поинтах, МеждустрочныйИнтервал — относительный множитель размера шрифта. Это разные единицы.
Кнопка проверяет расчёт и наличие итога в тексте; она не проводит документ и не печатает.
Как проверить результат
В форме видны заголовок по центру, два нумерованных пункта и выделенный итог 750 руб.
Кнопка выводит две Истина; поле в режиме Только просмотр не позволяет менять памятку.
Проверьте оформление визуально в своём клиенте: эти сообщения проверяют расчёт и текст, не пиксельный вид.
Ожидаемый результат
Получена самостоятельная читаемая учебная памятка на управляемой форме.
На что обратить внимание
Если поле отображает не документ, проверьте Вид поля и ПутьКДанным=УчебныйТекст.
Сами строки нумерованных пунктов не содержат цифр: номера отображает ТипПараграфа.
Внешний вид шрифта зависит от наличия Arial и среды клиента; это не доказательство одинаковой вёрстки во всех клиентах.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Получить пересекающиеся элементы и выделить точные элементы выбранного слова
В одном текстовом элементе Книга и Ручка выбираем только Ручка. ПолучитьЭлементы не режет элемент, а СформироватьЭлементы при необходимости меняет структуру.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Отдельная учебная база, серверный общий модуль УчебныеЗадачи. Фрагмент без директив вставьте в тело ВыполнитьПример() Экспорт.
Документ создаётся заново в памяти при каждом запуске. Существующие реквизиты, файлы и документы конфигурации не меняются.
Сообщения показывают контрольные проверки. Для визуального просмотра оформления используйте отдельную задачу с полным модулем учебной формы.
Документ = Новый ФорматированныйДокумент;
Документ.Добавить("Книга и Ручка");
До = Документ.ПолучитьТекст();
Область = Документ.НайтиТекст("Ручка");
Если Область = Неопределено Тогда
ВызватьИсключение "Нет ожидаемого слова Ручка";
КонецЕсли;
Пересекающиеся = Документ.ПолучитьЭлементы(Область.ЗакладкаНачала, Область.ЗакладкаКонца);
Сообщить(Пересекающиеся.Количество() = 1);
Сообщить(Пересекающиеся[0].Текст = "Книга и Ручка");
Точные = Документ.СформироватьЭлементы(Область.ЗакладкаНачала, Область.ЗакладкаКонца);
Сообщить(Точные.Количество() = 1);
Сообщить(Точные[0].Текст = "Ручка");
Точные[0].ЦветТекста = Новый Цвет(180, 30, 30);
Сообщить(Документ.ПолучитьТекст() = До);Разбор по шагам
Один Добавить создаёт один текстовый элемент с полным содержимым Книга и Ручка.
Поиск слова возвращает диапазон внутри этого элемента.
ПолучитьЭлементы включает даже частично входящие элементы, поэтому возвращает исходный полный текстовый элемент.
СформироватьЭлементы делит текстовый элемент так, чтобы выбранный диапазон содержал элементы полностью. Результат теперь содержит именно Ручка.
Красим только точный элемент. Видимый текст не изменился, но внутренняя структура и оформление изменились.
Как проверить результат
Все пять сообщений Истина: до разделения полный элемент, после — точное слово Ручка.
Обычный текст остался Книга и Ручка; при отображении документа красным будет только Ручка.
Ожидаемый результат
Освоено существенное различие двух похожих методов и точное оформление фрагмента.
На что обратить внимание
СформироватьЭлементы — не чистый read-only поиск: он может разделять элементы документа.
После разделения не полагайтесь на прежнее количество элементов и их индексы.
На тексте с несколькими стилями результат может содержать несколько элементов, а не один. Один здесь обусловлен подготовкой.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.