Войти
1с - Настройка вывода на печать табличного документа

  0    0 
19.08.2019 | kievol | 1176

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

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

Ниже рассмотрим более подробно свойства и методы табличного документа, которые имеют отношение к настройкам печати (В приведенном примере "ТабличныйДок" это объект типа "Табличный документ") 

Для того что бы задать принтер для печати, отличный от того, что по умолчанию установлен в системе, используется такое свойство как "ИмяПринтера", причем имя должно полностью совпадать с принтером который установлен в системе: 

ТабличныйДок.ИмяПринтера="Kyocera FS-1320D KX";


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

ТабличныйДок.РазборПоКопиям=истина;


Число копий указывается так: 

ТабличныйДок.КоличествоЭкземпляров=X; // где X — это число копий


Также возможно задать поля: 

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


Вот еще несколько свойств страницы, которые нам доступны: 

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


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

ТабличныйДок.МасштабПечати=80; // задается масштаб 80% от натуральной величины

Задать стандартные форматы страницы "А3", "А4", "А5" можно при помощи свойства «РазмерСтраницы». Есть и другие доступные стандартные форматы, полный их список можно найти в справке 1С. 

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

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

ТабличныйДок.РазмерСтраницы="Custom";//нестандартный размер бумаги
ТабличныйДок.ВысотаСтраницы=250;
ТабличныйДок.ШиринаСтраницы=250;


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

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

Отправить на печать уже сформированный документ можно использовав метод «Напечатать()». При этом есть два варианта вызова этого метода. 

1. Непосредственно на принтер 

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


2. С выводом диалога перед печатью 

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


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

ТабличныйДок.КоличествоСтраниц();


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

Если вам необходимо принудительно вставить разрывы страниц, то вы можете использовать методы «ВывестиВертикальныйРазделительСтраниц()» и «ВывестиГоризонтальныйРазделительСтраниц()»

Это позволяет управлять постраничным выводом и контролировать заполнение страницы: 

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


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


  • SSL сертификат в Open Server
    SSL сертификат в Open Server

    В разработке, я постоянно использую локальный Open Server (OSpanel) и нахожу его очень удобным из-за его гибких настроек и обилия различных модулей. Однако, в каждой новой версии остается одна проблема — отсутствие настроек SSL сертификатов. Поэтому далее я покажу как решить эту проблему… SSL в Open Server — в чем проблема? В этом и заключается все, что как таковой проблемы нет, но есть…

  • Автоматический перезапуск программы после закрытия
    Автоматический перезапуск программы после закрытия

    Создаем bat файл со следующим содержимым @echo offecho Starting process...echo.:EnterNameSet /p Process="Enter process name:"IF NOT EXIST %Process% GOTO EnterName:begintitle Process %Process% controltasklist | findstr %Process%if errorlevel 1 goto NoProcessecho Result: Process rungoto Done:NoProcess%Process%echo Result: Process %Process% stop %time%:Doneecho.goto beginpauseexit   Файл bat данного содержания нужно поместить в папку с вашим исполняемым файлом. При запуске он спросит имя файла - нужно ввсети в формате Name.exe Если вы…

  • Apache падает
    Apache падает

    В логах /var/log/apache2/error.log Апач внезапно падает [timestamp] [mpm_event:notice] [pid 20056:tid 140176783820672] AH00493: SIGUSR1 received. Doing graceful restart [timestamp] [core:notice] [pid 20056] AH00060: seg fault or similar nasty error detected in the parent process Соответсвенно сайты уходят в 502 Bad Gateway. У меня эта проблема была из-за программы logrotate и в неточности в насройках. $ sudo nano /etc/logrotate.d/apache2 В этом файле нежно сменить apache2 reload на apache2 restart ! После данных…

  • Массовая замена значений в БД mysql средствами PHPMyAdmin
    Массовая замена значений в БД mysql средствами PHPMyAdmin

    Иногда требуется массово заменить значения в ячейке таблицы базы данных mysql. Допустим стоит задача: одним запросом во всей таблице базы данных поменять запись «значение 1» на  «значение2» . Как это сделать разберём ниже. Заходим в интерфейс phpMyAdmin.  Допустим, у нас есть таблица «yuts_catalog»,в ней поле «leader», и значения в ячейке этого поля «0″, которое…

  • Пять способов вызвать JS функцию
    Пять способов вызвать JS функцию

    JavaScript — язык мультипарадигменный, и в нем имеются механизмы функционального программирования. Пора изучить эти возможности. В этой статье я расскажу вам о пяти способах вызова функций в JavaScript.На первых этапах изучения JavaScript новички обычно думают, что функции в нем работают примерно так же, как, скажем, в C#. Но механизмы вызова функций в JavaScript имеют ряд важных отличий, и незнание…

  • Что нового у iPhone 8 Plus.
    Что нового у iPhone 8 Plus.

    В этой статье мы поговорим о новинке фирмы Apple iPhone 8 Plus. Эту модель вы можете приобрести на сайте yabloko.ua. Совсем недавно была презентация этой модели. Где были представлены эволюционные изменения в мире смартфонов. Далее мы с вами рассмотрим более подробно об этих…
    Блогер: amd2015

  • Как выбрать кофеварку для дома
    Как выбрать кофеварку для дома

      В наш век мы можем наслаждаться ароматным эспрессо из кофеварки находясь просто на своей кухне. Этим в наше время никого не удивишь. Но актуальным остается вопрос выбора кофейного оборудования для дома. Так как на рынке представлено огромное количество так званых…
    Блогер: amd2015

  • Що ми не знаємо про волосся.
    Що ми не знаємо про волосся.

    Для найкращої половини людства надзвичайно важливим питанням залишається краса. Саме заради краси відбувається величезна кількість зусиль, покликаних удосконалити тіло та зовнішність жінки. Стан тіла та обличчя зокрема залежить насамперед від здоров"я та настрою. Всім…
    Блогер: amd2015

  • Депресія у підлітків. Як вивести підлітка з депресії.
    Депресія у підлітків. Як вивести підлітка з депресії.

    Підлітки стикаються з неймовірною кількістю стресу — від змін у період статевого дозрівання до вічних переживань про те, чи вони подобаються комусь, хто вони. За всієї цієї нестабільності та невпевненості не завжди легко відрізнити депресію від емоційних криз, що…
    Блогер: amd2015

  • Дровяные камины для дома - неповторимая атмосфера и тепло
    Дровяные камины для дома - неповторимая атмосфера и тепло

    Как летом журчание воды напоминает о прохладе, так зимой потрескивание живого огня в доме согревает и добавляет ощущение уютного тепла. Как хорошо помогает отдохнуть и расслабиться созерцание пламени от горящих дров, когда за окном сыро и холодно. Создание рабочего,…
    Блогер: justdude


Комментарии

26 + 40 =