Как вывести шапку таблицы на каждой странице 1с

Обновлено: 07.07.2024

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

Вопрос, как сделать по нормальному?

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Расположить шапку сайта на каждой странице в версии для печати
Сайт разработан под Chrome. При печати длинной таблицы нужно на каждом листе делать шапку. При.

Нужно ли выводить название сайта и описание на каждой странице в заголовке?
Wordpress или некоторые темы позволяет их не выводить, Вот так это выглядит в коде дефолтной.

Как в joomla выводить на странице меню для одной страницы, а для другой не выводить
Здравствуйте, скажите пожалуйста, как на joomla 1.5 можно выводить меню для отдельных страниц?

ПовторятьПриПечатиСтроки из условия убери просто перед Показать() задай один раз

Что-то не помогло, вообще шапку только 1 раз выводит Что-то не помогло, вообще шапку только 1 раз выводит Xomych, А можете побольше кода кинуть? Может я делаю что не так Владислаучык, , так я собственно весь код и кинул тебе выше. Эти строки не отображаются на экране, они будут повторяться только при печати. В предварительном просмотре ты их можешь увидеть

А почему не работает мой код, если Если НЕ ТабДокумент.ПроверитьВывод(Т) Тогда - вот если оно не вмещается, то даёт истина и должна выводится шапка, но почему то ПроверитьВывод якобы вмещается, но по делу ничего не вмещается и выводится на следующей строке?

Добавлено через 7 минут

Добавлено через 52 секунды
Получается когда строка реально не вмещается(да еще и с пустой строкой вместе), ПроверитьВывод - выводит как будто она вмещается

Добавлено через 23 минуты
ПРосто иногда работает, а иногда просто одна строка на странице выводит и переход к следующей странице


Последовательно выводить блоки на странице по полю БД
Проблема заключается в следующем. У меня в блок выводятся поля по значению id. Но блоком много, а в.

Выводить числа в новой системе счисления, пока не будет напечатано n
С клавиатуры вводится число p, 1<p<10 -- количество цифр в новой системе счисления, и n, n>0 --.

Flash на новой странице
в заголовке сайта флеш-ролик, как сделать чтобы при открытии новой страницы он не проигрывался.

Как выводить на просмотр в отчете по 2 странице на экран
Подскажите, пожалуйста, Как выводить на просмотр в отчете по 2 странице на экран? т.е. есть.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Постраничный вывод в табличный документ

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

Метод табличного документа ПроверитьВывод()

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

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

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

1. выводим в результирующий табличный документ область - заголовок первой страницы;
2. для каждой строки из ведомости:

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

3. выводим подвал отчета.

Ниже приведен пример того, как подобный алгоритм может быть реализован на встроенном языке 1С:Предприятия 8.0:

Метод табличного документа ПроверитьПрисоединение()

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

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

Повторение шапки получается по следующему алгоритму:

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

2. При выводе отчета "по элементно" анализируем "Элементы вывода компоновки" и высоту табличного документа (Результата), откуда определяем первую и последнюю строчку "Шапки отчета".

3. ОбластьШапки = ТабличныйДокумент.Область(НачальнаяСтрокаШапки, , КонечнаяСтрокаШапки).

4. ТабличныйДокумент.ПовторятьПриПечатиСтроки = ОбластьШапки.

Ну, вот и все. Дело в шляпе.

Колонтитулы это просто.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Часто в печатных формах требуется вывести номер страницы над шапкой таблицы.
Андрей Андревич, есть ли способ доработать Ваш алгоритм в этом направлении? Спасибо, зачастую это крайне необходимо (особенно при массивных отчетах) Спасибо. Пока нет необходимости, но была ситуация, когда надо было. И пришлось играться гем. А что произойдет с областью шапки если пользователь изменит вариант отчета? И накидает вместо одной группировки 5, а еще к области шапки добавится вывод Параметров отчета и его отборы. Я не увидел решение этой задачи. (15) logarifm, хоть 5, хоть 10 группировок, область шапки отчета будет прочитана в любом случае, а иначе какой кайф от предложенного подхода. Отчет скачал и посмтрел все сделано грамотно. Просто в статье не указано всего. Старайтесь излагать все в статье. (16) logarifm, по-моему изложено все, что необходимо.
Не разобрана функция "ПолучитьМакетШапки", так отсылаю в код отчета, более того идея функции взята из типовых конфигураций. Не хочется в статье построчно код отчета комментировать. Проще открыть отчет в конфигураторе, посмотреть выполнение с помощью отладчика. Код прост, разобраться не сложно.
Можно конечно вдаться в разбор макета компоновки, но это тема для отдельной статьи. У кого не выводиться колонтитул, надо отрегулировать ширину поля
Результат.ПолеСверху = 20;

Я думал будет пример с управляемой формой.

В управляемой форме в процедуре ПриКомпоновкеРезультата не работает.

На управляемых формах тоже всё работает, нужно только слегка подпилить. Стоящая фича, спасибо, мне понравилось! Хм. недавно искала информацию по данной теме - и ничего не нашла. а ваша статья от 12 года!
Попробую применить.
Спасибо! Как вывести колонтитулы на Управляемых формах (БП 3.0)? Отчет сам запускается, а колонтитулов нет

Всех приветствую. Выкладываю работоспособный код. Нашел на просторах интернета и немного изменил.

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

КомпановщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

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

//фиксировать шапку можно только для ОДНОЙ таблицы или группировки

КоличествоТаблиц = 0;
ВысотаШапки = 0;
ВерхОбластиДанных = 1;

Для Каждого ЭлементТела из МакетКомпановки.Тело Цикл

Если ТипЭлементаТела = Тип("ТаблицаМакетаКомпоновкиДанных")
ИЛИ ТипЭлементаТела = Тип("ГруппировкаМакетаКомпоновкиДанных") Тогда//Тут надо уточнить что значат другие типы в теле макета

КоличествоТаблиц = КоличествоТаблиц + 1;
ИначеЕсли ТипЭлементаТела <> Тип("МакетОбластиМакетаКомпоновкиДанных") Тогда
КоличествоТаблиц = 99;
КонецЕсли;

Если КоличествоТаблиц > 1 Тогда
Прервать;
КонецЕсли;

Если ТипЭлементаТела = Тип("МакетОбластиМакетаКомпоновкиДанных") Тогда
ВысотаШапки = МакетКомпановки.Макеты[ЭлементТела.Макет].Макет.Количество();
ВерхОбластиДанных = ВерхОбластиДанных + ВысотаШапки;
ИначеЕсли ТипЭлементаТела = Тип("ТаблицаМакетаКомпоновкиДанных") Тогда
ВысотаШапки = МакетКомпановки.Макеты[ЭлементТела.МакетШапки].Макет.Количество();
ВерхОбластиДанных = ВерхОбластиДанных + ВысотаШапки;
КонецЕсли;

ДокументРезультат.ПовторятьПриПечатиСтроки = ДокументРезультат.Область(ВерхОбластиДанных - ВысотаШапки,,ВерхОбластиДанных-1,);

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

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

КомпановщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

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

//фиксировать шапку можно только для ОДНОЙ таблицы или группировки

КоличествоТаблиц = 0;
ВысотаШапки = 0;
ВерхОбластиДанных = 1;

Для Каждого ЭлементТела из МакетКомпановки.Тело Цикл

Если ТипЭлементаТела = Тип("ТаблицаМакетаКомпоновкиДанных")
ИЛИ ТипЭлементаТела = Тип("ГруппировкаМакетаКомпоновкиДанных") Тогда//Тут надо уточнить что значат другие типы в теле макета

КоличествоТаблиц = КоличествоТаблиц + 1;
ИначеЕсли ТипЭлементаТела <> Тип("МакетОбластиМакетаКомпоновкиДанных") Тогда
КоличествоТаблиц = 99;
КонецЕсли;

Если КоличествоТаблиц > 1 Тогда
Прервать;
КонецЕсли;

Если ТипЭлементаТела = Тип("МакетОбластиМакетаКомпоновкиДанных") Тогда
ВысотаШапки = МакетКомпановки.Макеты[ЭлементТела.Макет].Макет.Количество();
ВерхОбластиДанных = ВерхОбластиДанных + ВысотаШапки;
ИначеЕсли ТипЭлементаТела = Тип("ТаблицаМакетаКомпоновкиДанных") Тогда
ВысотаШапки = МакетКомпановки.Макеты[ЭлементТела.МакетШапки].Макет.Количество();
ВерхОбластиДанных = ВерхОбластиДанных + ВысотаШапки;
КонецЕсли;

ДокументРезультат.ПовторятьПриПечатиСтроки = ДокументРезультат.Область(ВерхОбластиДанных - ВысотаШапки,,ВерхОбластиДанных-1,);

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

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