В каких единицах измеряется ширина колонки и высота строки табличного документа 1С и как перевести их в миллиметры?

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

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

Ширина колонки: разбираемся с понятием «символ»

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

  1. Зависимость от шрифта: Единица ширины базируется на средней ширине символа шрифта, установленного в системе по умолчанию (обычно это Tahoma или Arial размером 8 или 10 пунктов).
  2. Аналогия с Excel: Логика 1С практически идентична Microsoft Excel. В этих программах ширина в «1 единицу» означает, что в ячейке должен поместиться ровно один символ «0» (ноль) стандартного шрифта.
  3. Нелинейность: Расчет не является чисто математическим делением. Существует внутренняя поправка на межсимвольные интервалы и поля (отступы) внутри ячейки.

Выясним причину, по которой макет может «разъезжаться» на разных компьютерах. Ширина колонок жестко привязана к экранному разрешению (DPI). При стандартном значении 96 DPI одна единица ширины примерно соответствует 8 пикселям. Если у пользователя установлен масштаб 125% или 150%, количество пикселей в одной «единице» пропорционально увеличивается, что может изменить визуальное представление документа.

Высота строки: типографские пункты

В отличие от ширины, высота строки измеряется в пунктах (pt). Это стандартная единица измерения в типографии, которая более предсказуема. Напомним основные соотношения:

При настройке высоты строк в конфигураторе или программно мы оперируем именно этими значениями. Если вам нужно установить высоту строки ровно в 1 сантиметр, необходимо выполнить расчет: 10 мм / 0,3528 ≈ 28,34 пункта.

Высокоточный метод пересчета через «Эталон»

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

Суть метода заключается в использовании специального макета-эталона. Мы создаем в макете графический объект (рисунок) с заранее известным размером в пикселях и программно считываем его размер, который 1С возвращает уже в миллиметрах в зависимости от текущего контекста вывода.

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


// Получаем макет, в котором заранее создан рисунок (квадрат) размером 100х100 пикселей
Эталон = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("Эталон");

// 1С возвращает Высоту рисунка в миллиметрах для текущего устройства вывода
// Делим это значение на количество пикселей (100), чтобы получить вес одного пикселя в мм
КоличествоМиллиметровВПикселе = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100;

// Теперь, зная сколько мм в одном пикселе, мы можем вычислить точную ширину колонки
// с учетом системных коэффициентов пересчета

Этот подход позволяет динамически подстраиваться под любое разрешение экрана или параметры печати конкретного принтера.

Программное управление шириной и автоматизация

Если нам необходимо программно изменить ширину колонки, мы используем свойство ШиринаКолонки. Разберем по шагам, как это работает:

  1. Значение можно задавать дробным числом, например, Область.ШиринаКолонки = 15.5;.
  2. Если мы хотим, чтобы колонка автоматически подстроилась под содержимое, можно использовать метод АвтоМаксимальнаяШирина. Однако помните, что этот метод эффективен только до вывода документа на экран или в файл.
  3. Для высокоточного позиционирования объектов поверх ячеек часто комбинируют свойства ШиринаКолонки и параметры объектов РисунокТабличногоДокумента.

Особенности сохранения в PDF и Excel

Проанализируем ситуацию, когда в макете 1С все выглядит идеально, а после сохранения в PDF или Excel границы «плывут». Это происходит из-за внутренней конвертации единиц 1С в форматы сторонних приложений. Алгоритмы расчета межсимвольных интервалов в 1С и, например, в Adobe PDF различаются на несколько процентов.

Практический совет: При разработке строгих печатных форм (счетов-фактур, накладных, ТОРГ-12) всегда закладывайте небольшой «запас» по ширине колонок (примерно 2-5%). Это гарантирует, что при конвертации текст не будет обрезан или перенесен на следующую строку из-за разницы в округлении единиц измерения.

Резюме по единицам измерения

Подведем итог нашему исследованию:

Ширина колонки: измеряется в условных символах (зависит от шрифта и DPI). 1 единица ≈ 8 пикселей при 96 DPI.

Высота строки: измеряется в пунктах. 1 пункт ≈ 0,35 мм. Это более стабильная величина.

Точный расчет: для получения идеальных размеров в миллиметрах используйте метод «Эталона» из БСП, измеряя физический размер графического объекта с фиксированным пиксельным размером.

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

← На главную