gifts2017

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

Опубликовал Сергей Б (mcbase) в раздел Программирование - Практика программирования

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

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

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

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

 

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

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

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

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

 

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

Массив.Добавить(ПустаяОбласть);
Массив.Добавить(Итого);
Массив.Добавить(ИтогоНДС);
Массив.Добавить(КурсИтого);
Массив.Добавить(ПоследняяОбласть);

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

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

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

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

Всем удачи!

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
invoice.gif
.gif 36,30Kb
13.04.12
43
.gif 36,30Kb 43 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Дмитрий Блинов (blinoff71) 16.05.13 11:48
Спасибо за статью, очень помогла, все получилось, как и хотел.
2. Сергей Б (mcbase) 16.05.13 11:56
(1) blinoff71, Пожалуйста, я рад, что вам она оказалась полезной)
3. pavell2009 25.07.13 21:53
Спасибо за статью, пытаюсь реализовать как вы написали, но не получается......
У меня в макете есть область "Подписи" которую нужно выводить всегда в конце страницы
Я создал две пустых области "Пустая" и "Пропуск" - они находятся над областью пропуск и далее по вашему коду:
Не совсем понял когда выводится область "Подписи" - в конце выводится только ТабДокумент.Вывести(ПустаяОбласть);
Не могли бы вы пояснить, начинающему программисту как все таки, реализовать
ОбластьМакета = Макет.ПолучитьОбласть("Пропуск"); //// В макете создаем область которая содержит просто не заполненную строку, она будет нужна для того,чтобы заполнить пустоту между строчками и подвалом.
ТабДокумент.Вывести(ОбластьМакета);

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

ПоследняяОбласть = Макет.ПолучитьОбласть("Подписи");
ПустаяОбласть = Макет.ПолучитьОбласть("Пустая");
/// Получаем се области которые нужно сдвигать в самый низ страницы.



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

Массив.Добавить(ПустаяОбласть);
Массив.Добавить(ПоследняяОбласть);

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

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

// Проставляем пустые строчки, так чтобы подвал всегда находился внизу страницы.
4. Сергей Б (mcbase) 25.07.13 22:53
Добрый вечер, пришлите мне файл с вашей печатной формой я его посмотрю и скажу где, что не так.
6. Сергей Б (mcbase) 25.07.13 23:53
(5) pavell2009, Вы пришлите все вместе с кодом который у вас получился и не работает, я его посмотрю и подскажу что не так.
7. pavell2009 26.07.13 08:45
Внешняя обработка с макетом + код, посмотрите пожалуйста
Прикрепленные файлы:
ВнешняяОбработка.epf
8. Киселева Анастасия (aakiseleva92) 11.11.14 15:34
У меня делает отступы, но все равно выводит область посередине страницы, а не внизу.
9. Артем Лабутин (weissfeuer) 30.06.15 14:47
Дельный лайфхак ) спасибо!
11. Валерия Сарана (Silverghoust) 07.04.16 11:24
Спасибо, очень пригодилось - конечно тут и от принтера зависит. У меня вначале не вышло - (в параметрах страницы было указан масштаб по ширине). Помогло установить табличному документу свойство Автомасштаб = Истина.
12. Дарима Базарова (dara1989) 29.04.16 13:28
13. Владимир Белов (bvs_dd) 06.07.16 16:34
Спасибо за статью! Дельный совет.
14. Гость 04.10.16 16:44
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа