Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Печать подвала с последними двумя строками таблицы

Печать подвала с последними двумя строками таблицы
Я
   StackOverflow
 
10.08.18 - 09:57
Всем привет.
Самописная конфа, много печатных форм. Просят чтобы подвал печатался с двумя последними строками таблицы, если он не помещается на текущий лист. Подскажите пожалуйста, как получше реализовать. Хочу сделать без подсчета строк с использованием метода ПроверитьВывод()

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

вот кусок кода с моей проверкой, помещается ли строка таблицы на текущий лист, а вот как дальше сделать, чтобы печатало подвал с двумя последними строками таблицы пока не соображу. Подскажите пожалуйста, братцы =)

....

ОбластьМакета = Макет.ПолучитьОбласть("Строка");
    Ном=0;
    Для Каждого Тек Из ВремТаб Цикл  
        Серия=СокрЛП(Тек.Серия);
        
        Ном=Ном+1;
        ОбластьМакета.Параметры.Заполнить(Тек);
        ОбластьМакета.Параметры.Номер                       = Ном;                       
        ОбластьМакета.Параметры.ПредставлениеТовара         = ПредставлениеТовара(Тек);
        ОбластьМакета.Параметры.Производитель                = Тек.Производитель;
        ОбластьМакета.Параметры.КодЕдиницыИзмерения            = Тек.Единица.Код;
        ОбластьМакета.Параметры.ЕдиницаИзмерения            = Тек.Единица.Наименование;
        ОбластьМакета.Параметры.Количество                    = Тек.Количество;
        ОбластьМакета.Параметры.Брутто                        = Тек.Брутто;
        ОбластьМакета.Параметры.Нетто                        = Тек.Нетто;
        ОбластьМакета.Параметры.Цена                        = Формат(Тек.ЦенаПокупателя, "ЧДЦ="+СокрЛП(Док.Округление))//+?(Число(Док.Валюта.Код)=810,"2","4"));

        ОбластьМакета.Параметры.Стоимость                    = Тек.СуммаПокупателя;
        ОбластьМакета.Параметры.Акциз                        = "-";
        ОбластьМакета.Параметры.СтавкаНДС                    = ?(Тек.НДСПокупателя>0,Тек.СтавкаНДС,"0%");
        ОбластьМакета.Параметры.СуммаНДС                    = Тек.НДСПокупателя;
        ОбластьМакета.Параметры.Всего                        = Тек.СуммаПокупателя + Тек.НДСПокупателя; 
        ОбластьМакета.Параметры.КодСтраны                    = Тек.СтранаПроисхождения.Код;
        ОбластьМакета.Параметры.ПредставлениеСтраны            = Тек.СтранаПроисхождения.Сокращение;
        ОбластьМакета.Параметры.ПредставлениеГТД            = Тек.НомерГТД;
        ОбластьМакета.Параметры.Серия                       = Тек.Серия;
        ОбластьМакета.Параметры.СрокГодности                = Тек.ГоденДо;
        
                        
        //Проверка помещается ли на страницу//

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

        ИтогоСумма=ИтогоСумма+Тек.СуммаПокупателя;
        ИтогоСуммаНДС=ИтогоСуммаНДС+Тек.НДСПокупателя;
        ИтогоНетто=ИтогоНетто+Тек.Нетто;
        ИтогоБрутто=ИтогоБрутто+Тек.Брутто;
        ИтогоКоличество=ИтогоКоличество+Тек.Количество;
        ИтогоКолМест=ИтогоКолМест+Тек.КолМест;
        ИтогоСумма2=ИтогоСумма2+Тек.Сумма;
    КонецЦикла;
    
    // Выводим подвал документа

    ОбластьМакета = Макет.ПолучитьОбласть("Итого");
    ОбластьМакета.Параметры.ИтогоСумма      = ИтогоСумма;
    ОбластьМакета.Параметры.ИтогоСуммаНДС   = ИтогоСуммаНДС;
    ОбластьМакета.Параметры.ИтогоВсего      = ИтогоСуммаНДС+ИтогоСумма;
    ОбластьМакета.Параметры.ИтогоНетто      = ИтогоНетто;
    ОбластьМакета.Параметры.ИтогоБрутто     = ИтогоБрутто;
    ОбластьМакета.Параметры.ИтогоКоличество = ИтогоКоличество;
    ОбластьМакета.Параметры.ИтогоКолМест    = ИтогоКолМест;
    ТабДокумент.Вывести(ОбластьМакета);
    
    Если Док.Скидка Тогда
        ОбластьМакета = Макет.ПолучитьОбласть("Скидка");
        ОбластьМакета.Параметры.ИтогоСкидка = ИтогоСуммаНДС + ИтогоСумма - ИтогоСумма2;
        ОбластьМакета.Параметры.ИтогоКОплате= ИтогоСумма2;
        ТабДокумент.Вывести(ОбластьМакета);
    КонецЕсли;
    
    
    // Выводим подвал документа

    ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
    ТабДокумент.Вывести(ОбластьМакета);
    
    // Зададим параметры макета

    ТабДокумент.ПолеСверху              = 5;
    ТабДокумент.ПолеСлева               = 5;
    ТабДокумент.ПолеСнизу               = 5;
    ТабДокумент.ПолеСправа              = 5;
    ТабДокумент.РазмерКолонтитулаСверху = 0;
    ТабДокумент.РазмерКолонтитулаСнизу  = 0;
    ТабДокумент.АвтоМасштаб             = Истина;
    ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Ландшафт;
    ТабДокумент.ОтображатьСетку         = Ложь;
    ТабДокумент.ОтображатьЗаголовки     = Ложь;
    
ну и так далее...
 
 
   Малыш Джон
 
1 - 10.08.18 - 10:03
(0) параллельно с областью вывода, на которую проверяешь этот вывод, формируй отдельно массив из областей-строк, и если после проверки вывода, оказывается что на следующую страницу переносится только подвал, то формируй область вывода из массива без двух последних строк
   1c_asadi
 
2 - 10.08.18 - 12:21
(0)             Счётчик = Счётчик + 1;
        МассивОбластей = Новый Массив;
        
        Если Счётчик = Данные.Количество() Тогда
            МассивОбластей.Добавить(Макет.ПолучитьОбласть("ОбластьУсловия"));
            МассивОбластей.Добавить(Макет.ПолучитьОбласть("ОбластьИтого"));
            МассивОбластей.Добавить(Макет.ПолучитьОбласть("ОбластьПодписи"));
        КонецЕсли;                     
                
        Область.Параметры.НомерСтроки = Область.Параметры.НомерСтроки+1;
        Область.Параметры.Товар = Строка.Номенклатура;
        Область.Параметры.ЕдиницаИзмерения = Строка.ЕдиницаИзмерения;
        Область.Параметры.Количество = Строка.Количество;
        Область.Параметры.Цена = Формат(Строка.Цена/1.18,"ЧДЦ=2");
        Область.Параметры.Стоимость = Формат(Строка.Сумма - Строка.СуммаНДС,"ЧДЦ=2");
        Область.Параметры.НДС = Формат(Строка.СуммаНДС,"ЧДЦ=2");
        Область.Параметры.СтоимостьСНДС = Формат(Строка.Сумма,"ЧДЦ=2");
        
        МассивОбластей.Добавить(Область);         
        Если НЕ ТабличныйДокумент.ПроверитьВывод(МассивОбластей) Тогда
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            Область1 = Макет.ПолучитьОбласть("ОбластьШапка");
            ТабличныйДокумент.Вывести(Область1);
        КонецЕсли;
        
        ТабличныйДокумент.Присоединить(Область);


у меня вот так сделано, но мне надо одну строку переносить и шапку на следующую страницу, ну и соответственно подвал
   1c_asadi
 
3 - 10.08.18 - 12:22
+ (2) похоже надо проверять когда ВремТаб.Количество() - 1 = Ном в вашем случае
   1c_asadi
 
4 - 10.08.18 - 12:23
+(3) добавлять подвал* , а не проверять
   StackOverflow
 
5 - 10.08.18 - 14:31
(2) Спасибо за наводку, пробовал этим методом, но пока не получается.
   StackOverflow
 
6 - 10.08.18 - 15:01
Пока застрял на
...

МассивОбластей = Новый Массив;

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


        Ном=Ном+1;
        ОбластьМакета.Параметры.Заполнить(Тек);
        ОбластьМакета.Параметры.Номер                       = Ном;                       
        ОбластьМакета.Параметры.ПредставлениеТовара         = ПредставлениеТовара(Тек);
        ОбластьМакета.Параметры.Производитель                = Тек.Производитель;
        ОбластьМакета.Параметры.КодЕдиницыИзмерения            = Тек.Единица.Код;
   spiller26
 
7 - 10.08.18 - 15:03
(7) Посмотри стандартные выводы той же Торг-12 в конфе.
   RomanYS
 
8 - 10.08.18 - 15:07
ТабДок.Область(НомерПредпоследнейСтрокиТаблицы,,НомерПоследнейСтрокиТаблицы,).ВместеСоСледующим = Истина;

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует