В процессе разработки часто возникает задача сформировать корректную внешнюю печатную форму или отчет, где ячейки табличного документа должны иметь строго заданные, фиксированные размеры по высоте и ширине, независимо от их содержимого. По умолчанию 1С пытается автоматически подогнать размеры ячеек под текст, что может нарушить верстку. Разберем, как отключить это поведение и установить свои размеры программно.
Проанализируем ситуацию, опираясь на объектную модель печатной формы: у нас есть объект ТабличныйДокумент, который выводится на форму. Наша цель — управлять его геометрией, а именно, высотой строк и шириной колонок, игнорируя стандартные механизмы автоподбора.
Ключ к решению проблемы заключается в двух шагах. Сначала необходимо явно указать системе, что мы хотим управлять размерами вручную, а затем — установить нужные нам значения. За это отвечают парные свойства объекта ТабличныйДокумент или его областей.
Рассмотрим эти свойства подробнее:
АвтоВысотаСтроки (тип Булево): Если установлено в Истина (значение по умолчанию), платформа автоматически подбирает высоту строки так, чтобы в нее поместился весь текст. Чтобы задать высоту вручную, это свойство нужно установить в Ложь.ВысотаСтроки (тип Число): Устанавливает высоту строки в пунктах (1 пункт = 1/72 дюйма). Это свойство работает только если АвтоВысотаСтроки установлено в Ложь.АвтоШиринаКолонки (тип Булево): Аналогично авто-высоте, при значении Истина ширина колонки подбирается автоматически. Для ручной настройки устанавливаем это свойство в Ложь.ШиринаКолонки (тип Число): Устанавливает ширину колонки. Важный момент: единицей измерения здесь является средняя ширина символа моноширинного шрифта, установленного для ячейки. Это свойство также работает только после отключения автоматического режима.Допустим, нам нужно, чтобы во всем табличном документе все строки имели фиксированную высоту. Это критически важно, если вы используете генерацию QR и штрихкодов без библиотек и шрифтов, где размеры графических элементов должны быть строго выверены.
// Получаем или создаем наш табличный документ
ТабДок = Новый ТабличныйДокумент;
// ...здесь идет код по заполнению документа данными...
// ШАГ 1: Отключаем автоматический подбор размеров
ТабДок.АвтоВысотаСтроки = Ложь;
ТабДок.АвтоШиринаКолонки = Ложь;
// ШАГ 2: Устанавливаем фиксированные значения
ТабДок.ВысотаСтроки = 20;
ТабДок.ШиринаКолонки = 15;
После выполнения этого кода все ячейки в документе ТабДок примут заданные размеры. Если вы реализуете добавление картинок в строки по внешним ссылкам или вам потребовалась склейка нескольких картинок в одну ячейку, такое жесткое ограничение размеров позволит сохранить структуру таблицы неизменной при вставке графики.
Часто требуется задать разные размеры для разных частей документа. Например, для шапки таблицы одни размеры, а для строк с данными — другие.
Допустим, нам нужно задать высоту только для пятой строки.
// Получаем область, соответствующую пятой строке
ОбластьСтроки = ТабДок.Область(5, , 5, );
// Отключаем автоподбор и задаем высоту
ОбластьСтроки.АвтоВысотаСтроки = Ложь;
ОбластьСтроки.ВысотаСтроки = 50;
Аналогично поступим со второй колонкой.
// Получаем область, соответствующую второй колонке (B)
ОбластьКолонки = ТабДок.Область(, 2, , 2);
// Отключаем автоподбор и задаем ширину
ОбластьКолонки.АвтоШиринаКолонки = Ложь;
ОбластьКолонки.ШиринаКолонки = 30;
Если в макете есть именованная область, можно обратиться к ней по имени после её вывода в итоговый документ.
АвтоМасштаб и МасштабИногда разработчики путают управление размерами ячеек с управлением масштабом отображения документа. Разберем, в чем разница.
ВысотаСтроки и ШиринаКолонки изменяют физические размеры ячеек. Эти размеры сохранятся, если в дальнейшем будет выполняться программная конвертация отчетов в графический формат или экспорт в PDF.АвтоМасштаб и Масштаб управляют только отображением (zoom) документа на экране и не влияют на реальную геометрию ячеек.Чтобы надежно зафиксировать размеры ячеек в табличном документе 1С, всегда следуйте простому алгоритму:
АвтоВысотаСтроки и/или АвтоШиринаКолонки в значение Ложь.Этот подход гарантирует, что ваша печатная форма или отчет будут выглядеть именно так, как вы задумали, без непредвиденных "сюрпризов" от механизма автоматического подбора размеров платформы 1С.