При подготовке документов к двусторонней печати часто возникает необходимость настроить разные отступы для нечетных и четных страниц. Например, для подшивки или переплета с левой стороны нечетная страница должна иметь отступ слева 30 мм, а четная (обратная сторона) — аналогичный отступ справа. Разберем, как реализовать эту задачу штатно средствами платформы 1С:Предприятие.
В платформе 1С предусмотрено специальное свойство объекта ТабличныйДокумент — ЧередованиеРасположенияСтраниц. Оно позволяет автоматически зеркалировать заданные поля для четных страниц без необходимости вручную разбивать документ на отдельные страницы.
Рассмотрим пример кода, в котором задаются базовые поля для нечетных страниц, а затем включается зеркальное чередование полей по горизонтали:
ТабДок = Новый ТабличныйДокумент;
ТабДок.ПолеСлева = 30;
ТабДок.ПолеСправа = 10;
ТабДок.ПолеСверху = 10;
ТабДок.ПолеСнизу = 10;
ТабДок.ЧередованиеРасположенияСтраниц = ЧередованиеРасположенияСтраниц.ЗеркальноСлева;
При использовании системного перечисления ЧередованиеРасположенияСтраниц.ЗеркальноСлева платформа автоматически поменяет местами левое и правое поля на четных страницах. В результате четные страницы получат отступ справа 30 мм и отступ слева 10 мм, что идеально подходит для двухсторонней печати с левым переплетом.
Если же переплет или подшивка документа выполняется по верхнему краю, проанализируем другое значение этого перечисления — ЧередованиеРасположенияСтраниц.ЗеркальноСверху. В этом случае местами будут меняться верхнее и нижнее поля.
Выясним некоторые ограничения платформы 1С, которые необходимо учитывать при проектировании печатных форм:
ТабличныйДокумент нельзя произвольно назначить разные размеры полей или поменять ориентацию (например, сделать одну страницу портретной, а другую альбомной). Все базовые свойства печати применяются к документу в целом.КлючПараметровПечати, устанавливать поля и режим чередования следует до присвоения значения ключу. В противном случае платформа загрузит ранее сохраненные пользовательские настройки печати из системного хранилища, и программные установки полей могут быть перекрыты.Чтобы пользователю не приходилось вручную изменять настройки в свойствах принтера, зададим параметры двусторонней печати непосредственно из кода с помощью свойства ДвусторонняяПечать:
ТабДок.ДвусторонняяПечать = ТипДвустороннейПечати.ПереворотПоШирокомуКраю;
Для свойства ДвусторонняяПечать доступны следующие значения из одноименного перечисления:
ПереворотПоШирокомуКраю — стандартный режим для альбомной или книжной ориентации при боковом переплете.ПереворотПоКороткомуКраю — режим для переплета по верхней/короткой стороне.Нет — отключение двусторонней печати.Авто — использование настроек драйвера принтера по умолчанию.Если задача требует вывода в один пакет страниц с принципиально разборными параметрами (разная ориентация страниц или кардинально разный макет), применимы следующие подходы:
ТабличныйДокумент, где каждый элемент настроен со своими параметрами печати. Печать выполняется поочередным вызовом метода Напечатать() для каждого элемента массива.КоличествоСтраниц(). Если число страниц нечетное, добавим пустую секцию и вызовем метод ВывестиГоризонтальныйРазделительСтраниц().