Определение, вместится ли текст в ячейку табличного документа

ChOP 30 5

Функция для определения вместимости текста в ячейку табличного документа

//Функция для определения вместится ли текст в ячейку:
//
// Параметры:
//  пОбласть -Область табличного документа- Область табличного документа, которую надо проверить на вместимости.
//	"пОбласть = пТабДок.Области.ТекстЗаготовки;". "ТекстЗаготовки" имя ячейки.
//
//  Для возможности использования этого метода необходимо соблюдать следующие условия:
// 
//	пТабДок - Табличный документ - Табличный документ, в котором происходит проверка.
//  "пТабДок = Макет.ПолучитьОбласть("ТекстЗаготовки");"
//
//  пТекст - Строка - Проверяемый текст.
//
//	1. Необходимо как-нибудь назвать область.
//	2. Заполнение области = Текст, а не Параметр или Шаблон.
//	Во всяком случае, я ничего простого не придумал. И так как жизнь это усложняет не сильно не стал заморачиваться из-за этого.
//	3. Размещение текста (Параметр ячейки) = Перенос. Вот это нужно обязательно! Размещение текста програмно поставить можно, но эффект от изменения,
//	насколько я понял, появляется только после отображения табличного документа с этой ячейкой.
//
// Возвращаемое значение:
//  Булево.
//
Функция ТекстУмещаетсяВЯчейке(пОбласть, пТабДок, пТекст) Экспорт
	
	ВысотаДо = ВысотаОбластиВмм(пОбласть, пТабДок);
	
	// Скопируем область в новый табличный документ.
	// И там уже будем играть с её свойствами.
	ВремТабДок = Новый ТабличныйДокумент;
	ВремТабДок.Вывести(пТабДок);
	ВремОбласть = ВремТабДок.Область(пОбласть.Имя);
	
	ВремОбласть.АвтоВысотаСтроки = Истина;
	ВремОбласть.ВысотаСтроки     = 0;
	
	ВремОбласть.Текст = пТекст + "Щ"; // Для исключения ситуаций вида "на грани переноса"
	ВысотаПосле       = ВысотаОбластиВмм(ВремОбласть, ВремТабДок);
	
	Возврат ВысотаДо >= ВысотаПосле;
	
КонецФункции


//Функция возвращает высоту области таб. документа в мм
//
// Параметры:
// пОбласть - Область табличного документа -  Область табличного документа которую надо проверить.
// 
// пТабДок - Табличный документ - Табличный документ, в котором происходит проверка.
//
// Возвращаемое значение:
// число.
//
Функция ВысотаОбластиВмм(пОбласть, пТабДок)
    
    Надпись = пТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Текст);    
    Надпись.Расположить(пОбласть);    
    Высота = Надпись.Высота;    
    пТабДок.Рисунки.Удалить(Надпись);
    
    Возврат(Высота);
    
КонецФункции
Орфографическая ошибка в нибудь: нибудь
Орфографическая ошибка в заморачиваться: заморачиваться
Орфографическая ошибка в програмно: програмно
FastCode - сервис для программистов 1С

Похожие публикации

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

Заполнение табличного документа

ТабличныйДокументПоДвоичнымДанным (БСП)

РаспечататьТабличныеДокументы (БСП)

ПриНажатииНаГиперссылкуВДокументеОписанияОбновлений (БСП)

Модератору