1CLenta.ru  

Многострочный вывод в табличный документ

Программирование системы     10.05.2016 17:42     13522

Когда содержимое не помещается в ячейку по ширине, то в свойствах ячейки табличного документа можно установить параметр "Размещение текста" в значение "Переносить" и содержимое перенесётся на следующую строку внутри ячейки. Но иногда требуется перенести содержимое в ячейку на следующей строке.

Для этого нужно текст поделить на подстроки, которые будут выведены в ячейки. Ширина подстроки определяется количеством символов, которые помещаются в одной строке ячейки. Так как ширины символов отличаются, то ширина подстроки определяется приблизительно.

Заполненный макет в 1С:предприятии


Многострочный текст в макете

Процедура заполнения и вывода макета


Процедура ЗаполнитьТабДокумент()

Текст = "Длинный текст
|Длинный текст
|Длинный текст
|Длинный текст
|Длинный текст
|Длинный текст"
;

Макет = ПолучитьМакет("Макет");
ПеренестиПоСтрокам(Макет, Текст, 2, 8, 73);
Макет.Показать();

КонецПроцедуры


Процедура многострочного вывода


Процедура разделяет текст на подстроки по ширине области ячеек и выводит подстроки в эти области ячеек. Выводимые строки добавляются в конец табличного документа.

  • ТабДокумент - табличный документ для вывода
  • НомерПервойКолонки - номер первой колоки области ячеек
  • НомерПоследнейКолонки - номер последней колоки области ячеек
  • Ширина - приблизительное количество символов в области ячеек


Процедура ПеренестиПоСтрокам(ТабДокумент, Текст, НомерПервойКолонки, 
НомерПоследнейКолонки, Ширина)

Текст = СтрЗаменить(Текст, Символы.ПС, " ");
Текст = СокрЛП(Текст);

НомерСтроки = ТабДокумент.ВысотаТаблицы;
НомерСтроки = НомерСтроки + 1;

Пока НЕ ПустаяСтрока(Текст) Цикл

АдресОбласти = "R" + НомерСтроки + "C" + НомерПервойКолонки + ":" +
"R" + НомерСтроки + "C" + НомерПоследнейКолонки;

НоваяОбласть = ТабДокумент.Область(АдресОбласти);
НоваяОбласть.Объединить();
НоваяОбласть.Текст = Сред(Текст, 1, Ширина);
Текст = Сред(Текст, Ширина + 1);
НомерСтроки = НомерСтроки + 1;

КонецЦикла;

КонецПроцедуры

Комментарии (0)