|
Обвести табличный документ в рамку | ☑ | ||
---|---|---|---|---|
0
Rizhij_Nikitos
31.05.23
✎
13:11
|
Задача предельно простая и если честно мне даже стыдно что я ничего не смог нагуглить и придумать ничего изящного за целый день работы над ней. У меня есть простая табличка, которая выводится в табличный документ.
ТабДок = Новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет"); Область = Макет.ПолучитьОбласть("Область"); Для Каждого Строка Из ТЗ Цикл ЗаполнитьЗначенияСвойство(Область, Строка); ТабДок.Вывести(Область); КонецЦикла; ТабДок.Показать(); Теперь я хочу добавить рамку толщиной 2, так, чтобы рамка была вровень с полями документа. В более статичных документах я просто сверстал их по размеру, подобрал масштаб и прорисовал рамку по областям в макете. В документе, когда я не знаю сколько будет строк, будут ли они одинаковой толщины (зависит от того переносится наименование и сколько раз 1, 2, может даже 3?), мне довольно трудно это сделать. Из решений я вижу сейчас подготовку нужного размера областей под разные размеры строк, ПроверитьВывод() для того чтобы отловить последнюю помещающуюся строку на странице, чтобы прорисовать рамку внизу и когда на последней странице остается свободное место добивать пустыми строками с рамкой слева/справа, пока опять же не увижу что не помещается и выводить "заключительную" область с границей снизу. Еще одна мысль, которая мне приходит - подготовить картинку, в которой есть рамка нужной толщины, посередине пустой цвет или белый, табличному документу поставить эту картинку на фон - вроде есть такой метод у него. В общем все что приходит в голову выглядит как оверинжениринг какой-то. Ощущение как будто есть какая-то волшебная таблетка, которая просто обведет мне ТабДок по полям нужной рамкой в 1 строчку, а я не знаю эту строчку. Прикладываю иллюстрацию, если не понятно чего я хочу :) https://clip2net.com/s/4iEcKPJ |
|||
1
Garykom
гуру
31.05.23
✎
13:14
|
(0) ПроверитьВывод()
|
|||
2
Garykom
гуру
31.05.23
✎
13:17
|
(0) У тебя легкое недопонимание что такое ТабДок и что такое принтер
Например при смене формата страницы с А4 на другой что происходит? ЗЫ Ты в курсе что разные принтеры (и даже с одни но с разными драйверами/ОС/софтом) выводят в целом по разному? Т.е. попасть в миллиметры бывает нереально |
|||
3
Rizhij_Nikitos
31.05.23
✎
13:19
|
(1) ага, а потом еще подбирать область нужной высоты, чтобы впихнуть ее в качестве последней на странице, чтобы рамка встала пиксель в пиксель в поля. Пока это в списке на оверинжиниринг - если тут никто не предложит чего-то изящного, пойду алгоритмизировать и изобретать.
(2) Я настраиваю заранее поля и масштаб, ориентацию страницы. На предпросмотре в остальных документах все выглядит отлично. Я попадаю в пиксель в поля. Я два дня для этого документы верстал и рисовал эти рамки. Но там документы статичные были. |
|||
4
НЕА123
31.05.23
✎
13:21
|
Колонтитул с черточками
? |
|||
5
Rizhij_Nikitos
31.05.23
✎
13:22
|
(4) интересно, пойду попробую пока)
|
|||
6
Garykom
гуру
31.05.23
✎
13:24
|
(3) ВысотаСтроки же
|
|||
7
Garykom
гуру
31.05.23
✎
13:26
|
(3) >чтобы рамка встала пиксель в пиксель в поля
Перечитай (2) и попробуй на другом принтере, да даже на том же самом принтере на другой бумаге более скользкой или шершавой запросто на пару миллиметров собьется |
|||
8
Garykom
гуру
31.05.23
✎
13:28
|
(7)+ Принтер с протяжкой бумаги это тебе не плоттер где лист неподвижен а только головка сверху ездит
В любой случае есть механический зацеп силой трения и проскальзывание |
|||
9
Rizhij_Nikitos
31.05.23
✎
13:32
|
(4) хотя как я настрою толщину черточек то... ну ладно, допустим в ASCII есть что-нибудь типа толстого подчеркивания
(7) да я понимаю что все это неидеально и вообще может развалиться. Но пока работает. И пока принтер только один и там все выглядит кошерно. |
|||
10
НЕА123
31.05.23
✎
13:46
|
(9)
черточки - попробовать псевдографику. может и шрифт есть кошерный для псевдографики. |
|||
11
CepeLLlka
31.05.23
✎
13:50
|
Закажите бумагу с рамками может сразу?
|
|||
12
RomanYS
31.05.23
✎
14:03
|
(9) Если принтер один и параметры печати постоянные можно использовать фоновую картинку, в т.ч. в формате SVG
|
|||
13
Garykom
гуру
31.05.23
✎
14:28
|
(12) Нафига так сложно?
Просто пустую строку в цикле с ПроверитьВывод() Затем для последней строки программно установить нужную высоту И взяв область всех ячеек (на странице) вокруг ни границу |
|||
14
RomanYS
31.05.23
✎
14:34
|
(13) просто к сведению. По факту- да фоновая картинка не выводится после окончания документа, значит в любом случае придётся выводить пустые строки по твоей методе
|
|||
15
Rizhij_Nikitos
31.05.23
✎
15:20
|
(13) а как получить область всех ячеек на странице? У меня были мысли обвести область ячеек, но я не придумал как получить область всех ячеек.
|
|||
16
RomanYS
31.05.23
✎
15:32
|
(15) выводить всё через ПроверитьВывод() и запоминать границы страниц
|
|||
17
Rizhij_Nikitos
31.05.23
✎
15:48
|
(16) это еще одна боль, так как документ является составным, ПроверитьВывод() криво отрабатывает, еще одной его проблемой является то, что он опрашивает принтеры каждый раз при обращении к нему, в результате 90% времени формирования макета занимает этот метод. Ну раз уж простых решений нет, я велосипежу. Считаю количество символов в строке, если вижу что строка будет перенесена, увеличиваю вдвое строку данных, считаю количество строк данных на странице и в конце пририсовываю нужного размера строку с рамочкой внизу. Будем считать вопрос закрытым.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |