1с печать разбить на страницы
Использование области печати и повторяющихся областей печати табличного документа
Табличный документ предоставляет возможность указать область, которая будет выводиться на печать, а также указывать области, которые будут выводиться на каждой странице. В данной статье рассматривается управление данными свойствами табличного документа из встроенного языка 1С:Предприятия 8.
Область печати
Область печати табличного документа отвечает за то, что будет выдаваться на принтер при печати данного табличного документа.
Во встроенном языке область печати представляется свойством табличного документа ОбластьПечати . Данное свойство имеет тип ОбластьЯчеекТабличногоДокумента . В качестве области для данного свойства может выступать только область ячеек самого табличного документа. Т.е. для данного свойства нельзя использовать область ячеек другого табличного документа.
Пример установки области печати:
В данном примере табличному документу устанавливаются в качестве области печати строки с 5-й по 10-ю включительно. Т.е. при печати данного документа будет распечатаны только эти строки.
Отметим, что данное свойство не копируется при выводе одного табличного документа в другой. По этому, устанавливать данное свойство нужно именно в том документе, который будет показан пользователю, т.к. установка данного свойства, например, в макете должного эффекта не даст.
Повторяющиеся области печати
Повторяющиеся области печати используются для того, чтобы некоторые области табличного документа распечатывались на каждой странице. Наиболее распространенный пример применения повторяющихся при печати областей - печать шапки таблицы на каждой странице.
Повторяющиеся на каждой странице области бывают двух видов: повторяющиеся строки и повторяющиеся колонки. Данные области во встроенном языке представляются свойствами ПовторятьПриПечатиСтроки и ПовторятьПриПечатиКолонки . Они имеют тип ОбластьЯчеекТабличногоДокумента . В качестве области для данных свойств могут выступать только области ячеек самого табличного документа. Т.е. для данного свойства нельзя использовать область ячеек другого табличного документа. Причем, для свойства ПовторятьПриПечатиСтроки могут быть использованы только области - строки, а для свойства ПовторятьПриПечатиКолонки - только области - колонки. Использование прямоугольных областей табличного документа для данных свойств недопустимо.
Пример установки повторяющихся строк:
В данном примере, на каждой печатаемой странице табличного документа будут выводиться строки с 5-й по 10-ю включительно.
Пример установки повторяющихся колонок:
В данном примере, на каждой печатаемой странице табличного документа будет выводиться первая колонка табличного документа.
Отметим, что данные свойства не копируется при выводе одного табличного документа в другой. По этому, устанавливать данные свойства нужно именно в том документе, который будет показан пользователю, т.к. установка данного свойства, например, в макете должного эффекта не даст.
Постраничный вывод в табличный документ
Для некоторых отчетов необходимо, чтобы в конце страницы содержалась некоторая область, которая бы сообщала информацию о содержимом страницы. Это может быть, например, информация о сумме по странице, количестве строк на странице и т.п. Во встроенном языке 1С:Предприятия предусмотрены специальные средства для разбиения табличного документа на страницы. В данном разделе рассказывается, каким образом можно организовать постраничный вывод при выводе информации в табличный документ.
Метод табличного документа ПроверитьВывод()
Объект ТабличныйДокумент имеет метод ПроверитьВывод() , предназначенный для того, чтобы проверить, поместится ли список областей на текущую страницу. В случае если метод вернет значение Истина , вывод областей, переданных в метод, не приведет к созданию новой страницы, иначе, для того, чтобы вывести области, в табличном документе будет создана новая страница. Данный метод работает с учетом настроек печати документа, у которого вызывается метод.
Рассмотрим пример. Пусть нам необходимо создать отчет "Платежная ведомость". Требуется, чтобы на первой странице был заголовок, отображающий информацию о ведомости в целом, на остальных страницах - заголовок, содержащий только шапку таблицы ведомости. В подвалах страницы необходимо иметь информацию о сумме по странице. В подвале последней страницы необходимо иметь итоговую информацию по всей ведомости.
Для того чтобы реализовать подобный отчет нам потребуется использовать метод ПроверитьВывод() . Пример алгоритма отчета будет выглядеть так:
1. выводим в результирующий табличный документ область - заголовок первой страницы;
2. для каждой строки из ведомости:
2.1. проверяем, вмещается ли на текущую страницу область со строкой ведомости и область итога по странице;
2.2. если области помещаются на странице - выводим строку области;
2.3. иначе - выводим подвал страницы, выводим горизонтальный разделитель страницы, выводим шапку страницы, выводим строку ведомости;
3. выводим подвал отчета.
Ниже приведен пример того, как подобный алгоритм может быть реализован на встроенном языке 1С:Предприятия 8.0:
Метод табличного документа ПроверитьПрисоединение()
Метод табличного документа ПроверитьПрисоединение() работает аналогично методу ПроверитьВывод() , с тем отличием, что данный метод проверяет, изменится ли количество страниц по горизонтали при выводе в отчет областей при помощи метода Присоединить() .
P.S. а задать один шрифт, один размер и свойство "РазмещениеТекста" в значение "Переносить" не пробовали?
7. user705522_constantin_h 35 18.10.18 13:53 Сейчас в теме(7) Несколько выше вы написали, что у вас объединены строки. Попробуйте в коде установить АвтоМасштаб документу.
Еще поясните, что значит
Точнее, непонятно, о каком тексте идет речь. По сути, разницы нет какой текст вы хотите разместить у себя в макете, так как все настройки выведенного текста регулируются самими ячейками, куда выводится текст, в которых вы и задаете шрифт, цвет и т.д.
Думаю, вы где-то что-то упустили.
P.S. пришлите скриншот вашего макета в конфигураторе и готовый макет в Предприятии.
9. user705522_constantin_h 35 18.10.18 15:23 Сейчас в теме Еще поясните, что значитвысота строк в тексте и высота строк макета разные
В макете весь текст занесён в правую верхнюю ячейку области. Затем выделены ячейки области и объединены. Высота строк текста и строк таблицы различная. Если выделить строку таблицы, то некоторые строки разрезают строки текста.
(9) Тут проблема в объединенных ячейках.
Разместите текст, по возможности, в одной ячейке для которой свойство "РазмещениеТекста" поставьте в значение "Переносить".
Неизвестно, что у вас вверху и внизу - если где-нибудь текст "пересекается" с другими ячейками, в которых свои значения (находятся на одной строке), тогда там, по необходимости, вставляйте часть своего текста, чтобы скорректировать красоту.
А таким образом, как у вас ячейки не объединяют. Полагаю, что вы изначально опасались, что текст выходит вправо за границу и/или при печати не отображается полностью и вы решили объединить ячейки.
Upd: если вы не только по вертикали, но и по горизонтали объединяли, а не раздвигали колонку (опять-таки, не видно из куска скриншота), тогда сделайте объединение только по горизонтали со свойством "РазмещениеТекста" этой объединенной ячейки равным "Переносить".
11. user705522_constantin_h 35 19.10.18 10:06 Сейчас в теме (10)Текст размещён в одной, правой верхней ячейке, размещение текста установлено в значение Переносить. Затем объединён диапазон ячеек, в которых этот текст должен быть выведен. Высота строк в диапазоне не совпадает с высотой строк таблицы. Параметра межстрочный интервал у текста нет. (11)Как вариант, перед печатью получать текст из этой ячейки и вручную разбить его на разные строки макета, например, по символу переноса строки. И выводить в макет печати уже эти строки.Пример:
(11) На скриншотах видать, что вы объединили еще и по ВЕРТИКАЛИ, а этого делать не надо. Объедините только по горизонтали. Я у себя только что вашу ситуацию разыграл при различных вариантах. Раз текст на 14 строке, так и объедините ТОЛЬКО ОДНУ 14 строку ПО ГОРИЗОНТАЛИ(не обязательно полностью - это уже зависит от ВИДИМОЙ вами ШИРИНЫ, то есть какую ширину текста вы хотите видеть) 14. user705522_constantin_h 35 19.10.18 10:44 Сейчас в теме объединили еще и по ВЕРТИКАЛИ, а этого делать не надо
Тогда текст не разбивается по страницам: на первой странице только заголовок, на второй весь текст, на третьей только подписи.
(14) Ну в таком случае, только самому по частям разбивать текст в макете или.
1. В макете просто берете ячейку или объединенную горизонтальную строку, устанавливаете у нее свойство заполнение в значение "Параметр", "обзываете" этот параметр, к примеру "ВыводимыйТекст" и присваиваете всей строке имя (даете название области) (выделить строку, нажимаете CTRL+Shift+N и называете свою область, к примеру "ОбластьСтроки").
И тогда все ровно у вас встанет. Работая через конфигуратор, вы сами будете все контролировать.
В этой статье вы узнаете, по какому принципу осуществляется работа со страницами в табличном документе 1С 8.3. Будет показано, как определить помещается ли область (или области) в страницу, а также как принудительно осуществить разделение страниц.
Для демонстрации принципов работы страниц в табличном документе реализуем простой учебный пример: в табличном документе выведем строки со случайными числами и их текстовое представление, количество строк с числами, которые нужно вывести будем вводить в поле на управляемой форме обработки.
Создадим макет табличного документа с горизонтальными областями.
Создадим обработчик команды формы, в котором будем вызывать функцию, где создается и заполняется строками со случайными числами и их текстовым представлением табличный документ.
Этот код комментировать не будем, если у вас он вызывает затруднения, то ознакомьтесь с моими предыдущими статьями и видео-уроками.
Сейчас, когда мы выполним команду и выведем, например, 80 строк, то у нас все будет показано на одной странице, а при попытке распечатать (или выполнить предварительный просмотр) платформа самостоятельно разобьет табличный документ на страницы.
Согласитесь, что такой вариант формирования печатной формы не лицеприятно выглядит.
Для более приятного формирования печатной формы, сделаем так, чтобы каждый раз в конце страницы выводился подвал таблицы, а в начале новой страницы (кроме первой) выводилась шапка таблицы. Для этого доработаем код в методе СформироватьТабличныйДокумент.
Поясним этот код.
Используя метод табличного документа ПроверитьВывод можно проверить, войдет ли вывод области или нескольких областей на страницу табличного документа. Этот метод возвращает Истина, если область вмещается на страницу, и ложь – если нет. Параметром этого метода может быть как область, так и массив областей.
В функции мы создали массив, который состоит из области строки и из области подавала таблицы.
В каждой итерации цикла, в котором осуществляется вывод строк табличного документа, при помощи метода ПроверитьВывод выполняется проверка: вмещается ли область строки и область подвала таблицы в страницу табличного документа.
Если области не вмещаются на страницу табличного документа, то выводится подвал таблицы, потом выводится горизонтальный разделитель таблицы, который, по сути, создает новую страницу таблицы, и осуществляется вывод шапки таблицы уже на новой странице.
В результате, вывод табличного документа осуществится в более удобном виде.
Другие статьи про табличные документы в 1С:
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Читайте также: