#0
by Drac0
Добрый день! Столкнулся с непонятным поведением метода КоличествоСтраниц. Возникает ощущение, что у него есть определенная погрешность, которая при больших табличных документах дает очень неправильные данные под конец. Как наткнулся: пользователи сами рисуют макеты. Попросили дать возможность выводить шапку таблицы на каждой странице, где есть таблица (может быть еще подвал, где она не нужна). Так как высота строк и областей произвольная, то логично решил, что во время вывода табличной части, надо проверять на изменение количества страниц и если оно произошло, то перед выводом текущей строки выводим сначала шапку. Что получилось: при некоторых вариантах макета (где высота области строки отличается от стандартной) даже если по факту уже произошел переход на новую страницу ,например, на третью, КоличествоСтраниц возвращает 2. И в итоге лишняя строка переходит на новую страницу. Потом две, потом три и т.д. Кто-то с этим багом сталкивался? Есть возможность его победить?
#2
by 1sanekmaloi1
Синтаксис: ПроверитьВывод(<Таблицы>) Параметры: Тип: Массив; ТабличныйДокумент. Массив из проверяемых таблиц или табличный документ. Возвращаемое значение: Тип: Булево. Истина - умещаются; Ложь - в противном случае. Описание: Проверяет, умещаются ли переданные табличные документы на страницу при печати. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: При возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение. Пример: Т.Добавить(ШапкаДокумента); Если Не ТабДок.ПроверитьВывод(Т) Тогда Сообщить("Документ не умещается на страницу!"); КонецЕсли;
#3
by 1sanekmaloi1
+ В любой типовой посмотри как выводится ТОРГ12 на разные листы.Зачем изобретать велосипед?
#4
by Drac0
Торг12 фиксированный макет. А у нас могут почти что угодно нарисовать юзеры. ПроверитьВывод не взлетит. Не всегда есть возможность генерировать постранично, т.к. шапка самого документа может быть чуть больше страницы и тогда либо оставляем пустое место (что не айс), либо проверяем первый вывод с помощью КоличествоСтраниц и возвращаемся к тому с чего начали.
#5
by Drac0
И насколько я помню, там задается жестко количество строк на страниц. А у нас даже это не постоянно, т.к. могут быть разные варианта вывода строки в рамках одного документа.
#7
by kosts
По существу. Проверь еще когда устанавливаются/восстанавливаются параметры печати/страницы. Это надо делать в начале. И еще печать в 1С весьма глючная вещь. Например, легко наблюдается изменение печатной формы при изменении масштаба...
#9
by Drac0
параметры станицы задаются и сохраняются после редактирования макета. ПроверитьВывод проверяет, умещаются ли табличные документы на ОДНУ страницу. А в общем случае шапка может быть больше одной страницы, например, страница и пара строк. После нее начинаем сразу выводить заголовок таблицы и строки. Т.е. в на начале по факту надо проверить, умещается ли текущий документ на ДВЕ страницы, чего ПроверитьВывод не умеет.
#11
by kosts
Кстати, с учетом сказанного было бы вполне естественным поведением этой функции учитывать будет ли начат новый лист и не важно сейчас 1 лист или 10-й...
#12
by kosts
Если параметры программно, то надо их в начале устанавливать и масштаб не делать "По ширине".
#13
by Drac0
Параметры за дают пользователи через Файл -> параметры страницы в форме редактирования макета.
#14
by Drac0
Нет. Она тупо проверяет, умещаются ли табдоки на одну страницу :) По-моему, из описания очевидно.
#17
by kosts
Кстати шапку можно попробовать разбить на отдельные блоки и выводить с тем же ПроверитьВывод. Другого способа просто не вижу...
#18
by Зеленый пень
"Погрешность" как правило, объясняется непродуманностью алгоритма, например: - параметры таб.документа (например ИмяПараметровПечати) меняются в конце, после ПроверитьВывод - после ПроверитьВывод выводится секция шире, чем был таб.док до этого и при автомасштабе предыдущие проверки становятся "неправильными"
#19
by Drac0
Только если построчно разобрать область шапки. Фигово получается. ДА и есть у меня предположение, что ПроверитьВывод будет тот же баг иметь. У меня используется КоличествоСтрок. Параметры страницы не меняются. С шириной областей все ОК.
#20
by kosts
Можно попробовать поставить другой драйвер принтера. на эту же модель может идти драйвер с другой цифрой
#21
by Drac0
На всех принтерах проблемы. Даже на PDFCreator. Да и мне очень любопытно, как он передает драйвер принтера с клиента на Сервер :)
#22
by 1sanekmaloi1
А зачем проверять умещается ли шапка? в общем случае 1.Задаем параметры печати 2.Выводим шапку документа 3.Выводим шапку таблицы тут хоть 2 хоть 3 листа она занимает 4.проверяем помещается ли строка в тек лист, то есть сразу за шапкой, если да то выводим, если нет то разрыв страницы и снова шапку таблицы выводим и возвращаемся к пункту 4 5.Выводим подвал. не могу понять чем алгоритм не устраивает?
#30
by Drac0
Во-первых, метод как-то странно работает. Он возвращает Ложь всегда, когда ТабДок уже больше страницы, кроме момента, когда у меня происходит переход страницы (сразу после вывода заголовка таблицы и добавления строки), тогда он отдает Истина. Уже странно, но хоть что-то. НО! Это происходит аналогично с результатом метода КоличествоСтраниц, т.е. содержит ровно тот же баг.
#32
by Drac0
Кстати ,спасибо, что подсказал, как именно работает ПроверитьВывод, а то из описания в СП не очевидно. Жаль не помогло.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Табличное поле обычной формы. Событие после "Выбор"
- Получить программно начальный остаток в ЗУП...
- Обход таблицы на клиенте
- РАУЗ УПП не списывает сумму с 45.02 при проведении Отчет Комиссионера
- Досрочный выход из декрета 1С: ЗУП
- задвоение предопределенных элементов
- Нужна помощь в написании запроса
- Набор записей регистра сведений на управляемой форме элемента Справочника
- V83.COMConnector на 64-bit Win
- УправлениеКонтактнойИнформацией
- подключение к базе 1с 8.2 sql по сети =8-()
- Нерезиденты - вопрос по взносам в фонды.
- Перестала запускаться 1с 8.3.1146
- Сброс пароля в базе 1С
- ICQ завернуть на порт 5190
- УПП РАУЗ. Корректировка реализации.
- ручная корректировка проводок в 1с 7.7
- ЗУП: выходные по скользящему графику
- Ошибка при переходе Бухгалтерии с 8.2 на 8.3
- Повторное открытие управляемой формы