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