Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ограничение области, выводимой на печать  (Прочитано 13021 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Marta_Li
Постоялец

by
Offline Offline

« : 01-12-2010 11:40 » 

Не получается ничего придумать. Может, кто что подкажет.
Макет состоит из нескольких строк с авто высотой, переносом. В результате ТабДок на печать может быть любого размера. А мне надо ограничить его по высоте, т.е., например, выводить только часть, что по высоте составляет пол страницы А4, остальное обрезать нафик. При этом не могу установить конкретную высоту строк, т.к. какая-то может быть пустой, какая-то довольно длинной...
Спасибо отозвавшимся.
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 01-12-2010 15:27 » 

ПроверитьВывод() поможет?
Записан
Marta_Li
Постоялец

by
Offline Offline

« Ответ #2 : 02-12-2010 07:21 » 

ПроверитьВывод() поможет?

Kivals, спасиб.
Но будет проверять заполнение страницы, установленной в настройках принтера (размер страницы; обычно это А4). А мне надо "отрубить" на определенной высоте (в см), т.к. дальше уже должна идти печать совсем другого (не страшно, что часть текста будет утеряна, уж сколько поместилось).
Вот думаю, надо как-то определить высоту полученных строк и на последнюю строку устанавливать высоту, как разницу между желаемой общей и суммой всех выведенных предшествующих... Не понял
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 02-12-2010 07:39 » 

Установи нижнее поле на половину страницы и проверяй Улыбаюсь
Записан
Marta_Li
Постоялец

by
Offline Offline

« Ответ #4 : 02-12-2010 08:20 » 

Установи нижнее поле на половину страницы и проверяй Улыбаюсь

Проверю, а потом? Печатать надо в результате формат А4. Только после 12 см на этом листе выводить другую информацию, а до этого из последней строки вырезать все не помещающееся.
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 02-12-2010 11:12 » 

Проверю, а потом?
А потом меняешь поле назад - и выводишь информацию из другой таблички...
Записан
Marta_Li
Постоялец

by
Offline Offline

« Ответ #6 : 02-12-2010 12:17 » 

Поняла, Kivals. Улыбаюсь)
Буду пробовать.
Спасибо большое за помощь.

Добавлено через 19 дней, 18 минут и 1 секунду:
Тогда ничего не получилось, как хотела. Сделала совсем другую печать, хоть она и не соответствовала заказанному.
Теперь посвободней стала. Вернулась к этой печати.
А все-таки - как?!
У меня конкретная высота таблицы, помещающаяся на бумажный бланк (12 см), дальше идет совсем другая печать, на которую не должна заходить первая таблица, она просто должна прерваться.
« Последнее редактирование: 21-12-2010 12:35 от Marta_Li » Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 22-12-2010 09:10 » 

Код:
ТабДокумент.ПолеСнизу = 17*10; // отступ снизу - (29-12)=17 см (для листа А4)
Область = Макет.ПолучитьОбласть("Строка");
Пока Данные.Получить() Цикл // Цикл по выборке данных
Область.Параметры.Представление = Данные.Значение;
Если НЕ ТабДокумент.ПроверитьВывод(Область) Тогда Прервать; КонецЕсли; // Не влазит - выходим из цикла
ТабДокумент.Вывести(Область);
КонецЦикла;
ТабДокумент.ПолеСнизу = 10; // 10 мм - по умолчанию
// ... дальше выводишь следующие данные, если нужно

Вот тебе алгоритм, но здесь реальные методы перепутаны с псевдокодом (Данные.Получить(), Данные.Значение) - так что разбирайся.
Записан
Marta_Li
Постоялец

by
Offline Offline

« Ответ #8 : 06-01-2011 07:32 » 

Kivals, спасибо большое за помощь.
Дай Бог тебе здоровья.
С Новым Годом и Рождеством.

У меня последняя строка - это длинная символьная строка с переносом в ячейке. Именно этот текст и должен прерваться на определенной высоте, все остальное поместится однозначно. Если так сделать (по предложенному коду), то, в случае нехватки выделенного места, вся символьная строка не будет выведена. Или разбивать искусственно ее на несколько строк, исходя из количества символов на длину строки в макете, выводить построчно? Тогда такой код подойдет.
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 06-01-2011 13:52 » 

Ты для строки можешь установить максимальную высоту, до которой она будет растягиваться:

* 1cv8_table_line_height.png (4.07 Кб - загружено 2853 раз.)
Записан
Marta_Li
Постоялец

by
Offline Offline

« Ответ #10 : 11-01-2011 12:12 » 

Знаю я это, конечно. Только не подходит. Предыдущая строка тоже ведь может переноситься - может быть в одну строку, а может и в 5. Вот на нее (и предыдущие) я и устанавливаю эти параметры высоты строки. А последнюю могу не выводить полностью (она дополнительная, информационная, необязательная), выводить надо только оставшуюся до ограничения высоты страницы часть. Поэтому я не могу для нее задать Макс.высоту строки.
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 11-01-2011 14:10 » 

Получается нужно комбинировать оба метода, т.е. с помощью ПроверитьВывод() в цикле (например - с шагом 10; или методом половинного деления - как удобно будет) подобрать допустимую высоту строки и установить ее (програмно) как максимальную для информационной строки.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines