Имя: Пароль:
1C
 
Автоматическое изменение размера шрифта в поле отчета
0 alexsergeevatmista
 
11.12.25
09:21
Есть внешний отчет, в виде таблицы. Есть строка "номенклатура". Клиент хочет, чтобы у неё была фиксированная ширина, и, если название номенклатуры не влезает в эту ширину, то делать не перенос, а уменьшение размера шрифта. Я даже не знаю, реально ли это, и, если реально, то с какой стороны подступиться к этой задаче?
1 Fish
 
гуру
11.12.25
09:24
Теоретически реально постобработкой табдокумента, но, как по мне, слишком геморройно. Я бы послал с такой хотелкой.
2 Ногаминебить
 
11.12.25
09:24
Сделать 2 строки макета с разным размером шрифта и в зависимости от длины текста в поле выводить одну из них. :)
3 Fish
 
гуру
11.12.25
09:25
+(1) Прикольно будет, если наименование очень длинное, то шрифт получится нечитаемым :)))
4 formista2000
 
11.12.25
09:26
А если ОтображатьЗаголовки = Истина и позволить пользователю растягивать нужный слобец?
5 alexsergeevatmista
 
11.12.25
09:34
(1) А как в теории? Задать имя области в макете поля и как-то  менять шрифт в зависимости от того, помещается ли текст в ширину? Тогда нужен какой-то алгоритм, чтобы узнать, что текст помещается. На мой взгляд это довольно нетривиально.
(2) Если честно, звучит немного саркастично :)
(4) Это позволено. Шрифт в полях от этого не поменяется.
6 Волшебник
 
11.12.25
09:36
(0) Пошли они нафиг
7 Kigo_Kigo
 
11.12.25
09:38
Глаза нахер сломаешь такой отчет читать
8 MWWRuza
 
гуру
11.12.25
09:48
Я нечто подобное в семерке для ценников делал когда-то. Работало, но, как-то не прижилось.
9 Shurjk
 
11.12.25
09:49
(0) Если отчет на СКД, то можно условным оформлением решить. Но поддерживаю мнение большинства - "пошли они нахер", хотя бы потому, что отчет с разными шрифтами будет крайне похабно выглядеть.
10 Ногаминебить
 
11.12.25
10:04
(5) Ну в языке запросов есть ДлинаСтроки. Теоретически можно рыть в эту сторону. Вопрос целесообразности оставим за скобками. :)
11 DiMel_77
 
11.12.25
10:10
(0) Задача довольно сложная, вот пример реализации похожей задачи https://infostart.ru/1c/tools/123769/. В случае если используемый шрифт не моноширинный, то оптимального алгоритма вы не найдете. Только проверять ширину (или высоту) выводимой области.
12 arsik
 
гуру
11.12.25
10:12
(0) А не проще высоту строки менять. Автоматически указать, он сам нужную высоту подберет
13 Волшебник
 
11.12.25
10:13
(0) Сделайте моноширинный шрифт, куда выводите реквизит НаименованиеФиксированное
14 alexsergeevatmista
 
11.12.25
10:14
(12) Как высота строки повлияет на фиксированную ширину строки? Не понял Вашу идею.
15 arsik
 
гуру
11.12.25
10:19
(14) Ну типа так
PS: Извиняюсь. Перенос не подходит. Прочитал мимо строк (0)
16 alexsergeevatmista
 
11.12.25
10:29
(13) Попробовал, такой шрифт, конечно, слегка ужимается по ширине, но размер шрифта не меняет. Спасибо.
17 Злопчинский
 
11.12.25
14:43
решаемо же. вывести строку в макет, где поля заданы так, что помещается ровно она строка. Вывести в макет - если количество страниц = 1 - строка влезла, если количество страниц > 1 - строка не влезла, уменьшить шрифт строки, повторить: вывести строку в макет..."
когда строка влезла в макет на 1 стр - вывести в чистовой макет.
все.
18 timurhv
 
11.12.25
14:48
(17) Сколько ждать надо на больших объемах, вроде это все небыстрая операция, по крайней мере на 8.2 с большими данными долго обрабатывалось.
19 АгентБезопасной Нацио
 
11.12.25
15:20
(18)
Идиотские задачи требуют идиотских решений
20 shuhard
 
11.12.25
14:58
(18) можно закэшировать, т.е. один раз определить приемлемый размер шритфа и хранить вместе с номенклатурой
21 Злопчинский
 
11.12.25
15:16
(18) Согласен. но тут надо в консерватории что-то менять.
и вряд ли в сабже на большой объем.
Обычно это какие-нибудь ценники или формы фиксированные.
22 Злопчинский
 
11.12.25
15:17
(20) и с "ИД" отчета где это применяться должно.
23 Волшебник
 
11.12.25
15:20
(19) 🔥 это в мемы!
24 Fedor-1971
 
11.12.25
15:20
(20) Не вариант, т.к. отчётов может быть несколько и с разной шириной колонки

(0) ставим моноширинный шрифт в ячейку, выясняем руками сколько символов лезет в ячейку при разных читаемых размерах шрифта, дальше проверяем длину строки и выставляем нужный размер шрифта

Останется проблема "слишком длинной строки"- тут либо обрезать, либо вывести надпись "Не лызе батьку"
25 shuhard
 
11.12.25
15:22
(22)
(24)
ID отчёта, ширина поля(если юзер может менять), рекомендованный размер шрифта

нет необходимости считать на "лету"
26 Fedor-1971
 
11.12.25
15:23
(25) останется вопрос "Кто будет рулить?"
27 shuhard
 
11.12.25
15:25
(26) ну а кто тебе индексы полнотекстовые обновляет ?
28 Fish
 
гуру
11.12.25
15:33
(5) "нужен какой-то алгоритм, чтобы узнать, что текст помещается. " - Как вариант - Автоперенос строки и контроль высоты строки. Если высота строки стандартная - значит, поместился. Если высота больше - значит, не влезло. Другой вариант - моноширинный шрифт и считать длину текста по количеству символов.
Но я и написал, что алгоритм получится слишком геморройным. Проще послать.
29 Мультук
 
гуру
11.12.25
15:37
(0)
Я бы начал с

google:
windows api font width true type string

Закончил бы советом из (1)
30 СвинТуз
 
11.12.25
18:39
(0)
Не всегда можно определить, поместится ли количество
символов в указанном поле по ширине.
Зависит от шрифта.
Он должен быть определенного типа.
Times new Roman Cyr, например, не позволяет судить о длине строки на себе по количеству символов.
31 СвинТуз
 
11.12.25
15:59
Моноширинные шрифты.
или как в (29) заметили.
32 СвинТуз
 
11.12.25
16:03
Сам отчет СКД или просто таблица заполняется?
33 СвинТуз
 
11.12.25
16:05
Если СКД, то или постобработка или условное оформление.
Если классика, при выводе устанавливать размер кегли шрифта.
34 alexsergeevatmista
 
11.12.25
16:06
(32) Скд. Я так понимаю, условное оформление в таком случае только программно делается?
35 СвинТуз
 
11.12.25
16:08
Можно моноширинный шрифт поставить.
Посчитать максимальную длину строки в колонке.
Потом установить длину столбца + Автоформат.
36 СвинТуз
 
11.12.25
16:12
(34)
Если скушает стрДлина(ВашеПоле) в условии,
то прям так.

Если не скушает, то
Выбор когда ДЛИНАСТРОКИ(<Строка>) ...
прям в отборе или доп. поле.

Учу плохому. Дешево.
37 СвинТуз
 
11.12.25
16:13
Макет поля с курьером
38 СвинТуз
 
11.12.25
16:14
Извращений много.
Главное хотеть.
39 СвинТуз
 
11.12.25
16:15
Она вроде как даже должна функции глобальных модулей кушать.
40 СвинТуз
 
11.12.25
16:17
длина строки меряется последовательным набором
символов "12345678901234567890123 ..."
41 Fish
 
гуру
11.12.25
16:20
(35) Тут, имхо, сложнее алгоритм. Допустим, в ширину колонки влезает 10 символов шрифта размером 10. И 12 символов размером 8.
Тогда получим, что при длине наименовании <= 10 - шрифт не меняем.
Если длина наименования - от 11 до 12, то размер ставим 8.
Если больше - то ещё меньше. И т.д., пока шрифт остаётся читаемым.
42 СвинТуз
 
11.12.25
16:22
(41)
Главное хотеть.
43 СвинТуз
 
11.12.25
16:23
(41)
Если сделать в запросе вычисляемое поле,
то все в условном оформлении станет проще.
44 СвинТуз
 
11.12.25
16:27
Можно не мелочиться.
Постобработкой раздвинуть столбец и автоформат выставить.
В этом случае размер шрифта не меняется
и видимо поведение будет линейное.
Размер поля будет константа + коэф*(максимальная длина строки).
45 Fish
 
гуру
11.12.25
16:37
(44) Я так понял, что автору менять ширину колонки нельзя. Это как раз самое простое, я как-то выводил на одну страницу 12 таблиц с разным кол-вом колонок - как раз там менял ширину колонок, чтобы все таблицы получились одинаковой ширины.
46 СвинТуз
 
11.12.25
16:39
Ну в общем. самое простое.
В условном оформлении есть опция.
"Растягивать по горизонтали".

Для меня все кончилось ))))
Не интересно.
47 СвинТуз
 
11.12.25
16:58
(45)
Менять шрифт (в каких пределах?) в одной таблице и одном столбце можно, а растягивать нельзя потому что на лист не поместится?
48 Fish
 
гуру
11.12.25
17:12
(47) Это надо у ТС спрашивать. В (0) же написано "Клиент хочет, чтобы у неё была фиксированная ширина"