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

Туплю - проверить вывод на две страницы возвращает истину

Туплю - проверить вывод на две страницы возвращает истину
Я
   RomaH
 
03.07.19 - 13:17
ТабДокумент.Вывести(Шапка);
        
        ТабДокумент.Вывести(Подвал);
        
        Если ТабДокумент.ПроверитьВывод(РеквизитыСторон) Тогда
            ТабДокумент.Вывести(РеквизитыСторон);
        Иначе
            ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            ТабДокумент.Вывести(РеквизитыСторон);
        КонецЕсли;    

выводит док на двух страницах без разделителя

на второй странице над реквизитами сторон - "подвал" документа

что-то я логики не понимаю
 
 
   RomaH
 
1 - 03.07.19 - 13:18
при этом если немного увеличить масштаб - то получаю три страницы с разделителем над реквизитами
   catena
 
2 - 03.07.19 - 13:23
А шапка+подвал помещаются на одной странице?
   singlych
 
3 - 03.07.19 - 13:23
Ну что написал то и получил.

Вывел шапку.
Вывел подвал.
Получилось полторы страницы.
Посмотрел, поместятся ли реквизиты сторон до конца текущей (второй к этому моменту) страницы, вывел разделитель если не поместятся.
Вывел реквизиты сторон.

Получил две страницы без разделителей или три с.

Все логично.
   RomaH
 
4 - 03.07.19 - 13:23
или работу метода описать можно так:
возвращает истину, если вывод проверяемых ТД не увеличит количество страниц исходного документа

т.е. ТабДокумент уже выводится на 2 страницы
вывод в него РеквизитыСторон не увеличит количество страниц ТабДокумент
   RomaH
 
5 - 03.07.19 - 13:24
"Проверяет, умещаются ли переданные табличные документы на страницу при печати." - как бы не однозначно
   RomaH
 
6 - 30.09.19 - 10:06
че-то фигня какая-то

    ТабличныйДокумент.Вывести(Область3);
    
    ИтоговыйТД = Новый ТабличныйДокумент;
    
    ИтоговыйТД.ИмяПараметровПечати = "ПротоколИсследования_546876";
    
    ИтоговыйТД.ЧерноБелаяПечать = Ложь;
    ИтоговыйТД.ЧерноБелыйПросмотр = Ложь;
    
    ИтоговыйТД.МасштабПечати = 100;
    
    
    Для Ш = 1 По 10 Цикл
        Если Не ИтоговыйТД.ПроверитьВывод(ТабличныйДокумент) Тогда
            ИтоговыйТД.МасштабПечати = ИтоговыйТД.МасштабПечати - 5;
        Иначе
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    ИтоговыйТД.Вывести(ТабличныйДокумент);

    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ИтоговыйТД, 1, ОбъектыПечати, СсылкаНаОбъект);
    
    Возврат ИтоговыйТД;


ставит 70% 

открываю предпросмотр - что-то мелковато

выставляю 80% - печатаю - получается полностью заполненная 1 страница

как с этим бороться?
   RomaH
 
7 - 30.09.19 - 10:13
т.е. реально получившийся ТД умещается на один лист при 80%

а проверить вывод говорит, что только на 70%...


весь ТД из одного столбца с растягиванием по горизонтали - ИМХО тут собака порылась
но вот как его победить?
   RomaH
 
8 - 30.09.19 - 10:24
если интересно
внешняя обработка с примером
https://yadi.sk/d/dUyFb3r6M0Mybw

выводит два ТД - один с подобранным масштабом, второй с фиксированным
   RomanYS
 
9 - 30.09.19 - 10:35
(7) А другие параметры (поля например) нигде не менялись?
   RomaH
 
10 - 30.09.19 - 10:37
(9) - см пример по ссылке
там просто получаю уже готовый макет и вывожу его
   RomaH
 
11 - 30.09.19 - 10:38
&НаКлиенте
Процедура Печать(Команда)
    
    ТД = ПечатьНаСервере();
    
    ТД.Показать();
    
    ТД = ПечатьНаСервере();
    
    ТД.МасштабПечати = 80;
    
    ТД.Показать();
    
КонецПроцедуры

&НаСервере
Функция ПечатьНаСервере()
    
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    
    ТД = Новый ТабличныйДокумент;
    
    ТД.МасштабПечати = 100;
    
    
    Для Ш = 1 По 10 Цикл
        Если Не ТД.ПроверитьВывод(Макет) Тогда
            ТД.МасштабПечати = ТД.МасштабПечати - 5;
        Иначе
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    ТД.Вывести(Макет);
    
    Возврат ТД;
    
КонецФункции
   RomanYS
 
12 - 30.09.19 - 11:14
(8) Хрень полная. Видно, что при печати (предварительном просмотре) совершенно по-другому расставляются переносы. При чём отличается от ТД в обоих случаях 70% и 80%.
Я как-то другого поведения от масштабирования ожидал.
   RomaH
 
13 - 30.09.19 - 12:08
(12) это не хрень, это класная фишка - ширина столбца - растягивать по горизонтали
   RomanYS
 
14 - 30.09.19 - 12:16
(13) Ну так эта классная фишка так и работает. Когда она вообще появилась, первый раз вижу.
   RomaH
 
15 - 30.09.19 - 13:59
ну да - отключил "растягивать" у колонки
стало нормально считать вывод

но отказываться от растягивания по горизонтали уже совсем никак

есть мысли как выводить на одну страницу?
   RomaH
 
16 - 30.09.19 - 14:01
запрограммировать зависимость ширины колонки от масштаба?
   RomanYS
 
17 - 30.09.19 - 14:05
(16) Первое, что приходит в голову: ставим автомасштаб, а ширину колонки тестируем с ПроверитьВывод. Благо колонка у тебя одна
   RomaH
 
18 - 30.09.19 - 14:48
(17) так не лучше получается

примерно 50% страницы заполняет

    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    
    ТД = Новый ТабличныйДокумент;
    
    ТД.МасштабПечати = 100;
    ТД.АвтоМасштаб = Истина;
    
    Для Ш = 1 По 100 Цикл
        Если Не ТД.ПроверитьВывод(Макет) Тогда
            Макет.Область(,1,,1).ШиринаКолонки = Макет.Область(,1,,1).ШиринаКолонки + 1;
            //ТД.МасштабПечати = ТД.МасштабПечати - 5;
        Иначе
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    ТД.Вывести(Макет);
    
    Возврат ТД;


https://dl.dropboxusercontent.com/s/wu6m8n3axd5x06l/2019-09-30_14h47_41.png?dl=0
   RomaH
 
19 - 30.09.19 - 14:49
   RomanYS
 
20 - 30.09.19 - 14:51
(18) я так сделал - работает
    ТД.АвтоМасштаб = Истина;
    Область = ТД.Область("C1");
    

        Область.ШиринаКолонки = 50;
    
    Пока ТД.КоличествоСтраниц() > 1 Цикл
        Область.ШиринаКолонки = Область.ШиринаКолонки + 1;
    КонецЦикла;
   RomaH
 
21 - 30.09.19 - 15:30
(20) спасибо
костыли работают
даже с установленным свойством "растягивать" у колонки
   RomaH
 
22 - 01.10.19 - 06:49
все-таки ПроверитьВывод() не стоит использовать, КоличествоСтраниц() наше все - этот метод корректно отрабатывает

    Для Ш = 1 По 20 Цикл
        Если ТабличныйДокумент.КоличествоСтраниц() > 1 Тогда
            ТабличныйДокумент.МасштабПечати = ТабличныйДокумент.МасштабПечати - 2;
        Иначе
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 1, ОбъектыПечати, СсылкаНаОбъект);
    
    Возврат ТабличныйДокумент;


   Cyberhawk
 
23 - 01.10.19 - 08:43
Отказывайся от табличного документа уже сейчас, все равно в будущем откажешься, ибо для таких печатных форм, где сплошная простыня текста, он почти всегда непригоден становится из-за необходимости форматирования слов.


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