1с печатная форма колонтитулы в макете

1С 8.x : Табличный документ: Колонтитулы и параметры страницы

Большинство обучающих материалов по программированию в системе 1С при описании формирования печатных форм на основе объекта «Табличный документ» ограничиваются выводом готовой формы на экран. Для пользователей же куда более важным является то, как документ будет выглядеть в распечатанном виде. Здесь, кроме хорошо сверстанного макета, играют роль и установки параметров печати.Почти все параметры, доступные в диалогах настройки печати (настройки принтера, свойства страницы), можно указать непосредственно при формировании табличного документа.Рассмотрим свойства и методы табличного документа, относящиеся к настройкам печати (в приведенных примерах «ТабДок» это объект типа «Табличный документ»).

Свойство «ИмяПринтера» позволяет задать для печати принтер, отличный от установленного по умолчанию. Имя должно совпадать с именем принтера, заданным в системе:

ТабДок.ИмяПринтера=»HP LaserJet 3050 Series PCL 6″;

При печати пакета документов можно сэкономить время, установив признак разбора по копиям:

Число копий можно указать так:

Разумеется, можно задать поля:

ТабДок.ПолеСлева=20;//Поле слева 20мм, остальные поля 10мм (по умолчанию)

Еще несколько свойств страницы:

ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт; ТабДок.ЭкземпляровНаСтранице=2; //на листе будет размещено 2 страницы ТабДок.Автомасштаб=истина; //аналогично настройкам масштаба «по ширине страницы»

При необходимости можно указать конкретное значение масштабирования в процентах (свойство «МасштабПечати»).

Свойство «РазмерСтраницы» позволяет задать стандартные форматы страницы – “A3”, “A4”, “A5” (полный список вариантов доступен в справке 1С).

ТабДок.РазмерСтраницы=»A3″;// буква А должна быть английской

Для нестандартного размера бумаги (Custom) можно указать значения высоты и ширины страницы (в мм):

ТабДок.РазмерСтраницы=»Custom»;//нестандартный размер ТабДок.ВысотаСтраницы=350; ТабДок.ШиринаСтраницы=350;

Также в табличном документе доступно управление выводом колонтитулов и их содержимым. Для этого служат свойства «ВерхнийКолонтитул» и «НижнийКолонтитул». Например:

ТабДок.ВерхнийКолонтитул.Выводить=истина; //будет напечатан верхний колонтитул ТабДок.РазмерКолонтитулаСверху=7; //размер колонтитула 7мм (по умолчанию 10мм) ТабДок.ВерхнийКолонтитул.ВертикальноеПоложение=ВертикальноеПоложение.Верх; ТабДок.ВерхнийКолонтитул.НачальнаяСтраница=2;//колонтитул выводится со второй страницы ШрифтКолонтитула=Новый Шрифт(«Courier New», 8,,Истина); ТабДок.ВерхнийКолонтитул.Шрифт=ШрифтКолонтитула; //наклонный шрифт ТабДок.ВерхнийКолонтитул.ТекстВЦентре=»Верхний колонтитул»; ТабДок.ВерхнийКолонтитул.ТекстСправа=»Стр.[&НомерСтраницы] из [&СтраницВсего]»; //нумерация страниц ТабДок.ВерхнийКолонтитул.ТекстСлева=»[&Дата]»;//текущая дата

Сформированный документ отправляется на печать с помощью метода «Напечатать()». Возможно два варианта вызова.

1) Непосредственно на принтер:ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать); ТабДок.Напечатать(истина);

2) Перед печатью будет выведен диалог печати:ТабДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать); ТабДок.Напечатать(ложь);

Кроме того можно управлять и разбиением документа на страницы. Оценить количество страниц в документе по настройкам текущего принтера можно так:

С помощью методов «ПроверитьВывод()» и «ПроверитьПрисоединение()» можно определить, умещается ли табличный документ или массив областей табличного документа на странице в высоту и в ширину при текущих настройках принтера.Надо иметь ввиду, что работа последних трех методов зависит от установленного принтера. Если методу не удается его найти, вызывается исключение.

Принудительно вставить разрывы страниц позволяют методы «ВывестиВертикальныйРазделительСтраниц()» и «ВывестиГоризонтальныйРазделительСтраниц()».Таким образом, можно управлять постраничным выводом на печать и контролировать заполнение страницы:

Если Не ТабДок.ПроверитьВывод(МассивВыводимыхОбластей) Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц();КонецЕсли;

Источник

Вывод колонтитула или логотипа внизу страницы, вне зависимости от количества строк в печатной форме.

Была форма счета сделанная в excel и она была утверждена в валютном контроле. ее нужно было реализовать в 1с.

Казалось бы чего проще, но столкнулся с проблемой, внизу формы находились реквизиты и подпись. и при выводе печатной формы счета «Подвал» должен всегда находиться внизу страницы, вне зависимости от того сколько строчек номенклатуры выводится, одна или 10-15. Когда выводилось мало строчек, подвал счета естесственно перемещался вверх поближе к строчкам номенклатуры.

Долго думал, читал в интернет и делюсь опытом.

Вот пример кода, ниже поясню смысл.

ОбластьМакета = Макет.ПолучитьОбласть(«Пропуск»); //// В макете создаем область которая содержит просто не заполненную строку, она будет нужна для того,чтобы заполнить пустоту между строчками и подвалом.
ТабДокумент.Вывести(ОбластьМакета);

// Проставляем пустые строчки, так чтобы подвал всегда находился внизу страницы.

ПоследняяОбласть = Макет.ПолучитьОбласть(«ПодвалСчета»);
ПустаяОбласть = Макет.ПолучитьОбласть(«Пустая»);
Итого = Макет.ПолучитьОбласть(«Итого»);
ИтогоНДС = Макет.ПолучитьОбласть(«ИтогоНДС»);
// СуммаПрописью = Макет.ПолучитьОбласть(«СуммаПрописью»);
КурсИтого = Макет.ПолучитьОбласть(«КурсИтого»); /// Получаем се области которые нужно сдвигать в самый низ страницы.

Массив = Новый Массив; /// Создаем Массив из областей которые нужно располагать внизу страницы, также добавляем в массив область с пустой строкой.

Пока ТабДокумент.ПроверитьВывод(Массив) Цикл /// Далее следует простая проверка на возможность уместить массив из областей на листе.
ТабДокумент.Вывести(ПустаяОбласть);
КонецЦикла;

///// Логика такая, если массив умещается на листе, тогда выводим пустую область тем, самым оставляем меньше места на листе (сдвигаем Массив областей вниз) как только массив перестает влезать на лист выводится массив областей, тем самым мы каждый раз получаем его внизу страницы.

// Проставляем пустые строчки, так чтобы подвал всегда находился внизу страницы.

Источник

Произвольные колонтитулы и повтор шапки таблицы в табличном документе (функция)

В данной статье будет приведен пример рекурсивной функции, при помощи которой в табличный документ можно выводить верхний или нижний колонтитулы с произвольным содержимым, а также делать повтор шапки произвольной таблицы в документе (или таблиц, если в документе их несколько).
Сразу уточню, что функция не тестировалась на очень объемных документах, поэтому, если кто-то проведет такое испытание, пожалуйста, напишите результаты в комментариях.

Задача состояла в следующем:
1) выводить не очень большой табличный документ (до 30 листов) с несколькими таблицами,
2) на каждой странице в колонтитуле добавлять нумерацию (если страниц больше одной) и картинку (QR-код) (в том числе корректно выводить нижний колонтитул на последней странице),
3) если какие-либо из таблиц переносились на следующую страницу, необходимо было производить повтор шапки переносимой таблицы, при этом не допустить, чтобы на предыдущей странице осталась только шапка без хотя бы одной строки данных в ней,
4) предусмотреть возможность вывода произвольного верхнего колонтитула (изначально макетом заложен не был).

В частности, это была печатная форма электронной зачетной книжки студента с разбивкой по курсам и семестрам.

Статей на данную тему с примерами вывода колонтитулов и повторов шапки таблицы в интернете, в том числе и здесь на Инфостарте довольно много. Однако, когда возникла описанная выше задача, готового варианта реализации всех названных условий не нашлось (лишь фрагментарно), поэтому был написан некий свой универсальный вариант.
Основным источником идеи для алгоритма был этот пост на Инфостарте от Игоря (за что ему большое спасибо!) под названием «Что делать если в табличный документ нужно выводить колонтитулы с картинками».

Привожу код получившейся основной рекурсивной функции вывода в табличный документ колонтитулов и повторения шапки таблицы:

Как использовать данную функцию

Что понадобится задать в макете для использования функции:
1) область пустой строки,
2) область верхнего колонтитула с произвольным содержимым,
3) область нижнего колонтитула с произвольным содержимым,
4) области шапок таблиц.

ffb60a00b335dc3dcfc6213de256405c

В коде их соответственно зачитываем:

Заполняем колонтитулы значениями параметров, если они присутствуют, например:

При создании табличного документа необходимо задать размер и параметры страницы, чтобы корректно вычислялись страницы при переносе:

Теперь можно формировать табличный документ, обращаясь к функции при построчном выводе данных в ТабДок.

Пример вывода какой-либо области:

Пример вывода таблицы:

Параметр ЗапретВисячихШапокТаблицы в функции задан безусловно в Истина, но при использовании данной функции Вы можете вынести параметр за ее пределы и сделать настраиваемым, главное, что есть такая возможность.

Пример повтора шапки таблицы:

5e923de63888b0ddc33900c0eb2d0bb7

Почему в задаче был упомянут корректный вывод нижнего колонтитула на последней странице? Потому что при тех способах, что советовали в других статьях (например, просто добавить область нижнего колонтитула к последней выводимой области в документе) получалось, что колонтитул отображался не в самом низу страницы, а там, где закончился документ (например, где-нибудь посередине, а бывало и в вверху). В указанной функции для этого используется область пустой строки (т.е. последняя страница «дополняется» до самого низа пустыми строками и только в самом конце выводится нижний колонтитул).
Вот пример вывода последней страницы:

7580f40cee122eb3927023c842596ad1

Поэтому, после вывода всех данных в табличный документ делаем завершающий вызов функции, если нужно корректно завершить страницу с нижним колонтитулом:

Скачать готовый пример отчета с данной функцией можно здесь (в примере используется тот же код, что представлен в статье):
Произвольные колонтитулы и повтор шапки таблицы в табличном документе (пример в виде внешнего отчета)

Источник

PROИТ

Office 365, AD, Active Directory, Sharepoint, C#, Powershell. Технические статьи и заметки.

1С. Макет. Произвольные колонтитулы и повтор шапки таблицы в табличном документе (готовая функция)

Пример рекурсивной функции, при помощи которой в табличный документ можно выводить верхний или нижний колонтитулы с произвольным содержимым, а также делать повтор шапки таблицы (или таблиц, если их несколько).

В данной статье будет приведен пример рекурсивной функции, при помощи которой в табличный документ можно выводить верхний или нижний колонтитулы с произвольным содержимым, а также делать повтор шапки произвольной таблицы в документе (или таблиц, если в документе их несколько).

Сразу уточню, что функция не тестировалась на очень объемных документах, поэтому, если кто-то проведет такое испытание, пожалуйста, напишите результаты в комментариях.

Задача состояла в следующем:

1) выводить не очень большой табличный документ (до 30 листов) с несколькими таблицами,

2) на каждой странице в колонтитуле добавлять нумерацию (если страниц больше одной) и картинку (QR-код) (в том числе корректно выводить нижний колонтитул на последней странице),

3) если какие-либо из таблиц переносились на следующую страницу, необходимо было производить повтор шапки переносимой таблицы, при этом не допустить, чтобы на предыдущей странице осталась только шапка без хотя бы одной строки данных в ней,

4) предусмотреть возможность вывода произвольного верхнего колонтитула (изначально макетом заложен не был).

В частности, это была печатная форма электронной зачетной книжки студента с разбивкой по курсам и семестрам.

Статей на данную тему с примерами вывода колонтитулов и повторов шапки таблицы в интернете довольно много. Однако, когда возникла описанная выше задача, готового варианта реализации всех названных условий не нашлось (лишь фрагментарно), поэтому был написан некий свой универсальный вариант.

Привожу код получившейся основной рекурсивной функции вывода в табличный документ колонтитулов и повторения шапки таблицы:

Как использовать данную функцию

Что понадобится задать в макете для использования функции:

1) область пустой строки,

2) область верхнего колонтитула с произвольным содержимым,

3) область нижнего колонтитула с произвольным содержимым,

4) области шапок таблиц.

image

В коде их соответственно зачитываем:

ОбластьВерхнегоКолонтитула = Макет.ПолучитьОбласть ( «ВерхнийКолонтитул» ) ; ОбластьНижнегоКолонтитула = Макет.ПолучитьОбласть ( «НижнийКолонтитул» ) ; ОбластьПустойСтроки = Макет.ПолучитьОбласть ( «ПустаяСтрока» ) ;

Заполняем колонтитулы значениями параметров, если они присутствуют, например:

// картинка кода (здесь исключительно для примера). ОбластьНижнегоКолонтитула.Параметры.QRCode = QRCode ;

При создании табличного документа необходимо задать размер и параметры страницы, чтобы корректно вычислялись страницы при переносе:

ТабДок = Новый ТабличныйДокумент ; // размер и параметры страницы (необходимо для вычислений страниц) ТабДок.РазмерСтраницы = «A4» ; ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт ; ТабДок.МасштабПечати = 100 ; // 100% ТабДок.ПолеСверху = 10 ; ТабДок.ПолеСнизу = 5 ; ТабДок.ПолеСлева = 15 ; ТабДок.ПолеСправа = 10 ; НомерСтраницы = 1 ;

Теперь можно формировать табличный документ, обращаясь к функции при построчном выводе данных в ТабДок.

Пример вывода какой-либо области:

Пример вывода таблицы:

Параметр ЗапретВисячихШапокТаблицы в функции задан безусловно в Истина, но при использовании данной функции Вы можете вынести параметр за ее пределы и сделать настраиваемым, главное, что есть такая возможность.

Пример повтора шапки таблицы:

BZktLW6jpG

Вот пример вывода последней страницы:

image

Источник

Как в печатной форме выводить номер страницы

Как в печатной форме выводить номер страницы

Очень часто требуется вывести в табличном документе номер текущего листа, страницы, другой информации. Эту задачу можно решить двумя способами

Если требуется вывести это в самом начале или конце, то самый простой способ использовать колонтитулы.

Колонтитулы

Это автоматически отображаемый в документе текст.

Можно управлять его шрифтом или вертикальным/горизонтальным положением текста в «ячейках» (6 зон)

Kolontituly v rezhime predpriyati

Для текста существует список доступных «макропеременных»:

Код для вывода колонтитула

Если необходимо вывести счетчик листов внизу/справа, код будет таким:

Важно располагать данный код после установки имени настроек печати.

Аналогично делается для верхнего колонтитула и других частей.

Области макета

Когда же требуется вывести в середине табличного документа, например в шапке таблицы, или более сложное отображение, тогда следует использовать области.

Считать листы в таком варианте придется самостоятельно.

Для вывода нам потребуется использовать функцию

Массив из проверяемых таблиц или табличный документ.

В данном случае есть риск, что не получится вывести сам колонтитул: он должен быть не большим, чтобы снизить эту вероятность, либо потребуется усложнить алгоритм, перед выводом секции проверять получится ли вывести сам колонтитул.

Восторженное отношение жены к работе мужа — лучшая реклама его деятельности.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с печатная форма заменена подключаемой
  • 1с печатная форма для документа