Сегодня рассмотрим две ситуации размещения текста в ячейке.
Содержание:
1. Вписывание текста в ячейку за счет уменьшения размера шрифта.
2. Объединение строк для полного вывода текста.
1. Вписывание текста в ячейку за счет уменьшения размера шрифта
Для примера создадим внешнюю обработку.
Подготовим Макет.На форме разместит элементы.
Код на кнопку "Вписать в ячейку"
&НаКлиенте
Процедура ВписатьВЯчейку(Команда)
ВписатьВЯчейкуНаСервере();
КонецПроцедуры
Дополнительные процедуры и функции.
&НаСервере
Процедура ВписатьВЯчейкуНаСервере()
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
ТабДок.Очистить();
ОбластьМакета = Макет.ПолучитьОбласть("Область1|Область2");
ТД = Новый ТабличныйДокумент;
ТД.Вывести(ОбластьМакета);
ОбластьТабДок = ТД.Область("R1C1:R1C1");
ВместитьТекстВОбласть(ОбластьТабДок, ОбластьМакета, Объект.Текст, 60);
ТабДок.Вывести(ТД);
КонецПроцедуры
&НаСервере
Процедура ВместитьТекстВОбласть(ОбластьТабДок, ОбластьМакета, Текст, МаксимальныйРазмерТекста = 60)
НачальнаяВысота = ВысотаЯчейки(ОбластьТабДок, ОбластьМакета);
ВремТабДок = Новый ТабличныйДокумент;
ВремТабДок.Вывести(ОбластьМакета);
ВремОбласть = ВремТабДок.Область(ОбластьТабДок.Имя);
ВремОбласть.АвтоВысотаСтроки = Истина;
ВремОбласть.ВысотаСтроки = 0;
ВремОбласть.Текст = Текст + "Щ";
РазмерТекста = МаксимальныйРазмерТекста;
ВремОбласть.Шрифт = Новый Шрифт(ВремОбласть.Шрифт, ,РазмерТекста);
ТекВысота = ВысотаЯчейки(ВремОбласть, ВремТабДок);
Пока ТекВысота > НачальнаяВысота И РазмерТекста > 0 Цикл
РазмерТекста = РазмерТекста - 1;
ВремОбласть.Шрифт = Новый Шрифт(ВремОбласть.Шрифт, ,РазмерТекста);
ТекВысота = ВысотаЯчейки(ВремОбласть, ВремТабДок);
КонецЦикла;
ОбластьТабДок.Шрифт = Новый Шрифт(ОбластьТабДок.Шрифт, ,РазмерТекста);
ОбластьТабДок.Текст = Текст;
КонецПроцедуры
&НаСервере
Функция ВысотаЯчейки(Область, ТабДок)
РисунокТекст = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Текст);
РисунокТекст.Расположить(Область);
ВысотаРисункаТекста = РисунокТекст.Высота;
ТабДок.Рисунки.Удалить(РисунокТекст);
Возврат(ВысотаРисункаТекста);
КонецФункции
Результат
2. Объединение строк для полного вывода текста
Код на кнопку "Узнать высоту строки и объединить"
&НаКлиенте
Процедура УзнатьВысотуСтрокиИОбъединить(Команда)
УзнатьВысотуСтрокиИОбъединитьНаСервере();
КонецПроцедуры
Дополнительная процедура
&НаСервере
Процедура УзнатьВысотуСтрокиИОбъединитьНаСервере()
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
ТабДок.Очистить();
ОбластьМакета = Макет.ПолучитьОбласть("Область1|Область2");
ТД = Новый ТабличныйДокумент;
ТД.Вывести(ОбластьМакета);
ОбластьТабДок = ТД.Область("R1C1:R1C1");
ТекстУмещаетсяВЯчейке(ТД, ОбластьТабДок, ОбластьМакета, Объект.Текст);
ТабДок.Вывести(ТД);
КонецПроцедуры
Результат
Авторство не мое, информация взята по ссылке https://infostart.ru/public/123769/?detail=Y
Я только попробовал реализовать на свой лад и сохранить, что бы не искать.
Моя внешняя обработка (скачать Пример)
Комментариев нет:
Отправить комментарий