Как вставить разделитель страниц в макет 1с

Обновлено: 07.07.2024

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

Отчет будем формировать программно переопределив событие "ПриКомпоновкеРезультата"

Процедура ПриКомпоновкеРезультата ( ДокументРезультат , ДанныеРасшифровки , СтандартнаяОбработка )
СтандартнаяОбработка =ЛОжь;

Настройки = КомпоновщикНастроек . ПолучитьНастройки ();

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных ;
МакетКомпоновки = КомпоновщикМакета . Выполнить ( СхемаКомпоновкиДанных , Настройки , ДанныеРасшифровки );

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных ;
ПроцессорКомпоновки . Инициализировать ( МакетКомпоновки );

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент ;
ПроцессорВывода . УстановитьДокумент ( ДокументРезультат );

Как вы видите здесь все шаблонно, весь фокус находится в анализе ЭлементРезультата, в нем нужно определить когда собсвенно резать. Как я это решил для себя:

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

Далее для этой группировки сделал свой макет:

Чтобы сделать группировку не видимой я в настройках, для этой группировки установил условное оформление: цвета текста, фона, линий - белые.

На закладке Другие настройки установил: Тип макета - вертикально, Выводить отбор - не выводить.

Для чего все это было сделано, напомню кусочек кода:

Для группировки ГруппировкаРазрыв у нас количество в коллекции ЗначенияПараметров будет равно 1. Всегда будет 1 параметр и его значение будет всегда равно нашей строке "Разорвать" Благодаря этому и появляется выловить его при обходе результата. В пост обработки табличного документа придется удалить 2 последние строки, иначе у нас будет печататься пустая страница.

Разместил: E_Migachev  Версии: | 7.x | 8.x | 8.2 УП |  Дата: 04.08.2010   Прочитано: 49160

Распечатать

Похожие FAQ

Еще в этой же категории

Как программно изменить текст, цвет, фон ячейки или области табличного документа?  6
Ниже приведено несколько полезных шаблонов кода по работе с табличным документом: //Пример получения текста ячейки ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента; ПолеТабДок.Область("R1C2").Текст = спрНоменклатура.Наименование; ПолеТабДок Загрузка данных из файла табличного документа в управляемом приложении  3
В управляемом приложении (если конечно вы не работаете в Толстом клиенте) можно столкнутся с такой проблемой, что многие функции работают только на сервере. Что делать, если у Вас есть файл-макет с данными, которые надо прочитать (обработать)? Надо Как при печати выводить шапку на каждой странице (ПовторятьПриПечатиСтроки)?  1
Необходимо при печати, если происходит переход на следующую страницу таблицы, выводить шапку таблицы вверху на новой странице. для печати шапки на каждой странице в языке программирования есть специальный метод - ПовторятьПриПечатиСтроки Прим Как преобразовать MXL файл в Таблицу Значений?  0
Встретилась задачка, нужно было загружать данные из mxl файлов выгруженных из другой базы 1С. Файл MXL – это созданный в программе «1С: Предприятие» (последних версий 7.7 или 8) табличный документ. вот код быстрой конвертации mxl в тз ТабДок Как сделать Расшифровку в табличном документе  0
Вопрос: Подскажите пожалуйста, каким образом можно сделать следующее. У меня есть выводимый в табличный документ результат запроса, к ячейке есть расшифровка. Я хочу чтобы при двойном клике на ячейку выполнялась процедура которая к примеру зап Посмотреть все в категории Табличный документ

В этой статье вы узнаете, по какому принципу осуществляется работа со страницами в табличном документе 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


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

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

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

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


На втором шаге определим реквизиты документа, которые будет содержать шапка печатной формы:


На третьем шаге определим, что все реквизиты табличной части будут отображены в печатной форме:


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

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


Нажмем OK. В конфигураторе откроется модуль команды «Печать», модуль менеджера документа «ПриходнаяНакладная» и макет этого документа.

Модуль команды Печать

Модуль менеджера документа


Редактирование макета

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

В созданной области, в колонке Цена , напишем ВСЕГО , а в колонке Сумма напишем ВсегоПоДокументу :


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

Откроем модуль менеджера документа «ПриходнаяНакладная», найдем в нем процедуру Печать и отредактируем ее следующим образом

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