Как скрыть область в печатной форме 1с

Обновлено: 07.07.2024

Использование области печати и повторяющихся областей печати табличного документа

Табличный документ предоставляет возможность указать область, которая будет выводиться на печать, а также указывать области, которые будут выводиться на каждой странице. В данной статье рассматривается управление данными свойствами табличного документа из встроенного языка 1С:Предприятия 8.

Область печати

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

Во встроенном языке область печати представляется свойством табличного документа ОбластьПечати . Данное свойство имеет тип ОбластьЯчеекТабличногоДокумента . В качестве области для данного свойства может выступать только область ячеек самого табличного документа. Т.е. для данного свойства нельзя использовать область ячеек другого табличного документа.

Пример установки области печати:

В данном примере табличному документу устанавливаются в качестве области печати строки с 5-й по 10-ю включительно. Т.е. при печати данного документа будет распечатаны только эти строки.

Отметим, что данное свойство не копируется при выводе одного табличного документа в другой. По этому, устанавливать данное свойство нужно именно в том документе, который будет показан пользователю, т.к. установка данного свойства, например, в макете должного эффекта не даст.

Повторяющиеся области печати

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

Повторяющиеся на каждой странице области бывают двух видов: повторяющиеся строки и повторяющиеся колонки. Данные области во встроенном языке представляются свойствами ПовторятьПриПечатиСтроки и ПовторятьПриПечатиКолонки . Они имеют тип ОбластьЯчеекТабличногоДокумента . В качестве области для данных свойств могут выступать только области ячеек самого табличного документа. Т.е. для данного свойства нельзя использовать область ячеек другого табличного документа. Причем, для свойства ПовторятьПриПечатиСтроки могут быть использованы только области - строки, а для свойства ПовторятьПриПечатиКолонки - только области - колонки. Использование прямоугольных областей табличного документа для данных свойств недопустимо.

Пример установки повторяющихся строк:

В данном примере, на каждой печатаемой странице табличного документа будут выводиться строки с 5-й по 10-ю включительно.

Пример установки повторяющихся колонок:

В данном примере, на каждой печатаемой странице табличного документа будет выводиться первая колонка табличного документа.

Отметим, что данные свойства не копируется при выводе одного табличного документа в другой. По этому, устанавливать данные свойства нужно именно в том документе, который будет показан пользователю, т.к. установка данного свойства, например, в макете должного эффекта не даст.

Сделал так:
ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаб");
ЗаголовокТаблицы.Области.Метро.Видимость = Ложь;
У табличного документа выделил две ячейки и задал имя "Метро" в свойствах.
В результате их видно
Задавал имя для всего столбца, но тогда выдает ошибку что области такой нет у ЗаголовокТаблицы.

(1) Тогда пустое пространство останется, а надо чтобы ячейки удалились со сдвигом

(3) Как их не выводить если она содержится в более крупной области которая обязательно выводится?

(5) Это тупо. Но как вариант сойдет если ничего лучше не придумаю

Как работает свойство Видимость? Почему у меня не работает?

(9) Уверен? Ни разу не юзал, но в СП написано "Свойство доступно на запись только для областей из строк или колонок". Если ничего не сдвигает, то к чему бы такое ограничение?

(11) видимостью так не убрать, только делить и не выводить

(12) Эта секция сама выводится если вывести секцию ЗаголовокТаб, т.к. она в нее входит

(14) до "метро" добавь секцию "начало", после - "конец"
ни и вывести + присоединить в коде

(18) То что надо! Эта область даже в строках табдицы сжалась, а не только в заголовке, хотя там я ее ширину не задавал. Наверное для согласования ширины столбцов платформа сама сжала нужные.
Спасибо! Денег на телефон закину, ок?

(19) Лучше отложи эти деньги тому, кто твой код сопровождать потом будет. Авось удержат от криминала.

(21) Это простая типовая задача. А ты ради сиюминутной экономии на паре строчек кода изобрел велосипед. Т.е. при прочих равных снизил наглядность и усложнил сопровождение.

ТабДокумент.УдалитьОбласть(Область, ТипСмещенияТабличногоДокумента.ПоВертикали);

(21) результат неправильный, если убираешь ширину - то будь любезен определи новый формат изменяемым ячейкам, иначе "поползет" весь связанный отчет
(23) прикольно будет видеть часть таблицы, смещенной на одну ячейку вверх

(22) вообще-то прикольно, потому что эта колонка на самом деле есть и если нужно, ее можно раздвинуть мышкой в отчете или например после выгрузки в excel-е

Наведи порядок в своей работе используя конфигурацию 1C "Управление IT-отделом 8"

Сделал так: ЗаголовокТаблицы.Области.Метро.Видимость = Ложь; У табличного документа выделил две ячейки и задал имя "Метро" в свойствах. В результате их видно Задавал имя для всего столбца, но тогда выдает ошибку что области такой нет у ЗаголовокТаблицы.

Тогда пустое пространство останется, а надо чтобы ячейки удалились со сдвигом

Как их не выводить если она содержится в более крупной области которая обязательно выводится?

Это тупо. Но как вариант сойдет если ничего лучше не придумаю

Как работает свойство Видимость? Почему у меня не работает?

Уверен? Ни разу не юзал, но в СП написано "Свойство доступно на запись только для областей из строк или колонок". Если ничего не сдвигает, то к чему бы такое ограничение?

видимостью так не убрать, только делить и не выводить

Эта секция сама выводится если вывести секцию ЗаголовокТаб, т.к. она в нее входит

до "метро" добавь секцию "начало", после - "конец" ни и вывести + присоединить в коде

То что надо! Эта область даже в строках табдицы сжалась, а не только в заголовке, хотя там я ее ширину не задавал. Наверное для согласования ширины столбцов платформа сама сжала нужные. Спасибо! Денег на телефон закину, ок?

Лучше отложи эти деньги тому, кто твой код сопровождать потом будет. Авось удержат от криминала.

Это простая типовая задача. А ты ради сиюминутной экономии на паре строчек кода изобрел велосипед. Т.е. при прочих равных снизил наглядность и усложнил сопровождение.

ТабДокумент.УдалитьОбласть(Область, ТипСмещенияТабличногоДокумента.ПоВертикали);

результат неправильный, если убираешь ширину - то будь любезен определи новый формат изменяемым ячейкам, иначе "поползет" весь связанный отчет прикольно будет видеть часть таблицы, смещенной на одну ячейку вверх

вообще-то прикольно, потому что эта колонка на самом деле есть и если нужно, ее можно раздвинуть мышкой в отчете или например после выгрузки в excel-е

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

Для этого, как и при работе с обычными текстовыми документами, в конфигурациях 1С есть настройка параметров страницы.

Рассмотрим на примерах.

Настройка ориентации и масштаба листов

Имеем документ «Расчетная ведомость».

Нажав кнопку предварительного просмотра в виде лупы, видно, что форма не «вписывается» в лист бумаги и явно выходит за ее границы. Предварительный просмотр показал форму на 9 листах, разрезав ее на куски.

Для настройки параметров листа по кнопке «Еще» выберите команду «Параметры страницы».

Для данной формы установим параметры:

• Ориентация листа – «ландшафт» - альбомная ориентация.

• Масштаб – «По ширине листа».

При таком масштабе программа автоматически выровняет печатную форму по краям листа. Нажмите «Ок» и проверьте результат.

Форма вместилась на два листа и по краям нет пустого места. Ширина автоматически подобрана.

Ведомость распечатывается с двух сторон.

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

Настройка полей. Двусторонняя печать в 1С

При печати документа обратите внимание на настройку полей: с какой стороны делается отступ для подшивки, чтобы край документа не «съело».

Для этого выставьте нужный размер в настройке «Поля».

В примере с расчетной ведомостью это верхнее поле, хотя документ можно подшить и горизонтально, тогда отрегулируйте левое поле.

При двусторонней печати не забудьте про зеркальное отображение страниц – «Чередование страниц» и настройки двусторонней печати. Настройте параметры в разделе «Режимы печати».

Как распечатать два экземпляра документа в 1С на одном листе?

Рассмотрим еще один пример. Имеем документ «Расходная накладная». Документ небольшой и пользователь может распечатать на одном листе два экземпляра.

Для настройки перейдите по кнопке «Еще» - «Параметры страницы».

В настройке установите переключатель в положение – 2 экземпляра на странице. Нажмите «Ок» и распечатайте документ.

И так, сам макет документа мы уже создали, как это сделано, вы можете узнать в соответствующей статье.

Сейчас мы получим ранее созданный макет, заполним табличный документ 1С по этому макету, и нам останется вывести табличный документе 1С на просмотр для последующей печати.

Мы сделаем упрощенный (учебный) вариант: формирование всего нашего табличного документа будет осуществляться на модуле управляемой формы. Для этого мы на форме документа создадим команду «ПечатьДокумента», которую разместим в командной панели формы.

Создание и размещение команды печать

Для команды ПечатьДокумента создадим два обработчика в клиентском и серверном контексте.

Создание обработчиков команды

Серверный обработчик переименуем в функцию, в нем мы создадим программно табличный документ 1С, который она и будет возвращать.

Теперь нужно получить макет, созданный в предыдущей статье, для этого мы будем использовать метод менеджера документа ПолучитьМакет.

Имейте в виду, что метод ПолучитьМакет напрямую доступен только или в модуле документа, или в модуле менеджера документа. Еще этот метод можно применить, используя менеджер конкретного объекта, как я сделал выше. Непосредственно на форме его использовать нельзя!

Доступность метода получить макет

Алгоритм заполнения табличного документа будет следующим: мы будем получать нужную область макета, если необходимо заполнять эту область какими-нибудь данными, а потом выводить полученную область в табличный документ.

Напомню, что макет у нас имеет четыре области: Шапка, ШапкаТаблицы, СтрокаТаблицы, Подвал. Области Шапка, ШапкаТаблицы и Подвал будут выведены в табличный документ всего один раз, а область СтрокаТаблицы будет выведена столько раз, сколько строк в табличной части обрабатываемого документа.

Области макета табличного документа

Весь код ниже я выполняю между кодом получения макета и возвратом табличного документа.

Получим самую первую область макета, при помощи метода ПолучитьОбласть, где в качестве параметра следует указать название получаемой области.

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

Мы закончили с областью Шапка, и нам нужно вывести её в табличный документ, делается это при помощи метода Вывести табличного документа, где в качестве параметра указывается выводимая область.

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

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

В коде выше, мы обошли табличную часть документа, обратившись к ней через основной реквизит Объект управляемой формы (основной формы документа).

Обратите внимание, я использовал метод Заполнить, потому что названия параметров макета совпадают с названиями реквизитов табличной части документа.

Нам осталось получить область Подвал и вывести её в табличный документ.

На этом мы закончим работать с функцией на сервере, весь ее код будет выглядеть следующим образом.

Нам осталось доделать клиентскую процедуру ПечатьДокумента: мы будем выводить на просмотр полученный табличный документ при помощи метода табличного документа Показать().

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

Проверим, как работает наш код.

Управляемая форма документа

Показ табличного документа

Напомню, что я рассмотрел самый простой (учебный) пример вывода печатной формы, следующие примеры будут более приближенные к реальным.


Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Читайте также: