Имя: Пароль:
1C
1С v8
сделать ширину колонки в размер текста в ее заголовке, обычные формы
0 novichok79
 
05.06.18
16:24
доброго времени суток, уважаемые коллеги.
есть поехавший клиент с неадекватной хотелкой. так вот, он интересуется - есть ли возможность, обозначенная в сабже в табличном поле на обычной форме? я предполагаю, что нет. а как думаете вы? шрифт заголовка не моноширинный. заранее благодарю за помощь.
1 novichok79
 
05.06.18
16:31
знает только Нуралиев?
2 МихаилМ
 
05.06.18
16:44
сайт avb закрылся . но идея такая: рассчитывать ширину (и высоту) по заранее составленной базе данных ширин и высот символов.
3 novichok79
 
05.06.18
16:48
(2) да... тяжелый вариант. а чем измерять ширину в таком случае? в 1С нету метода УстановитьРазмерПоЗаголовкамКолонок?
4 novichok79
 
05.06.18
16:51
КолонкаТаблицыЗначений.Ширина (ValueTableColumn.Width)
КолонкаТаблицыЗначений (ValueTableColumn)
Ширина (Width)
Использование:
Чтение и запись.
Описание:
Тип: Число.
Содержит ширину колонки в символах. Используется при визуальном отображении таблицы значений.

В СИМВОЛАХ, КАРЛ!!!! ЧТО ЭТО ЗА ЧЕРТОВЩИНА??!!!!
5 novichok79
 
05.06.18
16:53
есть еще вариант - создать табличный документ, правда не знаю как там автоматом рассчитать ширину колонок программно. по-моему тоже никак. ну допустим рассчитали ширину, она в пунктах, а теперь, внимание - как пункты перевести в СИМВОЛЫ?
IT IS IMPOSSIBRU!
6 Вафель
 
05.06.18
16:55
давным давно такое было раеализавно для построителя
7 Вафель
 
05.06.18
16:55
нужно старый релиз поднять и посмотреть как это так
8 Вафель
 
05.06.18
16:56
хотя нет, это для табличного документа было
9 novichok79
 
05.06.18
16:57
(6) да, выполнение универсального отчета, это тоже идея. но там как раз считается ширина для табличного документа, а тут дерево значений на форме, да еще и динамически заполняемое, с разным количеством колонок в зависимости от количества заказов покупателей и заказов поставщику.
10 Вафель
 
05.06.18
16:58

Колонка.Ширина = СтрДлина(Колонка.Заголовок)
11 DrShad
 
05.06.18
16:59
12 novichok79
 
05.06.18
17:00
(11) то есть "символ" из дефиниции свойства "Ширина" табличного поля в справке = "пункт"? так?
13 DrShad
 
05.06.18
17:01
(12) тебе нужен "пункт (компьютерный)"
14 DrShad
 
05.06.18
17:03
через таб док можно легко вычислить ширину каждого символа из алфавита
ну а дальше уже дело техники
15 DrShad
 
05.06.18
17:03
хотя задание конечно странное
16 novichok79
 
05.06.18
17:26
Ширина колонки табличного поля измеряется в символах. Символы это пункты?
17 novichok79
 
06.06.18
08:21
собственно, продолжаем нераскрытую тему. зазываю знатоков 1С и специалистов по удалению гланд ректально в 1С в эту тему.
18 МихаилМ
 
06.06.18
08:40
(16) нет . но в заголовке тз обычной формы используется моноширинный шрифт.
19 novichok79
 
06.06.18
08:47
Осталось узнать сколько пунктов занимает 1 символ моноширинного шрифта. Как же это сделать новичку в 1с программировании?
20 mistеr
 
06.06.18
09:57
Идея такая. Помещаем текст заголовка в ячейку табдока с РазмещениеТекста=Переносить. Меняем ширину ячейки (она задается в символах), определяем момент, когда текст начинает/перестает переноситься. Выставляем эту ширину в колонке.
21 novichok79
 
06.06.18
10:04
(20) по-моему ширина ячейки в пунктах в табл. документе. и по-моему если переносится текст, то надо устанавливать свойство строки автовысота, которое не дает узнать точную высоту ячейки в пунктах в данный момент. только если невидимую линию сделать в ячейке, где текст, и при изменении ширины ячейки проверять когда высота или длина линии изменится.
22 hhhh
 
06.06.18
10:12
(21) если моно ширинный, то пункты нахрен не нужны, делайте в символах.
23 novichok79
 
06.06.18
10:20
(21) а как узнать что шрифт в заголовке колонки на форме именно моноширинный?
24 novichok79
 
06.06.18
10:20
(23) --> (22)
25 Вафель
 
06.06.18
10:23
(23) сделать его таким
26 novichok79
 
06.06.18
10:25
(25) ну... это упрощает задачу.
27 mistеr
 
06.06.18
10:42
(21) ОбластьЯчеекТабличногоДокумента (SpreadsheetDocumentRange)
ШиринаКолонки (ColumnWidth)
Использование:

Чтение и запись.
Описание:

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

-------------------------------

Определить перенос можно, разместив рисунок по границам ячейки (метод Расположить()), и считав его высоту (в миллиметрах).
28 novichok79
 
06.06.18
10:44
(27) я линии использовал, когда надо было в макете высоту определить. рисунок в этом случае подойдет, т. к. макет не на печать выводится.
29 novichok79
 
06.06.18
10:44
(27) ну и вопрос тогда. what is "средний символ шрифта", и сколько это в миллиметрах или пунктах?
30 mistеr
 
06.06.18
11:39
(29) Неважно, сколько именно. Главное, что это те же "символы", в которых устанавливается ширина колонки.

Но если интересно, можно узнать в миллиметрах через рисунок.
31 novichok79
 
07.06.18
10:35
ахахха, ну что знатоки и знатушечки 1С, найдено довольно рукожопное решение:
сделал поле HTML документа, там на JS скрипт, который использует тэг canvas HTML5, а конкретно его функцию measureText() для измерения каждого символа шрифта. это дело я сохранил в соответствие, по которому определяет размер среднего символа конкретного шрифта в пикселях.
затем размер текста надписи посимвольно вычисляется в пикселях по забитому соответствию, полученный результат делится на размер среднего символа и таким образом имеем количество средних символов, которое необходимо для текста надписи. шах и мат, Борис Нуралиев! и главное - оно работает!
32 novichok79
 
07.06.18
10:37
работает не так медленно как ожидалось... мы сделаем ход конем, чтобы не покупать большие мониторы манагерам (с) из кодекса нищеброда.
33 Вафель
 
07.06.18
10:46
(31) может проще было таблицу сразу на хтмл нарисовать?
34 novichok79
 
07.06.18
10:47
(33) дык ведь надо знать ширину каждого символа, чтобы вычислить сферический "средний символ".
35 novichok79
 
07.06.18
10:50
(33) дерево значений на хтмл? интересно...
Программист всегда исправляет последнюю ошибку.