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

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Проанализируем ситуацию, опираясь на объектную модель печатной формы: у нас есть объект ТабличныйДокумент, который выводится на форму. Наша цель — управлять его геометрией, а именно, высотой строк и шириной колонок, игнорируя стандартные механизмы автоподбора.

Основной принцип: отключаем автоматизацию, затем задаем размеры

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

Рассмотрим эти свойства подробнее:

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

Допустим, нам нужно, чтобы во всем табличном документе все строки имели фиксированную высоту. Это критически важно, если вы используете генерацию QR и штрихкодов без библиотек и шрифтов, где размеры графических элементов должны быть строго выверены.


// Получаем или создаем наш табличный документ
ТабДок = Новый ТабличныйДокумент;

// ...здесь идет код по заполнению документа данными...

// ШАГ 1: Отключаем автоматический подбор размеров
ТабДок.АвтоВысотаСтроки = Ложь;
ТабДок.АвтоШиринаКолонки = Ложь;

// ШАГ 2: Устанавливаем фиксированные значения
ТабДок.ВысотаСтроки = 20;
ТабДок.ШиринаКолонки = 15;

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

Работа с конкретными областями, строками и колонками

Часто требуется задать разные размеры для разных частей документа. Например, для шапки таблицы одни размеры, а для строк с данными — другие.

  1. Установка высоты для конкретной строки:

    Допустим, нам нужно задать высоту только для пятой строки.

    
    // Получаем область, соответствующую пятой строке
    ОбластьСтроки = ТабДок.Область(5, , 5, );
    
    // Отключаем автоподбор и задаем высоту
    ОбластьСтроки.АвтоВысотаСтроки = Ложь;
    ОбластьСтроки.ВысотаСтроки = 50; 
    
  2. Установка ширины для конкретной колонки:

    Аналогично поступим со второй колонкой.

    
    // Получаем область, соответствующую второй колонке (B)
    ОбластьКолонки = ТабДок.Область(, 2, , 2);
    
    // Отключаем автоподбор и задаем ширину
    ОбластьКолонки.АвтоШиринаКолонки = Ложь;
    ОбластьКолонки.ШиринаКолонки = 30;
    
  3. Работа с именованной областью:

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

Что насчет масштаба? Свойства АвтоМасштаб и Масштаб

Иногда разработчики путают управление размерами ячеек с управлением масштабом отображения документа. Разберем, в чем разница.

Итоги и рекомендации

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

  1. Определите, к какой части документа нужно применить изменения (весь документ, строка, колонка или диапазон).
  2. Для выбранной области установите свойства АвтоВысотаСтроки и/или АвтоШиринаКолонки в значение Ложь.
  3. После отключения автоматизации установите нужные числовые значения.

Этот подход гарантирует, что ваша печатная форма или отчет будут выглядеть именно так, как вы задумали, без непредвиденных "сюрпризов" от механизма автоматического подбора размеров платформы 1С.

← На главную