|
Туплю - проверить вывод на две страницы возвращает истину | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
03.07.19
✎
13:17
|
ТабДокумент.Вывести(Шапка);
ТабДокумент.Вывести(Подвал); Если ТабДокумент.ПроверитьВывод(РеквизитыСторон) Тогда ТабДокумент.Вывести(РеквизитыСторон); Иначе ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ТабДокумент.Вывести(РеквизитыСторон); КонецЕсли; выводит док на двух страницах без разделителя на второй странице над реквизитами сторон - "подвал" документа что-то я логики не понимаю |
|||
1
RomaH
naïve
03.07.19
✎
13:18
|
при этом если немного увеличить масштаб - то получаю три страницы с разделителем над реквизитами
|
|||
2
catena
03.07.19
✎
13:23
|
А шапка+подвал помещаются на одной странице?
|
|||
3
singlych
03.07.19
✎
13:23
|
Ну что написал то и получил.
Вывел шапку. Вывел подвал. Получилось полторы страницы. Посмотрел, поместятся ли реквизиты сторон до конца текущей (второй к этому моменту) страницы, вывел разделитель если не поместятся. Вывел реквизиты сторон. Получил две страницы без разделителей или три с. Все логично. |
|||
4
RomaH
naïve
03.07.19
✎
13:23
|
или работу метода описать можно так:
возвращает истину, если вывод проверяемых ТД не увеличит количество страниц исходного документа т.е. ТабДокумент уже выводится на 2 страницы вывод в него РеквизитыСторон не увеличит количество страниц ТабДокумент |
|||
5
RomaH
naïve
03.07.19
✎
13:24
|
"Проверяет, умещаются ли переданные табличные документы на страницу при печати." - как бы не однозначно
|
|||
6
RomaH
naïve
30.09.19
✎
10:06
|
че-то фигня какая-то
ТабличныйДокумент.Вывести(Область3); ИтоговыйТД = Новый ТабличныйДокумент; ИтоговыйТД.ИмяПараметровПечати = "ПротоколИсследования_546876"; ИтоговыйТД.ЧерноБелаяПечать = Ложь; ИтоговыйТД.ЧерноБелыйПросмотр = Ложь; ИтоговыйТД.МасштабПечати = 100; Для Ш = 1 По 10 Цикл Если Не ИтоговыйТД.ПроверитьВывод(ТабличныйДокумент) Тогда ИтоговыйТД.МасштабПечати = ИтоговыйТД.МасштабПечати - 5; Иначе Прервать; КонецЕсли; КонецЦикла; ИтоговыйТД.Вывести(ТабличныйДокумент); УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ИтоговыйТД, 1, ОбъектыПечати, СсылкаНаОбъект); Возврат ИтоговыйТД; ставит 70% открываю предпросмотр - что-то мелковато выставляю 80% - печатаю - получается полностью заполненная 1 страница как с этим бороться? |
|||
7
RomaH
naïve
30.09.19
✎
10:13
|
т.е. реально получившийся ТД умещается на один лист при 80%
а проверить вывод говорит, что только на 70%... весь ТД из одного столбца с растягиванием по горизонтали - ИМХО тут собака порылась но вот как его победить? |
|||
8
RomaH
naïve
30.09.19
✎
10:24
|
если интересно
внешняя обработка с примером https://yadi.sk/d/dUyFb3r6M0Mybw выводит два ТД - один с подобранным масштабом, второй с фиксированным |
|||
9
RomanYS
30.09.19
✎
10:35
|
(7) А другие параметры (поля например) нигде не менялись?
|
|||
10
RomaH
naïve
30.09.19
✎
10:37
|
(9) - см пример по ссылке
там просто получаю уже готовый макет и вывожу его |
|||
11
RomaH
naïve
30.09.19
✎
10:38
|
&НаКлиенте
Процедура Печать(Команда) ТД = ПечатьНаСервере(); ТД.Показать(); ТД = ПечатьНаСервере(); ТД.МасштабПечати = 80; ТД.Показать(); КонецПроцедуры &НаСервере Функция ПечатьНаСервере() Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет"); ТД = Новый ТабличныйДокумент; ТД.МасштабПечати = 100; Для Ш = 1 По 10 Цикл Если Не ТД.ПроверитьВывод(Макет) Тогда ТД.МасштабПечати = ТД.МасштабПечати - 5; Иначе Прервать; КонецЕсли; КонецЦикла; ТД.Вывести(Макет); Возврат ТД; КонецФункции |
|||
12
RomanYS
30.09.19
✎
11:14
|
(8) Хрень полная. Видно, что при печати (предварительном просмотре) совершенно по-другому расставляются переносы. При чём отличается от ТД в обоих случаях 70% и 80%.
Я как-то другого поведения от масштабирования ожидал. |
|||
13
RomaH
naïve
30.09.19
✎
12:08
|
(12) это не хрень, это класная фишка - ширина столбца - растягивать по горизонтали
|
|||
14
RomanYS
30.09.19
✎
12:16
|
(13) Ну так эта классная фишка так и работает. Когда она вообще появилась, первый раз вижу.
|
|||
15
RomaH
naïve
30.09.19
✎
13:59
|
ну да - отключил "растягивать" у колонки
стало нормально считать вывод но отказываться от растягивания по горизонтали уже совсем никак есть мысли как выводить на одну страницу? |
|||
16
RomaH
naïve
30.09.19
✎
14:01
|
запрограммировать зависимость ширины колонки от масштаба?
|
|||
17
RomanYS
30.09.19
✎
14:05
|
(16) Первое, что приходит в голову: ставим автомасштаб, а ширину колонки тестируем с ПроверитьВывод. Благо колонка у тебя одна
|
|||
18
RomaH
naïve
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 |
|||
19
RomaH
naïve
30.09.19
✎
14:49
|
с исходного макета:
https://dl.dropboxusercontent.com/s/gehq4soox6b1d9t/2019-09-30_14h49_09.png?dl=0 |
|||
20
RomanYS
30.09.19
✎
14:51
|
(18) я так сделал - работает
ТД.АвтоМасштаб = Истина; Область = ТД.Область("C1"); Область.ШиринаКолонки = 50; Пока ТД.КоличествоСтраниц() > 1 Цикл Область.ШиринаКолонки = Область.ШиринаКолонки + 1; КонецЦикла; |
|||
21
RomaH
naïve
30.09.19
✎
15:30
|
(20) спасибо
костыли работают даже с установленным свойством "растягивать" у колонки |
|||
22
RomaH
naïve
01.10.19
✎
06:49
|
все-таки ПроверитьВывод() не стоит использовать, КоличествоСтраниц() наше все - этот метод корректно отрабатывает
|
|||
23
Cyberhawk
01.10.19
✎
08:43
|
Отказывайся от табличного документа уже сейчас, все равно в будущем откажешься, ибо для таких печатных форм, где сплошная простыня текста, он почти всегда непригоден становится из-за необходимости форматирования слов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |