Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Повторять при печати строки , отличающихся таблиц          
vadim007 Подменю пользователя
сообщение 22.06.15, 13:50
Сообщение #1

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

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

sava1 Подменю пользователя
сообщение 22.06.15, 14:13
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2715
Из: Проскуров
Спасибо сказали: 692 раз
Рейтинг: 669.9

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

vadim007 Подменю пользователя
сообщение 22.06.15, 14:25
Сообщение #3

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

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

Pepe Подменю пользователя
сообщение 22.06.15, 14:46
Сообщение #4

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1447
Из: Ужгород
Спасибо сказали: 762 раз
Рейтинг: 231

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

vadim007 Подменю пользователя
сообщение 01.07.15, 11:07
Сообщение #5

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

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

Перем КакоеТоЧисло; 
Перем Предел;
Перем тз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.НоваяКолонка("ст"+Строка(Инд));
КонецЦикла;



Спасибо сказали: Vofka,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 01.11.24, 1:55
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!