Имя: Пароль:
1C
1С v8
Печать текста в фиксированном месте
0 Iori
 
26.01.20
16:37
Появилась задача: в низу счета нужно напечатать адрес клиента, который на формате А4 должен быть в фиксированном месте, чтобы при укладке в конверт просматривался через окошко. Какие есть для этого методы, так как считать строки в табличной части, которые к тому же могут расширяться в  связи с переносом, не очень удобно?
1 ДенисЧ
 
26.01.20
16:39
В ворд выводи
2 acht
 
26.01.20
16:43
(0) ТабличныйДокумент.ПроверитьВывод
Код пиши сам.
3 Iori
 
26.01.20
17:00
(1) А что даст вывод в ворд? Ручной коректировкой свободного места? Если так, то не подходит. Здесь идет пакетная печать документов, сразу сотни штук... Абонентская рассылка счетов...
4 Iori
 
26.01.20
17:03
(2) Методом поверитьвывод, я так понял, постепенно забирать по строке свободного места, пока не поместится на странице? Но тогда табдокумент формировать несколько раз нужно. Не очень медленно работать будет?
5 Iori
 
26.01.20
17:07
В любом случае, я так понял, принудительно установить координаты для печати области нет. А нижний колонтитул для этих целей не подойтет? Он имеет ограничения по высоте?
6 Фрэнки
 
26.01.20
17:11
КолонтитулТабличногоДокумента (SpreadsheetDocumentHeaderFooter)

насколько я пробовал, то ограничений по высоте не было. По крайней мере, тот вывод, что нужен был мне в колонтитул вписывался.
7 acht
 
26.01.20
17:22
(4) Или добавлять, пока не перестанет помещаться. Перестал помещаться - удаляешь выведнную область (см. также на результат вызова .Вывести)

(5) Нет никаких координат. Табличный документ, он вообще описывает абстракцию, которая приобретает физический смысл только при применении характеристик и параметров текущего принтера. Вот методы ПроверитьВывод и ПроверитьПрисоединение это и делают.
8 acht
 
26.01.20
17:31
Хотя, можно, наверно еще как-нибудь поизвращаться через картинку, там можно получить ее будущий фактический размер в миллиметрах. ЕМНИП, так в типовых при печати штрихкода делали, брали картинку с известным размером 100 на 100 пикселей, добавляли и смотрели размер в миллиметрах. Получали, по сути, разрешение принтера.

Ну или вообще запечь адрес на картинке и поставить ее фоном (:
9 acht
 
26.01.20
17:41
О, я в (7) про удаление невлезающего таки наврал. Там все проще - https://its.1c.ru/db/metod8dev#content:2226:hdoc
10 Garykom
 
гуру
26.01.20
17:45
(0) Задача нетривиальна если нужна точность до мм.
На каждом новом принтере и новом компе/операционке будет сбиваться.

Рекомендую сразу придумать механизм подстройки через параметры, чтобы юзер сам попробовал и если не попадает в его случае сочетания принтер/комп/операционка/платформа 1С то сам двигал как надо и менял размеры окна печати.
11 Iori
 
11.02.20
17:23
Спасибо всем за участие и соответственно за помощь (лучше позже, чем никогда). Остановился на методе ТабДок.ПроверитьВывод(). Первые абонентские рассылки сделаны, адрес в окошке "держит" нормально. Хотя были замечены странности после применения этого метода. Например, ТабДок.Напечатать() и ТабДок.Показать() работают правильно. Но если сделать ТабДок.Показать() и интерактивно пустить после этого на печать, то печатает всего полстраницы текста, хотя на экране полная страница.
12 pechkin
 
11.02.20
17:51
сделай 1 печ форму с адресом. положение подгони на макете.
в чем проблема?