Ликбез 7.7: нумерация страниц отчета

28.04.11

Разработка - Механизмы платформы 1С

"Колонтитулы" без колонтитулов.

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

Можно, конечно, применить Формекс и считать высоту строк. А можно и штатными средствами. Примерно, так:

 

Процедура Напечатать()
       Таб1 = СоздатьОбъект("Таблица");
       Таб1.ИсходнаяТаблица("Таблица");
       Таб1.ПовторятьПриПечатиСтроки(14,15);   //Это заголовки колонок
       Таб1.ВывестиСекцию("Шапка");
       Таб = СоздатьОбъект("Таблица");
       Таб.ИсходнаяТаблица("Таблица");
       Таб.ПовторятьПриПечатиСтроки(14,15);
       Таб.ВывестиСекцию("Шапка");
       КолСтрПред = 1;
       ТЗ.ВыбратьСтроки();
       Таб1.ВывестиСекцию("Колонтитул");           //Таб1 на 1 строку длинней
       Пока ТЗ.ПолучитьСтроку() = 1 Цикл
            Таб1.ВывестиСекцию("Строчка");           //Теперь на 2
            Если Таб1.КоличествоСтраниц() > КолСтрПред Тогда
                 Таб.ВывестиСекцию("Колонтитул");  //На 1
                 Таб1.ВывестиСекцию("Строчка");     //Опять на 2
                 КолСтрПред = КолСтрПред+1;
            КонецЕсли;
            Таб.ВывестиСекцию("Строчка");           //Опять на 1
       КонецЦикла;
       Таб.ВывестиСекцию("Колонтитул");
       Таб.ТолькоПросмотр(1);
       Таб.Показать("");
КонецПроцедуры

 

Разумеется, секции таблицы Строчка и Колонтитул должны иметь одинаковую высоту. Кроме того, релизы платформы до 25 включительно НЕ поддерживают метод таблиц КоличествоСтраниц.

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

 

Ну а теперь задача еще реальней. Как быть, ести места для колонтитула просто нет? Номер страницы требуется на полях последней строки?

Тогда так:

 

Процедура Напечатать()
       Таб1 = СоздатьОбъект("Таблица");
       Таб1.ИсходнаяТаблица("Таблица");
       Таб1.ПовторятьПриПечатиСтроки(14,15);   //Это заголовки колонок
       Таб1.ВывестиСекцию("Шапка");
       Таб = СоздатьОбъект("Таблица");
       Таб.ИсходнаяТаблица("Таблица");
       Таб.ПовторятьПриПечатиСтроки(14,15);
       Таб.ВывестиСекцию("Шапка");
       КолСтрПред = 1;
       ТЗ.ВыбратьСтроки();
       Пока ТЗ.ПолучитьСтроку() = 1 Цикл
            Таб1.ВывестиСекцию("Строчка");           
            Если Таб1.КоличествоСтраниц() > КолСтрПред Тогда
                 Таб.ПрисоединитьСекцию("Строчка|Номер");  
                 КолСтрПред = КолСтрПред+1;
            КонецЕсли;
            Таб.ВывестиСекцию("Строчка|Основная");           
       КонецЦикла;
       Таб.ПрисоединитьСекцию(" Строчка|Номер ");
       Таб.ТолькоПросмотр(1);
       Таб.Показать("");
КонецПроцедуры

 

Сэкономили строчку на странице...

См. также

"Виртуальный" работник на платформе 1C v7.7

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

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

28.11.2021    1545    user707242_Gold_karas    18    

5

Асинхронное программирование в 1с77 без внешних компонент. Обратные вызовы.

Механизмы платформы 1С Платформа 1С v7.7 Абонемент ($m)

Пример построения программного кода для достижения функционала обратных вызовов (call back) во внешних обработках исключительно штатными средствами. Тестировалось на платформе 1с77 релиз 027. Конфигурация значения не имеет.

1 стартмани

06.10.2018    7444    Vortigaunt    5    

11

Особенности разделения объектной модели документа и базы данных в 1С 7.7. Забавный глюк

Механизмы платформы 1С Оперативный учет 7.7 Абонемент ($m)

Когда занимаешься разработкой в среде 1С, редко задумываешься о том, что программным кодом ты работаешь с объектной моделью базы данных, а не с самой базой данных. И что это вообще разные вещи. Ты создаешь объекты: документы и справочники, записываешь их - и в базе данных появляются соответствующие записи. Это настолько привычно, что когда сталкиваешься с нетипичным поведением платформы, первым делом думаешь: надо протестировать базу, она битая. В этой статье я хочу разобрать одну интересную ситуацию, которая как раз демонстрирует такое поведение. Описанная ниже ситуация воспроизводится как в файловом, так и в клиент-серверном (SQL) варианте. Тестировалось на версии платформы 1с77 релиз 027.

1 стартмани

16.05.2018    10124    Vortigaunt    26    

5

Использование классов .Net в 1С для новичков

Механизмы платформы 1С Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    93958    Serginio    116    

188

Все про картинки в 1С 7.7, ну или почти все...

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

В 1С 8 наличие картинок товаров предусмотрено изначально, а в 7.7 такого нет. Проблема существует и ее исправляют, но это, как правило, частные случаи, касающиеся, например, печати прайса http://infostart.ru/public/289876/ , показу картинок в справочнике номенклатура http://infostart.ru/public/17125/, файловый менеджер картинок товара http://infostart.ru/public/15239/ или просто конфигурации работы с картинками http://infostart.ru/public/21142/ (не стремился дать полный обзор, поэтому не попавшие не обижайтесь :). Что не устроило – информация разбросана по статьям, необходимость дополнительно напрягаться, чтобы это заработало. Здесь я попытался собрать все «до кучи», а так же дать необходимые ссылки для желающих «копнуть вглубь».

1 стартмани

18.11.2014    43977    95    kitminsk    18    

20

ЗаполнитьЗначенияСвойств - заставляем работать в 7.7

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Если вы используете в работе 1С:Предприятие 8.х, то наверняка знакомы и с замечательной системной процедурой, как ЗаполнитьЗначенияСвойств(). Ее использование помогает значительно упростить написание программного кода в ряде случае, делает его (код) более наглядным и простым. Но что же делать тем, кто до сих пор использует (постоянно или иногда) 1С:Предприятие 7.7?

24.07.2014    23721    tomvlad    5    

14

Динамическая фильтрация в справочнике при вводе наименования

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

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

02.07.2012    18354    maxpiter    62    

15
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Арчибальд 2706 28.04.11 11:43 Сейчас в теме
Инструмент - заготовочка...
user1562462; tarasoff_s; +2 Ответить
2. Alav 13 28.04.11 11:43 Сейчас в теме
Ну про странице ИМХО неудачный пример
Ибо "Страница #P из #Q" никто не отменял
3. Арчибальд 2706 28.04.11 11:48 Сейчас в теме
(2) С этого места поподробней, пожалуйста :o
5. Ёпрст 1063 28.04.11 12:02 Сейчас в теме
(3) Про колонтитулы не разу не слышал что ли ?!
)))))))))))))))))))))))))))))
9. Арчибальд 2706 28.04.11 13:22 Сейчас в теме
(5) А должен был? :D
Не, меня "из #Q" заинтересовало. Что ли уже есть такое?
10. Ёпрст 1063 28.04.11 13:35 Сейчас в теме
(9)
Текст колонтитула

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

#T при печати в данном месте будет вставлено время печати документа
#D при печати в данном месте будет вставлена дата печати документа
#P при печати в данном месте будет вставлен номер страницы документа
#Q при печати в данном месте будет вставлено число - общее количество страниц документа

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

1С:Предприятие, версия 7.7. © 1996-1999, Фирма "1С"

давно F1 в пофигураторе не нажимал ?!
:))))
pisarevEV; nprocskaya; Арчибальд; +3 Ответить
11. Арчибальд 2706 28.04.11 13:52 Сейчас в теме
(10) Да я вообще никогда его не нажимал. :o
А в ЖКК на 216 странице у меня только три буквы, Q нету. Правда, издание 99 года...
12. Ёпрст 1063 28.04.11 14:24 Сейчас в теме
(11) #Q не помню уже с какого релиза пошло, с 20 что ли..
13. Арчибальд 2706 28.04.11 14:31 Сейчас в теме
(12)А, это который с глюками был так что откатываться приходилось :D
4. Ish_2 1104 28.04.11 11:58 Сейчас в теме
Арчибальд , ты погряз в мелкотемье...
14. Арчибальд 2706 28.04.11 16:20 Сейчас в теме
(4) Сделай на восьмерке аналог (без колонтитулов), и продолжим беседу.
15. Ёпрст 1063 28.04.11 17:08 Сейчас в теме
(14) там аналогично всё, есть метод для расчета , влезет ли выводимая область(области) на страницу или нет, ну а дальше тупо - втыкай подвал с нумером и привет.
Правда этот расчет на больших таблицах мегатормоз, как и КоличествоСтраниц в клюшках.
16. Арчибальд 2706 28.04.11 17:19 Сейчас в теме
(15) Я его на второй вариант развести пытаюсь ;)
6. Ёпрст 1063 28.04.11 12:04 Сейчас в теме
Да, за КоличествоСтраниц() в коде нужно тапком..
Це же мегатормоз и вообще, лишние метод.
7. alexk-is 6533 28.04.11 12:21 Сейчас в теме
(0) Для вывода таблицы значений этот вариант конечно не вариант.

А вот для ТОРГ-12 или подобных печатных форм с разбиением по страницам, то очень даже может быть...
8. Hellgga 28.04.11 12:29 Сейчас в теме
(7) ИФНС заставляет нумеровать и Торг-12, и счф, и Книги покупок, продаж. При камералке паримся вручную...
17. prosto_wolf 3 15.06.17 18:06 Сейчас в теме
а как программно указать, что колонтитул #P должен начинаться не с 1, а с какого-то другого значения?
18. Арчибальд 2706 15.06.17 19:35 Сейчас в теме
(17) Не понял. Я ж текст привел. Или надо не программно, а в диалоге?
19. prosto_wolf 3 16.06.17 11:07 Сейчас в теме
Да, я понял логику текста модуля. Я хотел узнать про настоящий колонтитул, а не секцию таблицы, но уже использовал Вашу логику, всё работает, спасибо!
Оставьте свое сообщение