Точные значения единиц измерения размера ячеек в табличном документе в мм

23.01.25

Разработка - Математика и алгоритмы

С высокой точностью измеряем "попугаи", в которых измеряются размеры ячеек, и ищем их источники, чтобы узнать точные значения.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Точные значения единиц измерения размера ячеек в табличном документе в мм
.zip 38,64Kb
1
1 Скачать (1 SM) Купить за 1 850 руб.

Резюме:

  • По вертикали: 1 ед = в точности 0,3528 мм, стандартный типографский пункт Adobe
  • По горизонтали: 1 ед = в точности 5,25 пт или 1,8522 мм. Совпадает со средней шириной строчных букв шрифта Times New Roman, 10 pt

Известно, что 1С измеряет размеры ячеек табличного документа в неких "попугаях", размер которых ни в справке, ни в ИТС не документирован. Синтакс-помощник говорит следующее:

ОбластьЯчеекТабличногоДокумента.ВысотаСтроки:

Содержит высоту строк в области (в пунктах).

 

ОбластьЯчеекТабличногоДокумента.ШиринаКолонки:

Содержит ширину колонок в области (в так называемых средних символах шрифта).

При этом, согласно результатам исследования в статье Расчет размера ячейки Высота и Ширина в (мм) в редакторе шаблонов (и по результатам собственной проверки), размер горизонтальной единицы от используемого в ячейке шрифта не зависит — т.е. имеется в виду не конкретный используемый шрифт, а некий "эталонный". 1С, вероятно, взяли за основу какой-то конкретный шрифт, когда вводили эти единицы.

 

Измеряем значения с хорошей точностью

Создаем (Ctrl-N в конфигураторе) табличный документ, задаем первой ячейке рамку и подбираем ей размеры побольше, но чуть меньше листа А4, чтобы влезло с учетом полей (у кого есть крупноформатный принтер и более длинная стандартизированная/поверенная линейка, может измерить с большей точностью). Печатаем без масштабирования и с минимальными полями, измеряем размеры линейкой, у которой доподлинно известна точность.

Для подбора размеров ячейки я взял приблизительные значения единиц измерения из поста MrUnnamed и задал размеры ШхВ 151х567.

 

рамка 151г-567в

 

Длина измерялась деревянной линейкой 30 см по ГОСТ 17435-72(ссылка на "Гарант"; версии, найденные в свободном доступе, содержат изменения отдельно от основного текста, так что их легко упустить из виду), тип "ЛП" в терминах ГОСТа. Согласно этому ГОСТу, погрешность ее шкалы ±0,26 мм. Считывание показаний дает еще ≈±0,25 мм (без специальной подготовки на глаз можно считать с точностью до половины деления). Т.е. погрешность измерения можно считать равной ±0,5 мм. При этом, т.к. мы измеряем методом рядов, погрешность измерения единицы будет меньше во столько раз, сколько у нас отложено единиц. Предполагая по опыту, что граница между ячейками ТД в 1С рисуется именно по границе, а не внутри одной из ячеек, при прикладывании линейки и считывании показаний ориентируемся на середину напечатанных линий.

Результаты:

  • По горизонтали: (279,5 ± 0,5) мм / 151 = (1,851 ± 0,003) мм
  • по вертикали: (200 ± 0,5) мм / 567 = (0,3527 ± 0,0008) мм

 

Ищем источник для вертикальной единицы

СП говорит, что это "пункт", что, скорее всего, подразумевает типографский пункт. Согласно статье Википедии по ссылке, они бывают:

  • пункт Дидо 0,376 мм — в европейской и российской полиграфической традиции, стандарт Таможенного союза
  • пункт Хоукса 0,3514 мм — в американской и английской полиграфической традиции
  • пункт Adobe 0,3528 мм — определен в стандарте Adobe PostScript (первая редакция — 1982 год), стандарт де-факто для систем компьютерной верстки
  • исторические пункт Фурнье 0,3473 мм, советский метрический пункт 0,375 мм.

Как видно, измеренное значение из всех соответствует только пункту Adobe. Учитывая также, что 1С работает в смежной отрасли (также является компьютерной системой, выполняющей среди прочего подготовку печатных материалов), можно с хорошей уверенностью считать, что это он.

С учетом этого, используя узнанное точное значение пункта, получаем, что

  • измеренное значение горизонтальной единицы равно (1,851 ± 0,003) мм / 0,3528 = (5,247 ± 0,009) пт

 

Ищем источник для горизонтальной единицы

СП сообщает, что это "средний символ шрифта", что может означать что угодно.

Так что для начала ознакомимся с существующими в полиграфии практиками определения ширины шрифта:

  • ширина буквы m или n (устаревшая западная традиция)
  • ширина длинного (—) или короткого (–) тире (устаревшая российская традиция)
  • ширина шпации:
    • круглая шпация (ширина равна высоте, т.е. высоте шрифта)
    • полукруглая шпация (половина высоты шрифта)
    • тонкая шпация (1/5 или 1/6 высоты шрифта)
    • прочие шпации (целое число типографских пунктов)

Я измерил эти значения для шрифтов Arial (используется в 1С по умолчанию) и Times New Roman (был стандартным в MS Word в 90-е, когда создавалась 1С), и затем пересчитал для разных размеров: т.к. это пропорциональные шрифты (конкретно в случае TrueType, очертания глифов задаются кривыми второго порядка), ширина при изменении размера меняется во столько же раз, во сколько и высота.
(Если быть совсем точным, сначала я посчитал их для Arial, 8 (шрифт 1С для ТД по умолчанию) и, не обнаружив совпадений, расширил область поиска.)
(Последние 2 на самом деле не измерял, т.к. и так ясно, что совпадения не будет: 5,25 -- это не целое число пунктов и не равно ни 1/5, ни 1/6 от размеров шрифтов, используемых по умолчанию.)

Как видно из таблицы результатов, ни одного совпадения.

Попробуем предположить, что же еще может подразумеваться под "средним символом шрифта".

  • Цель определения единицы таким образом, скорее всего — выразить приблизительно, сколько "средних" символов влезет в ячейку
  • Длинный текст — информация, для которой ширина ячейки, как правило, и актуальна — содержит, в основном, строчные буквы
    • из которых для 1С актуальны, главным образом, буквы русского алфавита (особенно в момент, когда она создавалась)
  • но таблицы в 1С содержат, в основном, числа (возможно, дробные)

Так что приходят на ум следующие определения:

  • средняя ширина строчной (русской) буквы в шрифте
  • средневзвешенная ширина строчной буквы в шрифте с учетом частоты их появления в русскоязычном тексте
  • средняя ширина цифры в шрифте
  • средняя ширина цифры в шрифте с учетом точки/запятой
    • Не измерялась. Это плохое определение, т.к. точка всегда одна на число, т.е. ее вклад в среднюю ширину непостоянен
  • средняя ширина цифры в шрифте с учетом добавления разделителей групп цифр по умолчанию (через каждые 3);

Всё это было измерено, также способом рядов, и вычислено. Для средневзвешенного значения все буквы алфавита печатал по 10 шт. шрифтом 48 pt, другие случаи печатал цепочкой по многу раз шрифтом 12 pt; где не влезало на строку, считал, сколько влезло (с помощью копипасты в Notepad++) и измерял влезшее.
(Средневзвешенную ширину также корректировал с учетом того, что при измерении длин отдельных букв алфавита я не включал межбуквенный интервал после последней буквы. Корректировал это, добавляя 1/10 измеренной длины межбуквенного интервала. Не совпало ни так, ни так.
Ширину цифр с учетом nbsp для Times New Roman не проверял, т.к. и без nbsp уже получилось слишком мало.)

 

таблица результатов

 

Из всех ~50 исследованных случаев (30 представленных в таблице + отброшенные) -- только одно совпадение! Средняя ширина строчной буквы для Times New Roman, 10 pt! Измеренное значение: (1,852 ± 0,006) мм . Может, старожилы подскажут, использовала ли 1С этот шрифт когда-нибудь по умолчанию.

Учитывая, что это значение выражается "красивым" числом пунктов 5,25 пт, а размер пункта уже зашит в системе -- для расчетов 1С, скорее всего, использует именно этот коэффициент, а не "сырое" значение в мм.

табличный_документ размер ячейки единица попугаи пункт

См. также

Математика и алгоритмы Программист Платформа 1C v8.2 1C:Бухгалтерия Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    4921    stopa85    12    

39

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    9912    user1959478    54    

37

Математика и алгоритмы Разное Платформа 1С v8.3 1C:Бухгалтерия Россия Абонемент ($m)

Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.

2 стартмани

29.09.2023    4768    maksa2005    8    

26

Математика и алгоритмы Инструментарий разработчика Программист Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

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

1 стартмани

09.06.2023    12472    8    SpaceOfMyHead    20    

62

Математика и алгоритмы Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья.

03.04.2023    6019    RustIG    9    

25

Механизмы платформы 1С Математика и алгоритмы Программист Платформа 1С v8.3 Россия Бесплатно (free)

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

23.11.2022    5127    gzharkoj    14    

25

Математика и алгоритмы Программист Платформа 1С v8.3 Россия Абонемент ($m)

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

1 стартмани

21.03.2022    9398    7    kalyaka    11    

44
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. d4rkmesa 23.01.25 13:45 Сейчас в теме
Хорошее исследование. Для себя в свое время сделал расчет через костыль с накидыванием картинки в ячейку https://infostart.ru/1c/tools/123769/ (если не ошибаюсь, эта публикация + комменты из нее).
native-api; +1 Ответить
2. starik-2005 3098 23.01.25 15:44 Сейчас в теме
Про средние символы шрифта было упомянуто и про ширину ячеек табличных частей форм. Но там два вида поведения: если у ячейки флаг растягивания по горизонтали, то отображение измеряется долями. Т.е. если в ячейке ширина 10, а таких ячеек три, то если они не растянуты, то эти 10 условных ширин символов. Если же растянуты, то все по 33,333% ширины займут.
3. native-api 18 27.01.25 11:05 Сейчас в теме
(2) Растягивание -- это уже масштабирование, т.е. дальнейшие преобразования, после определения исходных размеров по заданным числам.
Оставьте свое сообщение