Вывод области макета в колонтитул #305730


#0 by kivas
Если кто знает подскажите как вывести область макета с рамками и форматом в колонтитул?
#1 by kivas
Мне надо чтобы область с рамками и форматом выводилась обязательно в конце страницы:
#2 by and2
Использование: Чтение и запись. Описание: Тип: ОбластьЯчеекТабличногоДокумента. Содержит область строк, которая будет повторяться при печати каждого нового листа табличного документа.
#3 by and2
а колонтитул не трогай :)
#4 by kivas
Все конечно хорошо но только в случае использования меотда ПовторятьПриПечатиСтроки область выводится в начале страницы а не в конце как мне надо :(
#5 by GenV
Можно тогда проверять перед выводом поместится ли текущая строка вместе с колонтитулом или нет. Но это программный вывод.
#6 by kivas
Тогда как проверить высоту строки параметр которой СтрокаНеопрнднленнойДлинны да еще с многострочном режимом (есть переводы строки) да еще и с табами Короче мне не важно поместится она или не поместится, мне надо область внизу страницы вывести, какая она по счету не важно. если перешла на вторую страницу, и там всего одна строка то снизу этой (второй страницы) должна появиться определенная область. Вот и все. Как это сделать???
#7 by and2
КонецСтраницы (PageBottom) Использование: Чтение и запись. Описание: Тип: Булево. Признак того, что данная область находится последней на странице. Примечание: Применимо только для областей строк/колонок. поможет. Сам не пробовал
#8 by GenV
метод ПроверитьВывод для табличного документа. В типовой БП во многих печ. формах используется.
#10 by Steelvan
У меня приемлемо получилось только передачей в Ворд и скриптами проставить колонтитулы и из Ворда печатать(вставлял картинку). Все штатные методы могут сдвигать по листу выводимую секцию относительно нижнего края. А еще в конфигураторе можно сделать колонтитул с определенным текстом (без рисунков).
#11 by kivas
КонецСтраницы (PageBottom) Метод КонецСтраницы в 1С что то вроде РазрывСтраницы тоесть первая строка области выводится сразу за предыдущей а остальные строки области каждая в начале следующей страницы Например если в области 3 строки то первая строка выходит в следующей строке документа а остальные 2 каждая на следующей странице. Обл=ТабДокумент.Область("Подвал");                  ТабДокумент.Вывести(ОбластьМакета); В этом случае также область выводится вверху страницы. _________________________________________________________ Давайте тогда рассмотрим вариант когда нам надо вывести только одну область но в конце печатного листа и все. Тоесть надо получить штамп в нижнем правом углу листа.
#12 by GenV
Единственный вариант который мне приходит на ум - вывод с проверкой и после нахождения последней области - вывод пустой области с минимальной высотой с проверкой на влезание на страницу (тогда последняя область будет в самом низу с погрешностью на величину высоты пустой области). ЗЫ Все таки в Ворде сделано удобнее.
#13 by kivas
Еще какиенибудь варианты есть?
#14 by kivas
Как вывести только одну область но в конце печатного листа и все. Тоесть надо получить штамп в нижнем правом углу листа.
#15 by Steelvan
тогда последняя область будет в самом низу с погрешностью на величину высоты пустой области - При условии, что высота всех секций одинакова.
#16 by GenV
Наверное ты не понял ... Сначала пытаемся проверить вывод обычных секций. Пока не доходим до перехода на страницу. После этого последовательно пытаемся проверить вывод минимальной области и области колонтитула, пока опять не получим переход на след страницу ...
#17 by GenV
16+ т.е. нужно подобрать такой размер последней области, при котором штамп как раз будет внизу. Можно, в принципе, ускорить алгоритм пробуя вывод не сразу минимальной области, а пытаясь постепенно уменьшать её размер. Но, все равно это гадость :)
#18 by kivas
Всего выводится 3 секции: 1 Шапка, 2 Текст (одной !!ячейкой!! переменной высоты)Её высота у каждого документа разная 3 Подвал (который должен быть в конце печатного листа) И как тут подсчитать? она или переходит или нет и все. Тоесть выводим первые две секции, затем добавляем Пустую секцию Высотой равной подвалу, проверяем переходит ли она на другую страницу, если да то выводим перед ней подвал, так чтоли?
#19 by GenV
1) Выводим Шапку 2) проверяем вывод Текста+Штампа, если уместился - выводим Текст (если несколько строк - делаем цикл проверки Текст+Штамп пока не достигнем след. страницы) 3) проверяем вывод подвала+Штампа, если уместился выводим Подвал 4) Делаем цикл проверки и вывода пустой строки с минимальной высотой (проверка на вывод ПустаяСтрока+Штамп) пока не достигнем перехода на след. страницу.
#20 by kivas
В общем после долгих проб и ошибок получилось следующее: Назначаем переменную содержащую область для вывода в конце страницы: Разбиваем большую строку на абзацы и выводим абзацы поочереди проверяя на перенос страницы: А если строка не переходит на другую страницу то сдвигаем ее в низ циклом: высота этой области определяет погрешность пасположения Проверка выглядит так: Процедура ПроверитьПеренос(ТабДок,Макет,Область) После этого область "подвал" всегда выводится в конце первой страницы не зависимо от высоты других областей
#21 by kivas
Дополнение: в вызовах прочедуры ПроверитьПеренос(ТабДок,Макет,Область,ОбластьПодвала) Последний параметр "ОбластьПодвала" указывать не следует
#22 by 1Саша
Вернулся к этому вопросу. Так и не получилось сделать аналогично в СчётеНаОплату Пока Не ПодвалНапечатан Цикл Вот ПодвалНапечатан  - откуда мы это вобще берём,непойму. Понимаю что глупый вопрос, но не понимаю. Много ошибок выдаёт {Документ.СчетНаОплатуПокупателю(356,14)}: Переменная не определена (ПодвалНапечатан)        Пока Не <<?>>ПодвалНапечатан Цикл {Документ.СчетНаОплатуПокупателю(372,10)}: Переменная не определена (ПодвалНапечатан)    Если <<?>>ПодвалНапечатан или ТабДок.ПроверитьВывод(ПроверкаПечатиПодвала)тогда {Документ.СчетНаОплатуПокупателю(370,36)}: Переменная не определена (ОбластьПодвала)    ПроверкаПечатиПодвала.Добавить(<<?>>ОбластьПодвала); {Документ.СчетНаОплатуПокупателю(376,26)}: Переменная не определена (ОбластьПодвала) А другие способы возможны чтобы всегда выводить картинку ровно внизу листа напечати ?
#23 by 1Саша
UP
#24 by kivas
Да код немного кривоват, но я на скорую руку убирал все лишнее (пытался показать суть вопроса.) я думаю давольно понятно. Пояснения: ПодвалНапечатан - булево глобальная переменная модуля используется для поределения того что уже печатали подвал (нужен для того чтобы выводить его только на первой странице). в твоем варианте если надо на каждой странице то после перехода на каждую страницу надо снова ставить в Истина; ОбластьПодвала - тоже глобальная переменная модуля содержит область макета содержащего непосредственно подвал (чтобы каждый раз его не заполнять, а просто вставлять и все)
#25 by 1Саша
в какой конфе ты это делал?
#26 by kivas
Конфа тут не имеет никакого значения Тут нет привязок к глобальным процедурам. А так для сведения УПП
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С