При формировании печатных форм или отчетов в 1С часто возникает задача установить конкретные размеры ячеек, например, задать точную высоту и ширину в миллиметрах или других единицах. В отличие от текстовых редакторов вроде MS Word, где можно задать размер отдельной ячейке, в 1С объект ТабличныйДокумент устроен иначе. Разберемся, как управлять размерами и какие нюансы нужно учитывать.
Ключевое отличие ТабличногоДокумента 1С заключается в том, что у отдельной ячейки нет собственных свойств высоты и ширины. Ее видимые размеры полностью определяются размерами строки и колонки, на пересечении которых она находится.
Таким образом, чтобы изменить размер ячейки, нам необходимо изменять программно свойства строки и колонки:
ВысотаСтроки — свойство, отвечающее за высоту всей строки таблицы.ШиринаКолонки — свойство, отвечающее за ширину всей колонки таблицы.Если вы объединяете несколько ячеек с помощью метода Присоединить(), то итоговая область будет иметь высоту, равную сумме высот всех объединенных строк, и ширину, равную сумме ширин всех объединенных колонок.
Рассмотрим, как программно установить высоту для определенной строки и ширину для колонки. Для этого нужно получить объект области (ячейки) и обратиться к его свойствам ВысотаСтроки и ШиринаКолонки.
Предположим, у нас есть сформированный табличный документ в переменной ТабДок, и мы хотим установить для ячейки в 5-й строке и 2-й колонке высоту 20 единиц и ширину 15 единиц.
// Предполагаем, что переменная ТабДок уже содержит объект ТабличныйДокумент
// ТабДок = Новый ТабличныйДокумент;
// Определяем номера нужной строки и колонки
НомерСтроки = 5;
НомерКолонки = 2;
// Получаем область конкретной ячейки
ОбластьЯчейки = ТабДок.Область(НомерСтроки, НомерКолонки);
// Устанавливаем высоту для всей 5-й строки
ОбластьЯчейки.ВысотаСтроки = 20;
// Устанавливаем ширину для всей 2-й колонки
ОбластьЯчейки.ШиринаКолонки = 15;
Важный момент: хотя мы обращаемся к свойствам через конкретную ячейку (ОбластьЯчейки), изменения применяются ко всей строке и всей колонке, которым эта ячейка принадлежит. Все остальные ячейки в 5-й строке также станут высотой 20, а все ячейки во 2-й колонке — шириной 15.
Один из самых частых вопросов — в каких единицах задаются высота и ширина? Здесь платформа 1С использует разные подходы, что крайне важно учитывать для точного позиционирования.
ВысотаСтроки измеряется в пунктах (points).
Пункт — это стандартная типографская единица, равная 1/72 дюйма. Такой подход позволяет добиться предсказуемого результата при печати, так как размер не зависит от разрешения экрана. Например, чтобы установить высоту строки примерно в 1 см, нужно перевести сантиметры в дюймы (1 см ≈ 0.3937 дюйма), а затем в пункты (0.3937 * 72 ≈ 28 пунктов).
ШиринаКолонки измеряется в условных единицах.
Эта единица равна количеству символов стандартного шрифта (шрифта, установленного для стиля "Обычный" в табличном документе), которые могут поместиться в ячейке по ширине. Чаще всего за эталон принимается средняя ширина символа "0" (ноль). Это означает, что значение ШиринаКолонки = 10 создаст колонку, в которую поместится примерно 10 символов стандартного шрифта. Этот метод менее точен для построения макетов с точностью до миллиметра, так как реальная ширина будет зависеть от используемого шрифта.
Из-за этой разницы в единицах измерения для создания "квадратной" ячейки нельзя просто задать одинаковые значения для ВысотаСтроки и ШиринаКолонки.
Платформа предоставляет и другие полезные свойства для управления размерами.
Если вам не нужен фиксированный размер, а важно, чтобы весь текст поместился в ячейку, используйте свойства автоматического подбора.
АвтоВысотаСтроки — если установить это свойство в Истина для области, высота строки будет автоматически увеличена так, чтобы вместить все строки текста в ячейках этой строки.
// Устанавливаем автоматический подбор высоты для всей 5-й строки
ТабДок.Область(5, 1, 5, ТабДок.ШиринаТаблицы).АвтоВысотаСтроки = Истина;
АвтоШиринаКолонки — аналогично, установка этого свойства в Истина заставит колонку расшириться, чтобы вместить самое длинное значение в этой колонке.
// Устанавливаем автоматический подбор ширины для 2-й колонки
ТабДок.Область(1, 2, ТабДок.ВысотаТаблицы, 2).АвтоШиринаКолонки = Истина;
Важно: свойства автоподбора могут замедлять формирование очень больших табличных документов, так как требуют дополнительных вычислений макета.
Иногда требуется не установить, а получить текущий размер строки или колонки в тех же самых единицах (пунктах и символах). Это делается чтением тех же свойств.
ТекущаяВысота = ТабДок.Область(5, 2).ВысотаСтроки;
ТекущаяШирина = ТабДок.Область(5, 2).ШиринаКолонки;
Сообщить("Высота строки 5: " + ТекущаяВысота + " пт");
Сообщить("Ширина колонки 2: " + ТекущаяШирина + " символов");
Таким образом, для управления размерами ячеек в ТабличномДокументе 1С необходимо работать со свойствами ВысотаСтроки и ШиринаКолонки, всегда помня о разных единицах их измерения. Это позволит гибко настраивать внешний вид печатных форм и отчетов под любые требования. Для внедрения таких изменений без доработки типовой конфигурации можно использовать инструмент для постобработки печатных форм на базе БСП.