Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Мой нелюбимый ПроверитьВывод()

Мой нелюбимый ПроверитьВывод()
Я
   Eskeych
 
28.12.21 - 12:51
Привет, столкнулся снова с этим методом. не получается корректно выводить таблицу и за ним нижний колонтитул(Это область в макете, табДок.НижнийКолонтитул не прокатит). Остается свободным примерно пол листа, а на следующий переходит 5 строк. Как с таким жить теперь?
   mistеr
 
1 - 28.12.21 - 12:52
(0) Выводи пустые строки, пока есть место.

Или так и делаешь? Показывай.
   Eskeych
 
2 - 28.12.21 - 12:53
МассивОбластей.Очистить();
    Пока ВыборкаНоменклатура.Следующий() Цикл
        Подзаголовок = Макет.ПолучитьОбласть("ДополнительноеОснащениеЗаголовок");
        Подзаголовок.Параметры.НаименованиеРаздела = ВыборкаНоменклатура.НаименованиеРаздела.Наименование;        
        МассивОбластей.Добавить(Подзаголовок);
        Выборка = ВыборкаНоменклатура.Выбрать();
        Пока Выборка.Следующий() Цикл
            ДопОснащениеСтрока = Макет.ПолучитьОбласть("ДопОснащениеСтрока");
            ЗаполнитьЗначенияСвойств(ДопОснащениеСтрока.Параметры, Выборка);
            МассивОбластей.Добавить(ДопОснащениеСтрока);
        КонецЦикла;
    КонецЦикла;
    МассивОбластей.Добавить(ОбластьНижнегоКолонтитула);
    
    Индекс = 0; 
    МассивВывода = Новый Массив;
    Для Каждого Строка Из МассивОбластей Цикл
        МассивВывода.Добавить(Строка);
        Если ТабДокумент.ПроверитьВывод(МассивВывода) Тогда
            ТабДокумент.Вывести(Строка);
            //МассивВывода.Удалить(Индекс);

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

    КонецЦикла;
   Eskeych
 
3 - 28.12.21 - 12:55
Делаю вот так:
1) Запихиваю все в массив;
2) пересчитывая строки по одной закидываю во второй и с него уже делаю проверку и вывожу в таб док.
3) если проверка не прошла, то выводим колонтитул, переходим на след лист и выводим дальше построчно
   pechkin
 
4 - 28.12.21 - 12:56
Параметры печати нужно изначально устанавливать
   Eskeych
 
5 - 28.12.21 - 12:58
В параметрах и так стоит автомасштаб и ориентация
пробовал после каждого вывода чистить МассивВывода, но тогда он выводит будто бы проверки и нет.
   Serg_1960
 
6 - 28.12.21 - 13:06
(2) Вы зря закомментировали строку. Теперь у Вас в МассивВывода накапливаются строки, которые Вы уже вывели в документ.
   Eskeych
 
7 - 28.12.21 - 13:07
если его удалять то он отрабатывает так, будто бы проверки нет вовсе
   Serg_1960
 
8 - 28.12.21 - 13:14
(7) До разделителя страниц, Вы выводите ОбластьНижнегоКолонтитула - имхо, особо не заморачиваясь изучением алгоритма, нужно проверять вывод Строка + ОбластьНижнегоКолонтитула.
   pechkin
 
9 - 28.12.21 - 13:39
(5) а поля когда задаются?
   Serg_1960
 
10 - 28.12.21 - 13:45
Имхо:
...
МассивВывода = Новый Массив;
МассивВывода.Добавить(Строка);
МассивВывода.Добавить(ОбластьНижнегоКолонтитула);
Если ТабДокумент.ПроверитьВывод(МассивВывода) Тогда
   ТабДокумент.Вывести(Строка);
Иначе
...
   Eskeych
 
11 - 28.12.21 - 13:59
Сделал вот так вот:     
МассивОбластей.Очистить();
    Пока ВыборкаНоменклатура.Следующий() Цикл
        Подзаголовок = Макет.ПолучитьОбласть("ДополнительноеОснащениеЗаголовок");
        Подзаголовок.Параметры.НаименованиеРаздела = ВыборкаНоменклатура.НаименованиеРаздела.Наименование;        
        МассивОбластей.Добавить(Подзаголовок);
        Выборка = ВыборкаНоменклатура.Выбрать();
        Пока Выборка.Следующий() Цикл
            ДопОснащениеСтрока = Макет.ПолучитьОбласть("ДопОснащениеСтрока");
            ЗаполнитьЗначенияСвойств(ДопОснащениеСтрока.Параметры, Выборка);
            МассивОбластей.Добавить(ДопОснащениеСтрока);
        КонецЦикла;
    КонецЦикла;
    
    МассивПодвала = Новый Массив;
    МассивПодвала.Добавить(ОбластьПустойСтроки);
    МассивПодвала.Добавить(ОбластьПустойСтроки);
    МассивПодвала.Добавить(ОбластьПустойСтроки);
    МассивПодвала.Добавить(ОбластьНижнегоКолонтитула);
    
    Индекс = 0; 
    МассивВывода = Новый Массив;
    Для Каждого Строка Из МассивОбластей Цикл
        МассивВывода.Добавить(Строка);
        
        Если ТабДокумент.ПроверитьВывод(МассивВывода) Тогда
            Если НЕ ТабДокумент.ПроверитьВывод(МассивПодвала) Тогда
                ТабДокумент.Вывести(ОбластьПустойСтроки);
                ТабДокумент.Вывести(ОбластьНижнегоКолонтитула);
                ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                КартинкаКолонтитула = Макет.ПолучитьОбласть("КартинкаКолонтитула");
                КартинкаКолонтитула.Параметры.НомерСтраницы = НомерСтраницыПечати;
                НомерДокумента = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Ссылка.Номер);
                КартинкаКолонтитула.Параметры.НомерДокумента = НомерДокумента;
                КартинкаКолонтитула.Параметры.ДатаДокумента = Формат(Ссылка.Дата, "ДФ=dd.MM.yyyy");
                НомерСтраницыПечати = НомерСтраницыПечати + 1;
                табДокумент.Вывести(КартинкаКолонтитула);
                СводныеДанныеЗаголовок = Макет.ПолучитьОбласть("СводныеДанныеШапка");   
                ТабДокумент.Вывести(СводныеДанныеЗаголовок);
            КонецЕсли;
            ТабДокумент.Вывести(Строка);
            МассивВывода.Очистить();
        КонецЕсли;  
        Индекс = Индекс + 1;
    КонецЦикла;
    
    Структура = СформироватьСтруктуруИтоговПервойТаблицы(Ссылка);
    СводныеДанныеИтог = Макет.ПолучитьОбласть("СводныеДанныеИтог");
    ЗаполнитьЗначенияСвойств(СводныеДанныеИтог.Параметры, Структура);
    ТабДокумент.Вывести(СводныеДанныеИтог);
    СводныеДанныеОбщаяСтоимость = Макет.ПолучитьОбласть("СводныеДанныеОбщаяСтоимость");  
    ЗаполнитьЗначенияСвойств(СводныеДанныеОбщаяСтоимость.Параметры, Структура);
    ТабДокумент.Вывести(СводныеДанныеОбщаяСтоимость);
    
    Пока ТабДокумент.ПроверитьВывод(МассивПодвала) Цикл
        ТабДокумент.Вывести(ОбластьПустойСтроки);
    КонецЦикла;
    ТабДокумент.Вывести(ОбластьПустойСтроки);
    ТабДокумент.Вывести(ОбластьНижнегоКолонтитула);

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