Введение
При разработке отчётов и печатных форм в ТабличныйДокумент может потребоваться вывести форматированный текст, настраиваемый пользователем в режиме 1С:Предприятие. Такой текст может содержать полужирное начертание, нумерованные списки, выравнивание и другие элементы оформления.
Стандартная подсистема печати БСП позволяет настроить форматированный текст в ячейках пользовательского макета печати. Однако типовой функционал подсистемы БСП может не подойти, если пользователю требуется отдельная настройка текста или типовых возможностей форматирования БСП недостаточно, так как он имеет ограниченные возможности по сравнению с функционалом объекта ФорматированныйДокумент:
В статье разберём, как вывести форматированный текст пользователя в ТабличныйДокумент, используя возможности ФорматированногоДокумента с сохранением поддерживаемого форматирования.
Концепция решения
Для решения задачи используем следующую последовательность работы с форматированным текстом:
Сначала реализуем возможность настройки оформления текста пользователем с помощью ФорматированногоДокумента, затем получим из ФорматированногоДокумента объект ФорматированнаяСтрока и передадим его в параметр области макета Табличного документа.
Далее подробнее рассмотрим каждый этап реализации задачи.
Настройка форматированного текста
В нашем примере для хранения форматированного текста используем константу ХранилищеТекстаУведомления с типом ХранилищеЗначения.
Для настройки форматированного текста пользователем в форме настройки используем элемент формы, связанный с реквизитом формы типа ФорматированныйДокумент. В этом поле пользователь может редактировать текст и оформлять его отдельные фрагменты, применять различные начертания текста, списки и другие варианты форматирования:
При сохранении настроек введенный пользователем форматированный текст сохраняем в константе, получая его из поля форматированного документа следующим образом:
Константы.ХранилищеТекстаУведомления.Установить(Новый ХранилищеЗначения(РеквизитФормыФорматированныйДокументУведомления));
В результате текст из реквизита формы с типом ФорматированныйДокумент будет сохранен в константе типа ХранилищеЗначения.
Получение форматированной строки
Чтобы передать настроенный форматированный текст из константы с типом ХранилищеЗначения в ТабличныйДокумент, преобразуем его в форматированную строку методом ПолучитьФорматированнуюСтроку().
ХранилищеТекстаУведомления = Константы.ХранилищеТекстаУведомления.Получить();
ФорматированныйТекстУведомления = ХранилищеТекстаУведомления.Получить().ПолучитьФорматированнуюСтроку();
Метод возвращает объект ФорматированнаяСтрока, содержащий текст и примененное к его фрагментам оформление. Полученное значение далее можно передать в параметр области макета при формировании ТабличногоДокумента.
Настройка макета
В макете ТабличногоДокумента создадим область Уведомление, в которой будет выводиться настроенный пользователем форматированный текст.
В области макета добавим параметр ФорматированныйТекст. Дополнительная настройка «Форматированная строка» для добавленной области не требуется.
Получим область макета и заполним ее созданным параметром:
ОбластьУведомление = Макет.ПолучитьОбласть("Уведомление");
ХранилищеТекстаУведомления = Константы.ХранилищеТекстаУведомления.Получить();
ОбластьУведомление.Параметры.ФорматированныйТекст = ХранилищеТекстаУведомления.Получить().ПолучитьФорматированнуюСтроку();
После этого заполненную область макета можно выводить в итоговый ТабличныйДокумент.
Вывод форматированного текста
Создадим ТабличныйДокумент и выведем в него заполненную форматированным текстом область макета:
ДокументРезультат = Новый ТабличныйДокумент;
ДокументРезультат.Вывести(ОбластьУведомление);
Значение параметра ФорматированныйТекст будет выведено в область макета с оформлением, которое настроил пользователь.
Таким образом, для переноса форматирования в ТабличныйДокумент достаточно преобразовать ФорматированныйДокумент в ФорматированнуюСтроку и передать полученное значение в параметр области макета.
Полный пример реализации
Ниже приведен пример функции, которая получает форматированный текст, введенный пользователем в поле с типом ФорматированныйДокумент и сохраненный в константу, заполняет область макета и возвращает сформированный ТабличныйДокумент:
Функция СформироватьОтчет() Экспорт
ДокументРезультат = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ОбластьУведомление = Макет.ПолучитьОбласть("Уведомление");
ХранилищеТекстаУведомления = Константы.ХранилищеТекстаУведомления.Получить();
ОбластьУведомление.Параметры.ФорматированныйТекст = ХранилищеТекстаУведомления.Получить().ПолучитьФорматированнуюСтроку();
ДокументРезультат.Вывести(ОбластьУведомление);
Возврат ДокументРезультат;
КонецФункции
Результат
После формирования отчёта представленным образом текст будет выведен в ТабличныйДокумент с сохранением поддерживаемого оформления, заданного пользователем в ФорматированномДокументе.
Данный подход можно использовать для вывода в печатные формы и отчеты следующих блоков:
- уведомлений и предупреждений;
- пояснений к отчётам;
- информационных блоков;
- других текстов, которые имеют нестандартное форматирование.
Пользователь сможет самостоятельно изменять содержание и оформление таких блоков, используя возможности форматированного документа, а разработчику не потребуется заранее предопределять форматирование в Конфигураторе.
Заключение
Метод ПолучитьФорматированнуюСтроку() позволяет перенести текст из ФорматированногоДокумента в параметр области макета и сохранить пользовательское оформление при выводе в ТабличныйДокумент.
Такой подход можно применять для вывода уведомлений, пояснений и других текстовых блоков, которые пользователь должен самостоятельно редактировать и форматировать в режиме 1С:Предприятия.