Имя: Пароль:
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)
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn