Имя: Пароль:
1C
 
Проблемы с "ПроверитьВывод"
0 rosveta
 
19.01.17
14:34
Добрый день. Создаю печатную форму. Необходимо сделать так: Если табличная часть с подвалом не умещается, необходимо вставить разрыв страницы. И на следующей странице вывести шапку. То есть на каждой странице обязательно должна быть шапка и подвал. Вроде бы все просто, но на первой странице разрыв происходит раньше, чем необходимо. Как будто там проверяется еще одна область подвала. Прошу помочь разобраться, что не так. Заранее спасибо.

ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЧастныйАкт";
    Макет = ПолучитьМакет("ЧастныйАкт");
    ТабличныйДокумент.АвтоМасштаб = Истина;
    ТабличныйДокумент.ПолеСлева = 5;
    ТабличныйДокумент.ПолеСправа = 5;
    ТабличныйДокумент.РазмерКолонтитулаСверху = 0;
    ТабличныйДокумент.РазмерКолонтитулаСнизу = 0;

ДанныеПечати = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    ОбластьШапка     = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока     = Макет.ПолучитьОбласть("Строка");
    ОбластьПодвал     = Макет.ПолучитьОбласть("Подвал");

    МассивПроверяемыхОбластей = Новый Массив;

    Пока ДанныеПечати.Следующий() Цикл
    
        Если Не ПервыйДокумент Тогда
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
    
        ПервыйДокумент = Ложь;
    
        ОбластьШапка.Параметры.Заполнить(ДанныеПечати);
        ОбластьШапка.Параметры.Дата = Формат(ДанныеПечати.Дата, "ДФ=dd.MM.yyyy");
        ТабличныйДокумент.Вывести(ОбластьШапка);
            
        ДанныеТехОтход = ДанныеПечати.Выбрать();
    
        Пока ДанныеТехОтход.Следующий() Цикл
            ОбластьСтрока.Параметры.Заполнить(ДанныеТехОтход);
            МассивПроверяемыхОбластей.Очистить();
            МассивПроверяемыхОбластей.Добавить(ОбластьСтрока);
            МассивПроверяемыхОбластей.Добавить(ОбластьПодвал);
        
        
            Если НЕ ТабличныйДокумент.ПроверитьВывод(МассивПроверяемыхОбластей) Тогда
                ТабличныйДокумент.Вывести(ОбластьПодвал);
                ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                ТабличныйДокумент.Вывести(ОбластьШапка);
            КонецЕсли;
        
            ТабличныйДокумент.Вывести(ОбластьСтрока);

        КонецЦикла;
    
        ТабличныйДокумент.Вывести(ОбластьПодвал);
            
    КонецЦикла;

    Возврат ТабличныйДокумент;
1 Ёпрст
 
19.01.17
14:45
Если Не ПервыйДокумент Тогда
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
    
        ПервыйДокумент = Ложь;

вот тут лажа
2 Chikko
 
19.01.17
14:48
(0) "Как будто там проверяется еще одна область подвала."
Почему как будто?
МассивПроверяемыхОбластей.Добавить(ОбластьСтрока);           МассивПроверяемыхОбластей.Добавить(ОбластьПодвал);
3 rosveta
 
19.01.17
14:48
(1), А если не секрет, то в чем тут лажа? Вроде бы во всех стандартных формах так делаю, когда предусмотрена печать из списка документов, чтобы отделять один от другого.
4 rosveta
 
19.01.17
14:49
(2) Так и должно проверяться с подвалом, строки должны уместиться вместе с подвалом, если они не умещаются с подвалом, то разрыв страницы
5 Serg_1960
 
19.01.17
15:58
(3) Как-то вот так привычнее:

МассивПроверяемыхОбластей = Новый Массив;
ПервыйДокумент = Истина; // инициализация переменной
Пока ДанныеПечати.Следующий() Цикл
   Если ПервыйДокумент Тогда
      ПервыйДокумент = Ложь;
   Иначе
   ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
   КонецЕсли;