1с как вывести область внизу страницы

Постраничный вывод в табличный документ

Для некоторых отчетов необходимо, чтобы в конце страницы содержалась некоторая область, которая бы сообщала информацию о содержимом страницы. Это может быть, например, информация о сумме по странице, количестве строк на странице и т.п. Во встроенном языке 1С:Предприятия предусмотрены специальные средства для разбиения табличного документа на страницы. В данном разделе рассказывается, каким образом можно организовать постраничный вывод при выводе информации в табличный документ.

Метод табличного документа ПроверитьВывод()

Объект ТабличныйДокумент имеет метод ПроверитьВывод() , предназначенный для того, чтобы проверить, поместится ли список областей на текущую страницу. В случае если метод вернет значение Истина , вывод областей, переданных в метод, не приведет к созданию новой страницы, иначе, для того, чтобы вывести области, в табличном документе будет создана новая страница. Данный метод работает с учетом настроек печати документа, у которого вызывается метод.

Рассмотрим пример. Пусть нам необходимо создать отчет «Платежная ведомость». Требуется, чтобы на первой странице был заголовок, отображающий информацию о ведомости в целом, на остальных страницах — заголовок, содержащий только шапку таблицы ведомости. В подвалах страницы необходимо иметь информацию о сумме по странице. В подвале последней страницы необходимо иметь итоговую информацию по всей ведомости.

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

Читайте также:  Чем отмыть коробку передач ваз

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

2.1. проверяем, вмещается ли на текущую страницу область со строкой ведомости и область итога по странице;
2.2. если области помещаются на странице — выводим строку области;
2.3. иначе — выводим подвал страницы, выводим горизонтальный разделитель страницы, выводим шапку страницы, выводим строку ведомости;

3. выводим подвал отчета.

Ниже приведен пример того, как подобный алгоритм может быть реализован на встроенном языке 1С:Предприятия 8.0:

Метод табличного документа ПроверитьПрисоединение()

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

Источник

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

Создание внешней печатной формы на базе встроенной

Итак. Делаем на базе БП 2.0. Для начала создадим внешнюю печатную форму Акта для печати из документа «Реализация товаров и услуг». Для этого создаём новую внешнюю обработку и даём ей название «АктСРекламой». Далее сразу добавляем реквизит «СсылкаНаОбъект» с типом «ДокументСсылка.РеализацияТоваровУслуг» и «ДополнительныеПараметры» с типом «Произвольный». Далее просто копируем макет «Акт» из документа «РеализацияТоваровУслуг» в нашу обработку. Для тестирования и отладки печатной формы, давайте сразу создадим форму вот такого вида

На кнопку выполнить вешаем процедуру

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

Теперь собственно создадим процедуру печати. Для этого перейдём в модуль объекта, и впишем туда заколовок функции печати: Функция Печать () Экспорт ну и КонецФункции . Теперь в модуле документа (РеализацияТоваровУслуг) найдём Функцию Печать и и посмотрим какой функцией формируется печатная форма Акта. И это функция ПечатьАктаОбОказанииУслуг(). Найдём её или перейдём к ней нажав F12. Всё содержимое этой функции копируем в нашу функцию Печать. Теперь если мы проверим модуль на ошибки, то будет выдано, что у нас не определена переменная мВалютаРегламентированногоУчета и функция ПодготовитьДанныеДляПечатиАктаОбОказанииУслуг. Опять же из модуля копируем определение переменной и присвоение ей значения (внизу модуля). С функцией поступаем так же (просто копируем её из модуля документа). Снова проверяем синтаксис и видим кучу ошибок о неопределённых переменных и о функции СформироватьСтруктуруПодписейДляПечати. Функцию снова копируем из модуля документа. Теперь остались ошибки только о неопределённых переменных. Но давайте на них посмотрим. Все эти переменные являются реквизитами документа, а так как теперь вызов функций происходит не в модуле документа, то и обращение к реквизитам документа напрямую теперь не доступно, теперь это должно происходить через реквизит нашей обработки «СсылкаНаОбъект». Т.е. теперь перед каждой такой «не определённой» переменной нужно вписать » СсылкаНаОбъект . «, кроме «Ссылка» её можно просто заменить на » СсылкаНаОбъект «. Теперь синтаксических ошибок нет, но если Вы попытаетесь вывести с её помощью документ на печать, то получите ещё ошибку «Поле объекта не обнаружено (Ссылка)». Корни этой ошибки теже самые, нужно заменить » ЭтотОбъект . Ссылка » на » СсылкаНаОбъект «. Вот теперь можно пробовать напечатать документ. Это мы получили стандартную печатную форму Акта в виде внешней печатной формы. Её можно зарегистрировать и использовать. Но пока не зачем.

Вывод рекламного блока внизу листа

Первое что нужно сделать, это собственно создать секцию в макете с рекламным блоком. Это можно сделать любым удобным способом, например просто вставить в подготовленную секцию с именем «Реклама» блок с картинкой (как было у меня). Чтож приступим к выводу рекламы. Если мы просто в конце функции печать перед возвратом табличного документа впишем вывод секции «Реклама», то она конечно же будет отображена непосредственно под подписями, но у нас задача вывести рекламу внизу бланка. Для реализации этой задачи нам потребуется вывести перед блоком отступ. Для этого добавим ещё одну секцию и назовём её «ОтступРекламы». Она будет представлять из себя просто пустую строку, которую мы будем выводить в печатный документ до тех пор, пока секция с рекламой не окажется внизу бланка. Для этого впишем следующий текст в конце функции печать перед возвратом табличного документа

Вот и всё, на печать выводится Акт с блоком рекламы в самом низу листа. Регистрируем форму и пользуемся. Кстати если указать в качестве заменяемой печатной формы «Акт об оказании услуг», то вызов нашей формы будет производиться вместо стандартной формы.

Бонус

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

Нажимаем «Задать параметры» и затем кнопку выбора. Добавляем параметр «Организация» и Тип «Строка» (жаль что нельзя прямо организацию указать) и пишем наименование организации в актах которой будем выводить рекламный блок.

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

Сохраняем обработку и заменяем файл. Теперь при печати Акта блок будет выводиться только для той организации, которая указана в параметре обработки. Если в предыдущем коде вместо «=0» написать «0», тогда наоборот реклама будет выводиться для всех организаций, кроме указанной в параметре.

Источник

Вывод области макета в колонтитул

КонецСтраницы (PageBottom)
Использование:
Чтение и запись.
Описание:
Тип: Булево. Признак того, что данная область находится последней на странице.
Примечание:
Применимо только для областей строк/колонок.

Сам не пробовал

У меня приемлемо получилось только передачей в Ворд и скриптами проставить колонтитулы и из Ворда печатать(вставлял картинку).

Все штатные методы могут сдвигать по листу выводимую секцию относительно нижнего края.

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

КонецСтраницы (PageBottom)
Метод КонецСтраницы в 1С что то вроде РазрывСтраницы тоесть первая строка области выводится сразу за предыдущей а остальные строки области каждая в начале следующей страницы Например если в области 3 строки то первая строка выходит в следующей строке документа а остальные 2 каждая на следующей странице.

В этом случае также область выводится вверху страницы.
_________________________________________________________
Давайте тогда рассмотрим вариант когда нам надо вывести только одну область но в конце печатного листа и все. Тоесть надо получить штамп в нижнем правом углу листа.

(11) Единственный вариант который мне приходит на ум — вывод с проверкой и после нахождения последней области — вывод пустой области с минимальной высотой с проверкой на влезание на страницу (тогда последняя область будет в самом низу с погрешностью на величину высоты пустой области).

Источник

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

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

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

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

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

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

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

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

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

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

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

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

Будут вопросы — пишите, чем смогу — помогу.

Источник

Программирование в 1С для всех

В этой статье вы узнаете, по какому принципу осуществляется работа со страницами в табличном документе 1С 8.3. Будет показано, как определить помещается ли область (или области) в страницу, а также как принудительно осуществить разделение страниц.

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

Создадим макет табличного документа с горизонтальными областями.

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

Этот код комментировать не будем, если у вас он вызывает затруднения, то ознакомьтесь с моими предыдущими статьями и видео-уроками.

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

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

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

Поясним этот код.

Используя метод табличного документа ПроверитьВывод можно проверить, войдет ли вывод области или нескольких областей на страницу табличного документа. Этот метод возвращает Истина, если область вмещается на страницу, и ложь – если нет. Параметром этого метода может быть как область, так и массив областей.

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

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

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

В результате, вывод табличного документа осуществится в более удобном виде.

Другие статьи про табличные документы в 1С:

Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Источник

Оцените статью