Имя: Пароль:
1C
1С v8
УПП 1.3 Печать УПД
0 ColonelAp4u
 
22.09.17
11:55
Добрый день коллеги, может кто сталкивался с такой проблемой, УПП типовая, последние обновления, при печати УПД выводится Табличный документ с разрывами страницы, и визуально мы видим что печать будет произведена на 3 страницах. Но в предварительном просмотре и при печати печатается на 5 страницах. Допустим визуально видим первый лист шапка + 16 наименований товара + подвал страницы, при печати и в предварительном просмотре выводит Шапка + товары 15 наименований + подвал страницы на 1 странице и 1 позицию без шапки и без подвала на другой. Как победить это?
1 _Дайвер_
 
22.09.17
12:00
(0) А место то вообще остается? Если да смотри макет, и формирование ПФ
2 _Дайвер_
 
22.09.17
12:00
(1) + Настройки принтера глянь, на всякий случай
3 ColonelAp4u
 
22.09.17
12:02
Дело в том что места нет, но программа в этому случае сама должна была разбить как положено, там ведь идет сейчас новый метод проверки помещается ли таб док на страницу.
ПроверитьВывод() у Таб дока. И типа если все помещается то ок если нет то делает разрыв страницы.
4 _Дайвер_
 
22.09.17
12:04
(3) Скинь скрин предварительного просмотра
5 ColonelAp4u
 
22.09.17
12:05
пересмотрел все что можно, принтер, параметры страницы в предварительном просмотре. И самый главный прикол если открываешь док первый раз допустим в предварительном просмотре 5 листов, ставлю поля сверху такие же как и идут при создании этого таб дока в коде, = 12, то он выравнивает на 3 страницы, потом выхожу захожу заново с этими параметрами страницы и он снова показывает 5 страниц, и уже изменения параметров никак не влияют на это дело.
6 ColonelAp4u
 
22.09.17
12:09
7 Масянька
 
22.09.17
12:13
(6) А нет принудительного (программный код) деления на страницы? Очень похоже на это.
8 ColonelAp4u
 
22.09.17
12:19
(7) УПП полностью типовая и страницы делятся вот таким кодом
        // Проверим возможность вывода табличного документа
        СтрокаСПодвалом = Новый Массив;
        СтрокаСПодвалом.Добавить(ОбластьМакета);
        Если НомерСтроки = КоличествоСтрок Тогда
            // Если последняя строка, то должен поместится итог и подвал
            СтрокаСПодвалом.Добавить(ОбластьМакетаИтого);
            СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал);
            Если ЭтоПечатьУПД Тогда
                СтрокаСПодвалом.Добавить(ОбластьМакетаПодвалНакладной);
            КонецЕсли;
        КонецЕсли;
        
        #Если Сервер ИЛИ ВнешнееСоединение Тогда
            РезультатПроверкиВывода = ФормированиеПечатныхФормСервер.ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом);
        #ИначеЕсли ТолстыйКлиентОбычноеПриложение Тогда    
            РезультатПроверкиВывода = ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом);
        #КонецЕсли
                        
        Если НЕ РезультатПроверкиВывода Тогда
            
            Если КоличествоСтрок > 0 Тогда
                // Вывод разделителя и заголовка таблицы на новой странице
                ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
                КоличествоСтраниц = КоличествоСтраниц + 1;
            КонецЕсли;
            
        КонецЕсли;
9 d4rkmesa
 
22.09.17
12:19
(0) Переносы строк и автовысота в подвалах макета. Длинные должности и ФИО, обычно там отключена автовысота, но конфигурасты зачастую тупо включают автовысоту, чтобы все помещалось. Если хотите оставить, тогда нужно немного переделать стандартный вывод и выполнять проверку переносов после заполнения всех областей. В общем, нужно немного покурить процедуру УчетНДС.ВывестиСчетФактуруВТабличныйДокумент и понимание придет, как переделать.
10 Масянька
 
22.09.17
12:21
(8) ФормированиеПечатныхФормСервер.ПроверитьВыводТабличногоДокумента - тут что? В смысле код.
11 ColonelAp4u
 
22.09.17
12:26
(10)
Функция ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, РезультатПриОшибке = Истина) Экспорт

    Попытка
        Возврат ТабДокумент.ПроверитьВывод(ВыводимыеОбласти);
    Исключение
        Возврат РезультатПриОшибке;
    КонецПопытки;

КонецФункции // ПроверитьВыводТабличногоДокумента()
12 ColonelAp4u
 
22.09.17
12:26
Возвращает ложь или истина
13 ColonelAp4u
 
22.09.17
12:27
Если вернулась Ложь то делает разрыв  
Если НЕ РезультатПроверкиВывода Тогда
            
            Если КоличествоСтрок > 0 Тогда
                // Вывод разделителя и заголовка таблицы на новой странице

                ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
                КоличествоСтраниц = КоличествоСтраниц + 1;
            КонецЕсли;
            
        КонецЕсли;
14 Масянька
 
22.09.17
12:37
(12) (13) Коню понятно :)
Я не знаю, как работает ПроверитьВывод. Но, судя по скринам, строка № 16 умещается в ПроверитьВывод на страницу, а реально нет.
Стоит глянуть (9).
15 ColonelAp4u
 
22.09.17
12:40
(14) Совершенно верно, она вмещается в данном методе, а по факту нет.
16 ColonelAp4u
 
22.09.17
12:42
Просто типовую не хочется трогать, а так да можно покурить этот код и сделать что бы выводилось нормально.
17 Адинэснег
 
22.09.17
12:45
(0)увеличьте поля (по 20 например), пусть 1С думает, что вывод идет на лист поменьше, тогда ПроверитьВывод() сработает раньше
18 Адинэснег
 
22.09.17
12:46
(17) в параметрах печати, конечно
19 ColonelAp4u
 
22.09.17
12:49
(18) ваще бред разбивает на 6 страниц
20 Адинэснег
 
22.09.17
12:49
я бы увеличил Слева/Справа
21 Масянька
 
22.09.17
12:50
(15) Вот это и бесит в 1С: был бы код  - можно было бы разговаривать.
22 Адинэснег
 
22.09.17
12:51
Сделай слева/справа по 20 или 30
Низ/Верх по 5
23 Адинэснег
 
22.09.17
12:51
колонтитулы 0
24 Адинэснег
 
22.09.17
12:51
Автомасштаб, или как там, по ширине
25 ColonelAp4u
 
22.09.17
12:55
(22) (23) (24) вот так работает спасибо.
26 Адинэснег
 
22.09.17
12:59
(25) я тоже долго смотрел на процедуру в УПП ... потом дошел, что этими настройками можно её победить
27 ColonelAp4u
 
22.09.17
13:01
Блин не могу понять зачем вот так усложнять людям жизнь, всем спасибо? особое (26)