Версия для печати темы (https://pro1c.org.ua/index.php?s=2ea104670a46297a2959f07453031bc2&showtopic=23760)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Повторять при печати строки

Автор: vadim007 22.06.15, 13:50

Всем привет!
Отчет "Реестр налоговых накладных".
В нем две таблицы - "Выданные налоговые накладные" и "Полученные налоговые накладные", имеющие разную структуру.
Как сделать, чтобы при продолжении печати на новой странице, в начале страницы выводилась строка с нумерацией столбцов текущей таблицы?
PS: Метод ПовторятьПриПечатиСтроки(..) здесь не прокатывает.

Автор: sava1 22.06.15, 14:13

Если не выяснять почему не прокатывает, то строку с номерами - в отдельную секцию и выводить отдельно

Автор: vadim007 22.06.15, 14:25

Проблема в подсчете числа выведенных страниц. 1С это делает сам, а как программно это контролировать - не нашел.

Автор: Pepe 22.06.15, 14:46

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

Автор: vadim007 01.07.15, 11:07

Разобрался. Здесь нет возможности присоединить архив, поэтому привожу пример полностью:

Перем КакоеТоЧисло; 
Перем Предел;
Перем тз1, тз2;
Перем Таб, Таб1, КолСтрПред;

Функция ДатьСлучайноеЧисло()
    m35=34359738368;
    m36=68719476736;
    m37=137438953472;
    КакоеТоЧисло=5*КакоеТоЧисло;
    Если КакоеТоЧисло>=m37 Тогда КакоеТоЧисло=КакоеТоЧисло-m37 КонецЕсли;
    Если КакоеТоЧисло>=m36 Тогда КакоеТоЧисло=КакоеТоЧисло-m36 КонецЕсли;
    Если КакоеТоЧисло>=m35 Тогда КакоеТоЧисло=КакоеТоЧисло-m35 КонецЕсли;
    Возврат Цел(КакоеТоЧисло/m35*101);
КонецФункции

Процедура ПриОткрытии(Настр)
    КолСтрок = 300; // Количество строк в таблицах
    КакоеТоЧисло=_GetPerformanceCounter()*_GetPerformanceCounter();
КонецПроцедуры

Функция СлучайноеЧисло(Предел)
    СлучайноеЧисло=ДатьСлучайноеЧисло();
    СлучайноеЧисло=СлучайноеЧисло%(Предел-1)+1;
    Возврат СлучайноеЧисло;
КонецФункции

Процедура ВывестиТаблицу(тз, Н)
    Перем ст[10]; // Строка таблицы
    Если ПустоеЗначение(тз) = 1 Тогда
        Возврат;
    КонецЕсли;
    Если (Н=1) Или (Н=2) Тогда
    Иначе
        Возврат;
    КонецЕсли;
    тз.ВыбратьСтроки();
    Состояние(Шаблон("Вывод таблицы [Н]"));
    Для Ном = 1 По тз.КоличествоСтрок() Цикл
        Для Инд = 1 По тз.КоличествоКолонок() Цикл // Сформируем строку вывода
            ст[Инд] = тз.ПолучитьЗначение(Ном,Инд);
        КонецЦикла;
        Таб1.ВывестиСекцию("Строка"+Н); // Вывели строку в вспомогательную таблицу
        Если Таб1.КоличествоСтраниц() > КолСтрПред Тогда
            // В вспомогательной таблице перешли на новую страницу
            // В основной таблице отстаем на одну строку
            Если фКолонтитулы = 1 Тогда
                Таб.ВывестиСекцию("Колонтитул"+Н); // Вывели колонтитул в основную таблицу
                Таб1.ВывестиСекцию("Колонтитул"+Н);// Вывели колонтитул в вспомогательную таблицу для общего счета
            КонецЕсли;
            Таб.ВывестиСекцию("Шапка"+Н);   // Вывели шапку в основную таблицу на новой странице
            Таб1.ВывестиСекцию("Шапка"+Н);  // Вывели шапку в вспомогательную таблицу для общего счета
            КолСтрПред = КолСтрПред+1;
        КонецЕсли;
        Таб.ВывестиСекцию("Строка"+Н); // Вывели строку в основную таблицу
    КонецЦикла;
    Если фКолонтитулы = 1 Тогда
        Таб.ВывестиСекцию("Колонтитул"+Н);
        Таб1.ВывестиСекцию("Колонтитул"+Н); // В вспомогательную таблицу для общего счета
    КонецЕсли;
КонецПРоцедуры

//*******************************************
Процедура Сформировать()
    Перем ст[10]; // Строка таблицы
    тз1.УдалитьСтроки();
    тз2.УдалитьСтроки();
    // тз1
    Состояние("Заполнение таблицы 1 случайными числами");
    Для Ном = 1 По КолСтрок Цикл
        тз1.НоваяСтрока();
        Для Инд = 1 По 7 Цикл
            тз1.УстановитьЗначение(Ном, Инд, СлучайноеЧисло(Предел));
        КонецЦикла;
    КонецЦикла;
    
    // тз2
    Состояние("Заполнение таблицы 2 случайными числами");
    Для Ном = 1 По КолСтрок Цикл
        тз2.НоваяСтрока();
        Для Инд = 1 По 10 Цикл
            тз2.УстановитьЗначение(Ном, Инд, СлучайноеЧисло(Предел));
        КонецЦикла;
    КонецЦикла;
    
    КолСтрПред = 1;
    
    Таб = СоздатьОбъект("Таблица"); // Для вывода данных
    Таб.ИсходнаяТаблица("Таблица");
    
    Таб1=СоздатьОбъект("Таблица");  // Для подсчета страниц
    Таб1.ИсходнаяТаблица("Таблица");
    
    // Выводим тз1
    Таб1.ВывестиСекцию("Заголовок1");
    Таб1.ВывестиСекцию("Шапка1");
    Если фКолонтитулы = 1 Тогда
        Таб1.ВывестиСекцию("Шапка1");   // "Лишняя" строка для контроля перехода на новую страницу
    КонецЕсли;
    Таб.ВывестиСекцию("Заголовок1");
    Таб.ВывестиСекцию("Шапка1");
    ВывестиТаблицу(тз1, 1);
    
    Если фНоваяСтраница = 1 Тогда
        Таб.НоваяСтраница();
        Таб1.НоваяСтраница();
        КолСтрПред = КолСтрПред+1;
    КонецЕсли;
    
    // Выводим тз2
    Таб1.ВывестиСекцию("Заголовок2");
    Таб1.ВывестиСекцию("Шапка2");
    Если (фКолонтитулы = 1) И (фНоваяСтраница = 1) Тогда
        Таб1.ВывестиСекцию("Шапка2");   // "Лишняя" строка для контроля перехода на новую страницу
    КонецЕсли;
    Таб.ВывестиСекцию("Заголовок2");
    Таб.ВывестиСекцию("Шапка2");
    ВывестиТаблицу(тз2, 2);
    
    Таб1.ТолькоПросмотр(1);
    Таб1.Опции(0,0,0,0,"Вспомогательная","Вспомогательная");
    Таб1.Показать("Вспомогательная");
    
    Таб.ТолькоПросмотр(1);
    Таб.Опции(0,0,0,0,"Основная","Основная");
    Таб.Показать("Основная");
КонецПроцедуры

Предел = 1000; // Верхний предел случайного числа

тз1 = СоздатьОбъект("ТаблицаЗначений");
Для Инд=1 По 7 Цикл
    тз1.НоваяКолонка("ст"+Строка(Инд));
КонецЦикла;

тз2 = СоздатьОбъект("ТаблицаЗначений");
Для Инд=1 По 10 Цикл
    тз2.НоваяКолонка("ст"+Строка(Инд));
КонецЦикла;



Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua