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