gifts2017

Повторение шапки отчета в начале каждого листа при печати (СКД) + вывод колонтитулов.

Опубликовал Андрей Андреевич (nalivai-chai) в раздел Программирование - Практика программирования

Повторение шапки отчета в начале каждого печатного листа при использовании системы компоновки данных (СКД).
Пример выводов колонтитулов.
Направление мысли выдернуто из типовой БП2.0.: ОбщийМодуль.СтандартныеОтчеты.ПолучитьМакетШапки(...). Но в случае использования "Таблицы" (как в примере) эта функция к сожалению не подоходит.

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

 

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

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

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

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

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

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

 

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

Примерный код:

// Верхний колонтитул ТабДок.ВерхнийКолонтитул.Выводить = Истина;
ТабДок.ВерхнийКолонтитул.НачальнаяСтраница = 2;
ТабДок.ВерхнийКолонтитул.Шрифт = Новый Шрифт(Результат.ВерхнийКолонтитул.Шрифт, , , , Истина);
ТабДок.ВерхнийКолонтитул.ТекстСлева = "Заголовок отчета";
ТабДок.ВерхнийКолонтитул.ТекстВЦентре = "Стр. [&НомерСтраницы] из [&СтраницВсего]";
ТабДок.ВерхнийКолонтитул.ТекстСправа = "Дата/время печати: [&Дата]/[&Время]";
	
// Нижний колонтитул ТабДок.НижнийКолонтитул.Выводить = Истина;
ТабДок.НижнийКолонтитул.Шрифт = Новый Шрифт(Результат.ВерхнийКолонтитул.Шрифт, , , , Истина);
ТабДок.НижнийКолонтитул.ТекстВЦентре = "Заголовок отчета";
 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Отчет-пример
.erf 11,37Kb
23.08.12
271
.erf 11,37Kb 271 Скачать

См. также

Вознаграждение за ответ
Сумма: 0 $m
Добавили:
Нурислам Ямбаев (nurislam) (0.30 $m)
Подписаться Добавить вознаграждение

Комментарии

1. Марина Гинко (_qqq) 22.08.12 13:28
Часто в печатных формах требуется вывести номер страницы над шапкой таблицы.
Андрей Андревич, есть ли способ доработать Ваш алгоритм в этом направлении?
2. link li (link_l) 22.08.12 15:17
3. Андрей Андреевич (nalivai-chai) 23.08.12 13:19
(1) _qqq, добавил пример с выводом страниц. (колонтитулы)
4. Владимир Клименко (KliMich) 23.08.12 20:59
Спасибо, зачастую это крайне необходимо (особенно при массивных отчетах)
5. Юлия Малышева (unis) 24.08.12 09:39
Мне как раз это нужно!!! спасибо за обработку!!!
6. г. Казань Рустем Гумеров (Rustig) 24.08.12 20:09
7. Юрий Зайцев (Yury1001) 27.08.12 11:18
Где то я это уже видел…
…а, точно, это ж Гилёв Профессиональная работа с СКД, бонус проекта Spec8.ru, 81-82 файлы ;)
8. Андрей Андреевич (nalivai-chai) 27.08.12 14:19
(7) Yury1001, там вроде только о фиксации строк.
9. Нурислам Ямбаев (nurislam) 07.05.13 14:45
10. Игорь Чайкин (ЧИА) 07.04.14 19:20
11. Роман Озеряный (rozer) 19.06.14 15:13
12. Дмитрий Глеков (glek) 30.07.14 10:51
Спасибо. Пока нет необходимости, но была ситуация, когда надо было. И пришлось играться гем....
13. Марина Семёнова (SemenovaMarinaV) 31.07.14 10:33
14. Андрей Логинов (Poplar) 31.07.14 17:53
Как раз то, что я искал. Спасибо!
15. Александр Хомяк (logarifm) 05.08.14 14:03
А что произойдет с областью шапки если пользователь изменит вариант отчета? И накидает вместо одной группировки 5, а еще к области шапки добавится вывод Параметров отчета и его отборы. Я не увидел решение этой задачи.
16. Александр Хомяк (logarifm) 05.08.14 14:12
Отчет скачал и посмтрел все сделано грамотно. Просто в статье не указано всего. Старайтесь излагать все в статье.
17. Андрей Андреевич (nalivai-chai) 05.08.14 13:53
(15) logarifm, хоть 5, хоть 10 группировок, область шапки отчета будет прочитана в любом случае, а иначе какой кайф от предложенного подхода.
18. Андрей Андреевич (nalivai-chai) 05.08.14 14:01
(16) logarifm, по-моему изложено все, что необходимо.
Не разобрана функция "ПолучитьМакетШапки", так отсылаю в код отчета, более того идея функции взята из типовых конфигураций. Не хочется в статье построчно код отчета комментировать. Проще открыть отчет в конфигураторе, посмотреть выполнение с помощью отладчика. Код прост, разобраться не сложно.
Можно конечно вдаться в разбор макета компоновки, но это тема для отдельной статьи.
19. Виктор Ким (victorkim64) 18.07.16 13:04
У кого не выводиться колонтитул, надо отрегулировать ширину поля
Результат.ПолеСверху = 20;
20. Федор Программист (fedor40) 16.08.16 11:48
Я думал будет пример с управляемой формой.

В управляемой форме в процедуре ПриКомпоновкеРезультата не работает.
21. Владимир Скворцов (Vovanches) 17.11.16 10:39
На управляемых формах тоже всё работает, нужно только слегка подпилить. Стоящая фича, спасибо, мне понравилось!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа