Здравствуйте.Весь интернет обшарил ни чего не нашел на следующий вопрос.Надеюсь на ваш опыт.
Имеется Макет документа.
Как сделать так,чтобы верхний и нижний колонтитулы всегда оставались на последующих листах,в случае если на Лист1 не помещается информация,при печати.
Ниже приведена картинка:
Имеется Макет документа.
Как сделать так,чтобы верхний и нижний колонтитулы всегда оставались на последующих листах,в случае если на Лист1 не помещается информация,при печати.
Ниже приведена картинка:
Прикрепленные файлы:

По теме из базы знаний
- УТ 11. Динамическое изменение MXL-макета внешней печатной формы в режиме 1С.
- Пользовательские макеты для внешних печатных форм в УПП 1.3
- Печать макета MS Word в любом документе с помощью БСП
- Вывод печатных форм по документу "Прием на работу"(или по справочнику "Сотрудник") с возможностью ручного редактирования и добавления новых макетов MS Word
- По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
В общем заполняю макет из таблицы данных и и при условии что если строк в таблице больше 30-ти,то выводится сообщение.
Но как сделать чтобы если в таблице больше 30-ти то остальные части с данными переходят на следующий лист?
Для Каждого Стр Из Клиенты Цикл
Макет.Параметры.Клиент=Стр.Клиент;
Макет.Параметры.ДатаРождения=Стр.ДатаРождения;
Макет.Параметры.СерияПаспорта=Стр.СерияПаспорта;
Макет.Параметры.Номер=Стр.НомерСтроки;
ТабДок.Вывести(Макет.ПолучитьОбласть("Тело1"));
КонецЦикла;
Если Стр.НомерСтроки>30 Тогда
Сообщить("Выводит сообщение");
КонецЕсли;
Но как сделать чтобы если в таблице больше 30-ти то остальные части с данными переходят на следующий лист?
Для Каждого Стр Из Клиенты Цикл
Макет.Параметры.Клиент=Стр.Клиент;
Макет.Параметры.ДатаРождения=Стр.ДатаРождения;
Макет.Параметры.СерияПаспорта=Стр.СерияПаспорта;
Макет.Параметры.Номер=Стр.НомерСтроки;
ТабДок.Вывести(Макет.ПолучитьОбласть("Тело1"));
КонецЦикла;
Если Стр.НомерСтроки>30 Тогда
Сообщить("Выводит сообщение");
КонецЕсли;
Почему именно больше 30? А дальше как(когда будет строк больше 60 и 90 и т.д.)? Или если будут длинные наименования и 30 строк займут не одну , а полторы страницы? Как то неправильно получается.
Ну а вообще посмотрите :
ВывестиГоризонтальныйРазделительСтраниц (PutHorizontalPageBreak)
Синтаксис:
ВывестиГоризонтальныйРазделительСтраниц()
Описание:
Вставляет в результирующую таблицу горизонтальный разделитель страниц.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Пример:
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
Ну а вообще посмотрите :
ВывестиГоризонтальныйРазделительСтраниц (PutHorizontalPageBreak)
Синтаксис:
ВывестиГоризонтальныйРазделительСтраниц()
Описание:
Вставляет в результирующую таблицу горизонтальный разделитель страниц.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Пример:
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
Если настаиваете на цифре 30 то можно попробовать вот в таком цикле сделать:
За синтаксисом особо не следил. но смысл думаю понятен
//Перед строками 31,61.91 и т.д. вставим
//Нижний колонтитул
//потом разделитель
//потом верхний колонитул
//и продолжим по строчкам таблицы
НомерСтрокиКратное30 = 31;
Для Каждого Стр Из Таблица Цикл
ОбластьГолова.Параметры.Дата=Дата;
ТабДок.Вывести(ОбластьПуст);
Если Стр.НомерСтроки = НомерСтрокиКратное30 тогда
НомерСтрокиКратное30 = НомерСтрокиКратное30+30;
ТабДок.Вывести(ОбластьНиз);
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
ТабДок.Вывести(ОбластьВерх);
ТабДок.Вывести(ОбластьГолова);
иначе
Макет.Параметры.Клиент=Стр.Клиенты;
Макет.Параметры.Номер=Стр.НомерСтроки;
ТабДок.Вывести(Макет.ПолучитьОбласть("Тело"));
КонецЕсли;
КонецЦикла;
ПоказатьЗа синтаксисом особо не следил. но смысл думаю понятен
(17) Kami4, 31-ка пропадает , потому что мы ее и не выводим, в цикле , где идет проверка на 30 строку, вставьте:
Макет.Параметры.Клиент=Стр.Клиенты;
Макет.Параметры.Номер=Стр.НомерСтроки;
ТабДок.Вывести(Макет.ПолучитьОбласть("Тело"));
Тем самым выведете 31ую строку.
Макет.Параметры.Клиент=Стр.Клиенты;
Макет.Параметры.Номер=Стр.НомерСтроки;
ТабДок.Вывести(Макет.ПолучитьОбласть("Тело"));
Тем самым выведете 31ую строку.
(20) HameleonA, Я просматривал и пробовал и реализовать то что Вы посоветовали, все получается как должно быть кроме нижнего колонтитула. Я как-то встречался с таким параметром как "R1C1:R10C2" но ни когда не использовал их. Может все дело в этом, или тут что-то другое?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот