Когда содержимое не помещается в ячейку по ширине, то в свойствах ячейки табличного документа можно установить параметр "Размещение текста" в значение "Переносить" и содержимое перенесётся на следующую строку внутри ячейки. Но иногда требуется перенести содержимое в ячейку на следующей строке.
Для этого нужно текст поделить на подстроки, которые будут выведены в ячейки. Ширина подстроки определяется количеством символов, которые помещаются в одной строке ячейки. Так как ширины символов отличаются, то ширина подстроки определяется приблизительно.
Заполненный макет в 1С:предприятии
Процедура заполнения и вывода макета
Процедура ЗаполнитьТабДокумент() Текст = "Длинный текст |Длинный текст |Длинный текст |Длинный текст |Длинный текст |Длинный текст"; Макет = ПолучитьМакет("Макет"); ПеренестиПоСтрокам(Макет, Текст, 2, 8, 73); Макет.Показать(); КонецПроцедуры
Процедура многострочного вывода Процедура разделяет текст на подстроки по ширине области ячеек и выводит подстроки в эти области ячеек. Выводимые строки добавляются в конец табличного документа.
- ТабДокумент - табличный документ для вывода
- НомерПервойКолонки - номер первой колоки области ячеек
- НомерПоследнейКолонки - номер последней колоки области ячеек
- Ширина - приблизительное количество символов в области ячеек
Процедура ПеренестиПоСтрокам(ТабДокумент, Текст, НомерПервойКолонки, НомерПоследнейКолонки, Ширина)
Текст = СтрЗаменить(Текст, Символы.ПС, " "); Текст = СокрЛП(Текст);
НомерСтроки = ТабДокумент.ВысотаТаблицы; НомерСтроки = НомерСтроки + 1; Пока НЕ ПустаяСтрока(Текст) Цикл АдресОбласти = "R" + НомерСтроки + "C" + НомерПервойКолонки + ":" + "R" + НомерСтроки + "C" + НомерПоследнейКолонки; НоваяОбласть = ТабДокумент.Область(АдресОбласти); НоваяОбласть.Объединить(); НоваяОбласть.Текст = Сред(Текст, 1, Ширина); Текст = Сред(Текст, Ширина + 1); НомерСтроки = НомерСтроки + 1; КонецЦикла; КонецПроцедуры
|