1с закрепить область в макете

Обновлено: 05.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(1) nodalt, как вариант можно подменить "автоматическое" формирование отчета на "ручное", получить таблицы и уже обрабатывать ее как надо (менять колонки, фиксировать и т.д). Для этого можно использовать предопределенную процедуру ПриКомпоновкеРезультата модуля отчета.

Например (я так делал, но может есть и лучше способ):

Пробовал программно, но не работает этот код:

Может быть из-за того, что макет вручную рисовал.

(2) nodalt, ЭлементыФормы.Результат.ФиксацияСверху = ЧислоСтрокФиксации;
У меня повешено на кнопку "Зафиксировать шапку" на форме. Работает. (2) nodalt, и зачем это делать при компоновке результата?
Можно последней строкой в: Процедура ДействияФормыСформировать(Кнопка)
ЭлементыФормы.Результат.ФиксацияСверху = ЧислоСтрокФиксации; можно в этом макете спозиционироваться на первую ячеку нужной строки и нажать
таблица->вид->зафиксировать таблицу
чтобы снять фиксацию еще раз нажать эту кнопку

(10) nodalt, очень странно. Я привел код с работающей обработки и там проблем с фиксацией нет - все как часы работает. Обработка на "управляемой форме".

Может быть ты передаешь результат куда-то дальше и уже там фиксация слетает? проверь точнокй останова на конце процедуры - есть фиксация или нет. Или добавь последней строкой показ табличного документа. ДокументРезультат.Показать() - если только она на сервер не руганется

(13) Ягг, у меня форма обычная. Сам удивляюсь. Пробовал и в модуле код писать при компоновке результата и в модуле формы при открытии. Свойства поля "Результат" при отладке показывают фиксацию, но всё равно строки при скролинге предательски исчезают. Думаю всё дело в ручной прорисовке макета. С другой стороны - какая разница . (14) nodalt, если форма обычная тогда попрбуй в конце ДокументРезультат.Показать() - посмотри будет фиксация или нет

(14) nodalt, Сделал специально новый отчет (на обычной форме) и у меня даже так работает

(16) Ягг, У меня при обычной схеме тоже работает, а при собственном макете не хочет. В СКД это возможно, насколько знаю, только при программном выводе отчета.
Странно, у меня вот тоже никак не получалось зафиксировать строки при полностью автоматическом выводе отчета.
"Полностью автоматическом" - имею в виду, когда вообще нет никакой процедуры-обработчика на кнопку "Сформировать". Просто стандартное ее поведение - формирование отчета на основе схемы компоновки.
Даже если пишу в событии "ПриКомпоновкеРезультата"

все равно не фиксирует.
Что интересно, другие фишки, типа

работают.
А вот фиксация - нет :)

Сделал специально новый отчет (на обычной форме) и у меня даже так работает

Ягг, вывод отчета полностью автоматический?

Если есть возможность, выложите, пожалуйста, кто-нибудь, у кого работает, простенький отчетик с фиксацией строк.
Если не трудно :)

(18) 1cUserAndrew, вот пример - просто выводит справочник контрагентов и фиксируем 3 первые строки отчета (фиксация в модуле отчета). Все стандартное (кроме фиксации конечно). Отчет на обычной форме (но и на управляемой работает - проверил). Проверял на релизе (8.2.13.205) - конфигурация "Зарплата и кадры" (не суть важно, так как справочник "Контрагенты" есть везде)

В модуле отчета единственная процедура, а так все стандартное от СКД (никаких дополнительных форм)

PS. В целом Макет стандартный, но для проверки (тут не выложил) создал для группировки свой собсвенную область (на закладке "макеты") - фиксация осталась.

Использование предопределенных макетов

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


Любой предопределенный макет представляет собой область табличного документа. Существуют следующие типы предопределенных макетов :

  • Макет поля,
  • Макет группировки,
  • Макет заголовка группировки,
  • Макет ресурсов.

Примерная структура отчета приведена на указанном ниже рисунке:


Примерная структура отчета, содержащего таблицу, приведена на указанном ниже рисунке:


Макет поля

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


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


Затем в списке параметров макета необходимо установить в качестве выражения представление выводимого поля. В нашем случае это будет представление поля Контрагент .


В данном примере макет поля Контрагент выводится наклонным шрифтом увеличенной высоты.


Макет группировки

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

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

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

Заголовок иерархии - данный макет предназначен для оформления заголовка иерархической группировки. Данный заголовок выводится в начале иерархической группировки .

Подвал иерархии - данный макет предназначен для оформления подвала иерархической группировки. Данный подвал выводится в конце иерархической группировки.

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

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

Структура предопределенных макетов группировки показана на указанном ниже рисунке:

На указанном ниже рисунке создается макет заголовка для группировки с именем ДетальныеЗаписиНоменклатуры .


В данном примере для группировки с именем ДетальныеЗаписиНоменклатуры дополнительно выводится реквизит Код , а также изменена ширина колонок.


Макет заголовка группировки

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


В данном примере для группировки Контрагент создан макет заголовка группировки. Данный макет также действует и на группировку с именем ДетальныеЗаписиНоменклатуры .


В данном примере для группировок Контрагент и ДетальныеЗаписиНоменклатуры созданы разные макеты заголовка группировки.


Макет ресурсов

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


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


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


На указанном ниже рисунке изображен отчет с таблицей, в которой колонками являются контрагенты, а строками – номенклатура. Для указанной таблицы создано два макета ресурсов : макет ресурсов для колонок (изображен наклонным шрифтом) и макет ресурсов для общих итогов по горизонтали (изображен наклонным жирным шрифтом).


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

В этой статье вы узнаете, по какому принципу осуществляется работа со страницами в табличном документе 1С 8.3. Будет показано, как определить помещается ли область (или области) в страницу, а также как принудительно осуществить разделение страниц.

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

Управляемая форма обработки 1С

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

Макет табличного документа 1С

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

Этот код комментировать не будем, если у вас он вызывает затруднения, то ознакомьтесь с моими предыдущими статьями и видео-уроками.

Сейчас, когда мы выполним команду и выведем, например, 80 строк, то у нас все будет показано на одной странице, а при попытке распечатать (или выполнить предварительный просмотр) платформа самостоятельно разобьет табличный документ на страницы.

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

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

Поясним этот код.

Используя метод табличного документа ПроверитьВывод можно проверить, войдет ли вывод области или нескольких областей на страницу табличного документа. Этот метод возвращает Истина, если область вмещается на страницу, и ложь – если нет. Параметром этого метода может быть как область, так и массив областей.

В функции мы создали массив, который состоит из области строки и из области подавала таблицы.

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

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

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

Другие статьи про табличные документы в 1С:

Это изображение имеет пустой атрибут alt; его имя файла - 1C-в-желтом-цвете-3D-221x300.jpg

Это изображение имеет пустой атрибут alt; его имя файла - 1_в-желтом-цвете-3D-маленькая-221x300.jpg

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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

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