Как задать область печати в макете 1с
В массе своей, в прикладных задачах нужно вывести на печать какие-либо данные оформленные нужным образом (например, счет, торговую накладную, акт сверки и т.п.). Для вывода на печать в 1С 8.3. можно использовать табличные документы. В предыдущей статье я показал, как создать макет табличного документа и как правильно его оформить. Нам осталось научиться заполнять его данными и выводить на просмотр для последующей печати. Материал по выводу табличного документа на печать, я решил разбить на две части. В первой части мы разберем простой пример (я бы назвал его учебным), а во втором случае реализуем пример приближенный к реальному. Эта статья — первая часть, в ней мы реализуем простой пример: будем выводить табличный документ на печать, используя команду управляемой формы. Этот вариант имеет следующий недостаток: нельзя вывести печатную форму из списка документов, можно это сделать, только открыв форму документа. Для того, чтобы можно было вывести печатную форму из списка документов, необходимо создать команду документа. Этот вариант мы рассмотрим в следующей статье.
И так, сам макет документа мы уже создали, как это сделано, вы можете узнать в соответствующей статье.
Сейчас мы получим ранее созданный макет, заполним табличный документ 1С по этому макету, и нам останется вывести табличный документе 1С на просмотр для последующей печати.
Мы сделаем упрощенный (учебный) вариант: формирование всего нашего табличного документа будет осуществляться на модуле управляемой формы. Для этого мы на форме документа создадим команду «ПечатьДокумента», которую разместим в командной панели формы.
Для команды ПечатьДокумента создадим два обработчика в клиентском и серверном контексте.
Серверный обработчик переименуем в функцию, в нем мы создадим программно табличный документ 1С, который она и будет возвращать.
Теперь нужно получить макет, созданный в предыдущей статье, для этого мы будем использовать метод менеджера документа ПолучитьМакет.
Имейте в виду, что метод ПолучитьМакет напрямую доступен только или в модуле документа, или в модуле менеджера документа. Еще этот метод можно применить, используя менеджер конкретного объекта, как я сделал выше. Непосредственно на форме его использовать нельзя!
Алгоритм заполнения табличного документа будет следующим: мы будем получать нужную область макета, если необходимо заполнять эту область какими-нибудь данными, а потом выводить полученную область в табличный документ.
Напомню, что макет у нас имеет четыре области: Шапка, ШапкаТаблицы, СтрокаТаблицы, Подвал. Области Шапка, ШапкаТаблицы и Подвал будут выведены в табличный документ всего один раз, а область СтрокаТаблицы будет выведена столько раз, сколько строк в табличной части обрабатываемого документа.
Весь код ниже я выполняю между кодом получения макета и возвратом табличного документа.
Получим самую первую область макета, при помощи метода ПолучитьОбласть, где в качестве параметра следует указать название получаемой области.
В этой области мы используем шаблон, в котором имеются два параметра: НомерДок и ДатаДок передадим номер документа и дату документа в соответствующие параметры области, используя свойство Параметры нужной нам области. Данное свойство содержит коллекцию параметров табличного документа, и мы можем обращаться к нужному параметру через оператор «.».
Мы закончили с областью Шапка, и нам нужно вывести её в табличный документ, делается это при помощи метода Вывести табличного документа, где в качестве параметра указывается выводимая область.
Точно также получим область, которая соответствует шапке таблицы, заполнять его не нужно, а мы просто выведем его сразу же в табличный документ.
Следующим шагом выведем область СтрокаТаблицы, причем эта область должна быть выведена столько раз, сколько строк в табличной части документа. Поэтому мы сначала получим эту область, а потом циклом будем обходить табличную часть, заполнять параметры области и выводить область в табличный документ.
В коде выше, мы обошли табличную часть документа, обратившись к ней через основной реквизит Объект управляемой формы (основной формы документа).
Обратите внимание, я использовал метод Заполнить, потому что названия параметров макета совпадают с названиями реквизитов табличной части документа.
Нам осталось получить область Подвал и вывести её в табличный документ.
На этом мы закончим работать с функцией на сервере, весь ее код будет выглядеть следующим образом.
Нам осталось доделать клиентскую процедуру ПечатьДокумента: мы будем выводить на просмотр полученный табличный документ при помощи метода табличного документа Показать().
В качестве первого параметра метода Показать, я указал название, которое выйдет на форме табличного документа.
Проверим, как работает наш код.
Напомню, что я рассмотрел самый простой (учебный) пример вывода печатной формы, следующие примеры будут более приближенные к реальным.
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Использование области печати и повторяющихся областей печати табличного документа
Табличный документ предоставляет возможность указать область, которая будет выводиться на печать, а также указывать области, которые будут выводиться на каждой странице. В данной статье рассматривается управление данными свойствами табличного документа из встроенного языка 1С:Предприятия 8.
Область печати
Область печати табличного документа отвечает за то, что будет выдаваться на принтер при печати данного табличного документа.
Во встроенном языке область печати представляется свойством табличного документа ОбластьПечати . Данное свойство имеет тип ОбластьЯчеекТабличногоДокумента . В качестве области для данного свойства может выступать только область ячеек самого табличного документа. Т.е. для данного свойства нельзя использовать область ячеек другого табличного документа.
Пример установки области печати:
В данном примере табличному документу устанавливаются в качестве области печати строки с 5-й по 10-ю включительно. Т.е. при печати данного документа будет распечатаны только эти строки.
Отметим, что данное свойство не копируется при выводе одного табличного документа в другой. По этому, устанавливать данное свойство нужно именно в том документе, который будет показан пользователю, т.к. установка данного свойства, например, в макете должного эффекта не даст.
Повторяющиеся области печати
Повторяющиеся области печати используются для того, чтобы некоторые области табличного документа распечатывались на каждой странице. Наиболее распространенный пример применения повторяющихся при печати областей - печать шапки таблицы на каждой странице.
Повторяющиеся на каждой странице области бывают двух видов: повторяющиеся строки и повторяющиеся колонки. Данные области во встроенном языке представляются свойствами ПовторятьПриПечатиСтроки и ПовторятьПриПечатиКолонки . Они имеют тип ОбластьЯчеекТабличногоДокумента . В качестве области для данных свойств могут выступать только области ячеек самого табличного документа. Т.е. для данного свойства нельзя использовать область ячеек другого табличного документа. Причем, для свойства ПовторятьПриПечатиСтроки могут быть использованы только области - строки, а для свойства ПовторятьПриПечатиКолонки - только области - колонки. Использование прямоугольных областей табличного документа для данных свойств недопустимо.
Пример установки повторяющихся строк:
В данном примере, на каждой печатаемой странице табличного документа будут выводиться строки с 5-й по 10-ю включительно.
Пример установки повторяющихся колонок:
В данном примере, на каждой печатаемой странице табличного документа будет выводиться первая колонка табличного документа.
Отметим, что данные свойства не копируется при выводе одного табличного документа в другой. По этому, устанавливать данные свойства нужно именно в том документе, который будет показан пользователю, т.к. установка данного свойства, например, в макете должного эффекта не даст.
В 1С Предприятии для представления табличной информации существует специальный вид файлов "Табличный документ". Файлы могут быть созданы в 1С Конфигураторе или в 1С Предприятии. Для создания новых файлов необходимо перейти в главном меню Файл->Новый. В языке программирования 1С существует одноименный объект ТабличныйДокумент, который позволяет программно создавать, сохранять и выводить табличные документы.
Область печати
В табличном документе может быть определена область печати. В этом свойстве можно указать ту область, которая будет напечатана на принтере. Такое может потребоваться если нужно распечатать часть документа. Это можно сделать двумя способами. Задать можно только одну область.
1. Через пользовательские настройки
Область печати может быть задана непосредственно через главное меню Таблица->Настройка печати->Задать область печати. Так же через главное меню можно удалить область печати Таблица->Настройка печати->Удалить область печати. Добавляемая и удаляемая области должны быть выделены.
На печать будет выведена 3 строка с 1 по 7 колонку. Остальные области будут проигнорированы.
2. Средствами встроенного языка
Другой вариант определить область печати - программный. Используя объект встроенного языка ТабличныйДокумент, можно задать какую область печатать. Для этого есть специальное свойство ОбластьПечати. В этом свойстве определяется ОбластьЯчеекТабличногоДокумента, которая будет печататься.
Следует учесть, что при программном выводе одного табличного документа в другой свойство ОбластьПечати затирается. Так же происходит при определении области печати в макете и последующем выводе макета в табличный документ. Поэтому область печати нужно задавать в результирующем табличном документе.
Повторяющаяся область печати
Табличный документ широко применяется при создании печатных форм. Довольно часто, при создании печатных форм может потребоваться повторять какую либо информацию вверху на каждой последующей странице. Например, это может быть шапка таблицы. Задать можно только одну область.
1. Через пользовательские настройки
Повторяющуюся область можно задать через главное меню Таблица->Настройки печати->Повторять на каждом листе. Для удаления области, в главном меню нужно выбрать Таблица->Настройки печати->Удалить повторение. Добавляемая и удаляемая области должны быть выделены.
На всех последующих страницах, вверху, будет повторяться вывод 3 строки. Остальные области будут выводиться как обычно.
2. Средствами встроенного языка
Для решения задачи вывода повторяющейся области, в объекте ТабличныйДокумент есть специальные свойства: ПовторятьПриПечатиСтроки и ПовторятьПриПечатиКолонки. Как видно из названия, в первом свойстве ПовторятьПриПечатиСтроки определяется область строк (тип: ОбластьЯчеекТабличногоДокумента, задается только номерами строк), а во втором ПовторятьПриПечатиКолонки задается область колонок (тип: ОбластьЯчеекТабличногоДокумента, задается только номерами колонок).
Следует учесть, что при программном выводе одного табличного документа в другой, свойства ПовторятьПриПечатиСтроки и ПовторятьПриПечатиКолонки затираются. Так же происходит при определении повторяющихся областей печати в макете и последующем выводе макета в табличный документ. Поэтому эти свойства нужно задавать в результирующем табличном документе.
Комментарии (1)
Большинство обучающих материалов по программированию в системе 1С при описании формирования печатных форм на основе объекта «Табличный документ» ограничиваются выводом готовой формы на экран. Для пользователей же куда более важным является то, как документ будет выглядеть в распечатанном виде. Рассмотрим свойства и методы табличного документа, относящиеся к настройкам печати.
Большинство обучающих материалов по программированию в системе 1С при описании формирования печатных форм на основе объекта «Табличный документ» ограничиваются выводом готовой формы на экран. Для пользователей же куда более важным является то, как документ будет выглядеть в распечатанном виде. Здесь, кроме хорошо сверстанного макета, играют роль и установки параметров печати.
Почти все параметры, доступные в диалогах настройки печати (настройки принтера, свойства страницы), можно указать непосредственно при формировании табличного документа.
Рассмотрим свойства и методы табличного документа, относящиеся к настройкам печати (в приведенных примерах «ТабДок» это объект типа «Табличный документ»).
Свойство «ИмяПринтера» позволяет задать для печати принтер, отличный от установленного по умолчанию. Имя должно совпадать с именем принтера, заданным в системе:
ТабДок . ИмяПринтера = "HP LaserJet 3050 Series PCL 6" ;
При печати пакета документов можно сэкономить время, установив признак разбора по копиям:
ТабДок . РазборПоКопиям =истина;
Число копий можно указать так:
ТабДок . КоличествоЭкземпляров = 5 ;
Разумеется, можно задать поля:
ТабДок . ПолеСлева = 20 ; //Поле слева 20мм, остальные поля 10мм (по умолчанию)
Еще несколько свойств страницы:
При необходимости можно указать конкретное значение масштабирования в процентах (свойство «МасштабПечати»).
Для нестандартного размера бумаги (Custom) можно указать значения высоты и ширины страницы (в мм):
Также в табличном документе доступно управление выводом колонтитулов и их содержимым. Для этого служат свойства «ВерхнийКолонтитул» и «НижнийКолонтитул». Например:
Сформированный документ отправляется на печать с помощью метода «Напечатать()». Возможно два варианта вызова.
1) Непосредственно на принтер:
ТабДок . Напечатать ( РежимИспользованияДиалогаПечати . НеИспользовать );
ТабДок . Напечатать (истина);
2) Перед печатью будет выведен диалог печати:
ТабДок . Напечатать ( РежимИспользованияДиалогаПечати . Использовать );
ТабДок . Напечатать (ложь);
Кроме того можно управлять и разбиением документа на страницы. Оценить количество страниц в документе по настройкам текущего принтера можно так:
С помощью методов «ПроверитьВывод()» и «ПроверитьПрисоединение()» можно определить, умещается ли табличный документ или массив областей табличного документа на странице в высоту и в ширину при текущих настройках принтера.
Надо иметь ввиду, что работа последних трех методов зависит от установленного принтера. Если методу не удается его найти, вызывается исключение.
Таким образом, можно управлять постраничным выводом на печать и контролировать заполнение страницы:
Важной характеристикой платформы «1С:Предприятие 8.2» является строгое разделение свойств и методов по контексту исполнения. Если все приведенные выше свойства доступны в любом контексте, то перечисленные методы недоступны на тонком клиенте. Исключением является метод «Напечатать()», доступность которого по понятным причинам ограничена клиентской частью. Это означает, что формирование табличного документа должно происходить на сервере, а отправлять его на печать следует в клиентской процедуре.
Функция печать документов в программах «1С Предприятие» имеет свои особенности настроек, при выводе на печать готового файла.
Настройка печатного документа
Перед печатью необходимо создать печатную форму и ввести необходимые реквизиты, которые могут быть обязательные, например, подписи ответственных лиц. Настройки для таких реквизитов можно установить по умолчанию для вывода в печатную форму. Для этого следует заполнить сведения об организациях, перейдя по ссылкам «Главное» - «Реквизиты организации».
В разделе «Подписи» указываются данные руководителя, кассира и главного бухгалтера. При изменении ответственных лиц в организации всю информацию действий можно проследить перейдя в раздел «История». Например, при необходимости вывода одного документа на печать под разными датами и за подписями разных ответственных лиц.
Для автоматического заполнения данных ответственных лиц за подготовку отчетов, следует ввести все необходимые параметры в разделе «Ответственные лица за подготовку отчетов».
На рисунке №4 представлен пример автоматического заполнения документа.
Необходимо знать, при формировании печатной формы существуют специальные закладки для внесения данных. На рисунке №5 представлен пример: при открытии вкладки «Инвентаризационная комиссия» требуется внести информацию о членах комиссии.
В печатной форме, при не заполнении данных, поля остаются пустыми.
Печать табличного документа 1С. Параметры печати
Для избежания ситуации, при которой на печати таблица делит документ на несколько листов, следует воспользоваться кнопкой «Предварительный просмотр документа». При ее нажатии, появляется окно с итоговым расположением таблицы на бумаге. Пример на рисунке №6. Внизу окна указывается количество страниц документа.
Если документ выходит за рамки листа, разбивает колонки таблицы и занимает несколько страниц, то следует воспользоваться разделом «Параметры страницы». Перейдя в данный раздел, появляется возможность настроить необходимые параметры, для правильного расположения таблиц и остальных частей документа на бумаге.
- Масштаб. Есть два варианта: «100%» и «По ширине страницы». При необходимости, можно изменить масштаб увеличив или уменьшив процент, или выбрав второй вариант, при котором размер таблицы автоматически подберется под размер страницы.
- Ориентация: «Книжная» - при горизонтальном расположении документа на бумаге, или «Альбомная» - при вертикальном расположении.
- Экземпляров на страницу. Здесь стоит указать сколько листов должно поместиться на одной странице — 1, 2 или автоматический вариант. При выводе на печать нескольких небольших документов, удобнее всего выбрать последний вариант, при котором будет происходить автоматический подбор. В противном случае, все документы напечатаются на отдельных листах.
- Поля. Данная настройка позволяет изменить отступы полей и сохранить масштаб документа. Но следует помнить, что отступ слева требуется для подшивки документа и должен составлять не менее 300 мм. В противном случае — часть документа не будет читаться при архивации.
- Чередование страниц и двусторонняя печать — эти функции позволяют напечатать документ на лицевой и обратной стороне листа.
- Колонтитулы, при необходимости следует уменьшить их размер для увеличения размера страницы.
В разделы «Предварительный просмотр» и «Параметры страницы» можно перейти через главное меню «Файл», находясь в печатной форме документа. Пример рисунок №10.
На рисунке №12 представлен вариант, при котором на печать выводятся страницы с 3 по 5, и дополнительно 10.
Ошибки печати
При отправке документа на печать, программа может выдавать ошибку или не печатать вовсе. Какие возможны причины неисправности?
Изменение принтера пользователя после переустановки. Система автоматически выбирает для печати принтер, на который ранее уже производилась печать. Для исправления этой ошибки можно попробовать выбрать другой принтер перед печатью документа, но такой вариант не всегда эффективен. В случае, когда первый вариант не подходит, следует сбросить настройки, выбрав в «Меню» следующий путь: «Администрирование», «Настройки пользователей и прав», «Настройки пользователей», «Прочие настройки», «Настройки печати табличных документов», «Очистить». (пример рисунки №13,№14 и №15)
Выполнив все вышеперечисленные действия, необходимо выбрать требуемый принтер в «Параметры страницы».
Еще один вариант ошибки — сохранение документа в формате PDF, а не вывод на печать, при работе в браузере. Такая ошибка может возникнуть при отсутствии подключения принтера. Для исправления проблемы, требуется изменить настройки в браузере перейдя в раздел «Печать» или «Предварительный просмотр», далее в «Изменить» и указать нужный принтер. Пример на рисунке №16.
Иногда ошибки в работе приложения «1С Предприятие» с принтерами могут возникать из-за сбоя в коде самой программы, в данном случае исправлением занимаются сами разработчики. Чаще всего ошибки при печати в приложении возникают при неправильном заполнении настроек.
Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку
Читайте также: