Перейти к содержимому


Загрузил

Тема поддержки файла Информация

  • Загружен: Mar 02 2014 06:01
  • Последнее обновление: Mar 02 2014 06:01
  • Размер: 9.39К
  • Просмотров: 1300
  • Скачан: 3
Услуги программиста 1С
Профессиональные программисты 1С.
Весь комплекс услуг сопровождения 1С.

Курсы 1С
Бухгалтерам, менеджерам
и программистам.
Бесплатно!
Живое индивидуальное обучение по 1С.

Размещение текста в ячейке, примеры

* * * * * 1 Голосов



Поместится ли текст в ячейке табличного документа?
Проблема встречается редко:

1. В ценниках.
 
Наименование товара обычно центрируют по высоте, и при очень длинном наименовании его начало и конец имеют риск не поместиться в отведенное ему место (а в ценниках обычно отключают автовысоту).
Из этого положения два выхода:
а) Выбирать тот или иной шаблон ценника. Не реализовано в примерах.
б) Подгонять размер текста под ценник. Реализовано в примерах:

2. Когда наименование нужно написать на несколько строк:

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

В файлах находятся:
1. Пример с подбором размера шрифта с использованием функций из статьи.
2. Оптимизированный по быстродействию пример подбора размера шрифта с небольшой модификацией кода (но подбор размера шрифта - не оптимальный. Ниже есть некая попытка его вычилить а не уменьшать каждый раз на 1).
3. Вывод длинных строк в несколько ячеек.
4. Подбор размера шрифта в элементе "Рисунок табличного документа".



Администрация не несет ответственности за возможный вред, причиненный этим материалом.





  • 8618 Всего файлов
  • 9 Всего категорий
  • 45 Всего авторов
  • 22872 Всего загрузок
  • Акт списания ТМЦ Последний файл
  • kozavva Последний автор

3 посетителей за последние 15 минут

0 пользователей, 3 гостей, 0 анонимных