Как программно задать точный размер ячейки в табличном документе 1С?

Программист IT и автоматизация бизнеса
← На главную

При формировании печатных форм или отчетов в 1С часто возникает задача установить конкретные размеры ячеек, например, задать точную высоту и ширину в миллиметрах или других единицах. В отличие от текстовых редакторов вроде MS Word, где можно задать размер отдельной ячейке, в 1С объект ТабличныйДокумент устроен иначе. Разберемся, как управлять размерами и какие нюансы нужно учитывать.

Принцип работы с размерами в Табличном Документе

Ключевое отличие ТабличногоДокумента 1С заключается в том, что у отдельной ячейки нет собственных свойств высоты и ширины. Ее видимые размеры полностью определяются размерами строки и колонки, на пересечении которых она находится.

Таким образом, чтобы изменить размер ячейки, нам необходимо изменять программно свойства строки и колонки:

Если вы объединяете несколько ячеек с помощью метода Присоединить(), то итоговая область будет иметь высоту, равную сумме высот всех объединенных строк, и ширину, равную сумме ширин всех объединенных колонок.

Установка высоты и ширины: практический пример

Рассмотрим, как программно установить высоту для определенной строки и ширину для колонки. Для этого нужно получить объект области (ячейки) и обратиться к его свойствам ВысотаСтроки и ШиринаКолонки.

Предположим, у нас есть сформированный табличный документ в переменной ТабДок, и мы хотим установить для ячейки в 5-й строке и 2-й колонке высоту 20 единиц и ширину 15 единиц.


// Предполагаем, что переменная ТабДок уже содержит объект ТабличныйДокумент
// ТабДок = Новый ТабличныйДокумент;

// Определяем номера нужной строки и колонки
НомерСтроки = 5;
НомерКолонки = 2;

// Получаем область конкретной ячейки
ОбластьЯчейки = ТабДок.Область(НомерСтроки, НомерКолонки);

// Устанавливаем высоту для всей 5-й строки
ОбластьЯчейки.ВысотаСтроки = 20;

// Устанавливаем ширину для всей 2-й колонки
ОбластьЯчейки.ШиринаКолонки = 15;

Важный момент: хотя мы обращаемся к свойствам через конкретную ячейку (ОбластьЯчейки), изменения применяются ко всей строке и всей колонке, которым эта ячейка принадлежит. Все остальные ячейки в 5-й строке также станут высотой 20, а все ячейки во 2-й колонке — шириной 15.

Разбираемся с единицами измерения

Один из самых частых вопросов — в каких единицах задаются высота и ширина? Здесь платформа 1С использует разные подходы, что крайне важно учитывать для точного позиционирования.

  1. ВысотаСтроки измеряется в пунктах (points).

    Пункт — это стандартная типографская единица, равная 1/72 дюйма. Такой подход позволяет добиться предсказуемого результата при печати, так как размер не зависит от разрешения экрана. Например, чтобы установить высоту строки примерно в 1 см, нужно перевести сантиметры в дюймы (1 см ≈ 0.3937 дюйма), а затем в пункты (0.3937 * 72 ≈ 28 пунктов).

  2. ШиринаКолонки измеряется в условных единицах.

    Эта единица равна количеству символов стандартного шрифта (шрифта, установленного для стиля "Обычный" в табличном документе), которые могут поместиться в ячейке по ширине. Чаще всего за эталон принимается средняя ширина символа "0" (ноль). Это означает, что значение ШиринаКолонки = 10 создаст колонку, в которую поместится примерно 10 символов стандартного шрифта. Этот метод менее точен для построения макетов с точностью до миллиметра, так как реальная ширина будет зависеть от используемого шрифта.

Из-за этой разницы в единицах измерения для создания "квадратной" ячейки нельзя просто задать одинаковые значения для ВысотаСтроки и ШиринаКолонки.

Дополнительные возможности и советы

Платформа предоставляет и другие полезные свойства для управления размерами.

Автоматический подбор размера

Если вам не нужен фиксированный размер, а важно, чтобы весь текст поместился в ячейку, используйте свойства автоматического подбора.

АвтоВысотаСтроки — если установить это свойство в Истина для области, высота строки будет автоматически увеличена так, чтобы вместить все строки текста в ячейках этой строки.


// Устанавливаем автоматический подбор высоты для всей 5-й строки
ТабДок.Область(5, 1, 5, ТабДок.ШиринаТаблицы).АвтоВысотаСтроки = Истина;

АвтоШиринаКолонки — аналогично, установка этого свойства в Истина заставит колонку расшириться, чтобы вместить самое длинное значение в этой колонке.


// Устанавливаем автоматический подбор ширины для 2-й колонки
ТабДок.Область(1, 2, ТабДок.ВысотаТаблицы, 2).АвтоШиринаКолонки = Истина;

Важно: свойства автоподбора могут замедлять формирование очень больших табличных документов, так как требуют дополнительных вычислений макета.

Как получить текущий размер?

Иногда требуется не установить, а получить текущий размер строки или колонки в тех же самых единицах (пунктах и символах). Это делается чтением тех же свойств.


ТекущаяВысота = ТабДок.Область(5, 2).ВысотаСтроки;
ТекущаяШирина = ТабДок.Область(5, 2).ШиринаКолонки;

Сообщить("Высота строки 5: " + ТекущаяВысота + " пт");
Сообщить("Ширина колонки 2: " + ТекущаяШирина + " символов");

Таким образом, для управления размерами ячеек в ТабличномДокументе 1С необходимо работать со свойствами ВысотаСтроки и ШиринаКолонки, всегда помня о разных единицах их измерения. Это позволит гибко настраивать внешний вид печатных форм и отчетов под любые требования. Для внедрения таких изменений без доработки типовой конфигурации можно использовать инструмент для постобработки печатных форм на базе БСП.

← На главную