#0
by vbh
Задача следующая: вывожу секции и параллельно отслеживаю высоту страницы. Если ВысотаСтраницы > 800 Тогда выведенную секцию выводить не надо,а Можно // выводить подобную таблицу и АНАЛИЗИРУЯ её выводить свою, но при этом затрата времени увеличивается в 2 раза Вопрос: Можно ли сделать, что-то вроде Попытка - Исключение: Попытка Попробовали вывести секцию, если она не устраивает нашим условиям, то тогда в исключении переходим на новую страницу Исключение КонецПопытки;
#1
by fabrikant
А чем не рулит ? Если ВысотаСтраницы <= 800 Тогда Выводим секцию Иначе новаястраница
#2
by vbh
Тем, что высота предыдущей секции например 795, и Если ВысотаСтраницы <= 800 Тогда будет выводится следующая секция и она обязательно разорвется
#3
by vbh
Извиняюсь, не так выразился Тем, что высота страницы после вывода предыдущей секции например= 795, и Если ВысотаСтраницы <= 800 Тогда будет выводится следующая секция и она обязательно разорвется
#4
by fabrikant
Если количество секций конечно, а оно конечно, то заведи список значений название секции-высота. И суммируй с высотой таблицы при проверке
#5
by fabrikant
О, таки еще проще можно! Если Таб.ВысотаТаблицы+Таб.ВысотаСекции(ТвояСекция) < 800 Тогда Таб.ВывестиСекцию(ТвояСекция) Иначе Таб.НоваяСтраница
#6
by vbh
ничего не получается, ведь все-равно сначала 1. ВыводишьСекцию 2. Потом узнаешь её высоту 3. Анализируешь: больше она высоты листа или нет и если она оказалась >, то тебе её уже не убрать, она уже выведена.
#10
by fabrikant
Создай пустую обработку. В ней напиши И эксперементируй с высотой секции "Строка" в таблице. Ты увидишь, что я прав.
#11
by vbh
Дело в том что ВысотаСтроки у секции = АВТО, т.е. я заранее не знаю какой высотой она получится.
#14
by vbh
12)ты не понял. Высота таблицы меня не интересует. я высчитываю высоту каждой выводимой СТРОКИ и суммирую её. а текст у меня разрывается
#17
by vbh
Точно точно, а я почему-то и не подумал создать такую ситуацию (ф=1/0), она то как раз и вызовет нужное мне исключение. СПАСИБО.
#19
by fabrikant
Никуя не элегантно. Но раз уж так хочешь, используй хоть вместо 1/0 -ВызватьИсключение
#24
by vbh
И всё равно НЕ ПОЛУЧИЛОСЬ. Хоть и ПОПЫТКА-ИСКЛЮЧЕНИЕ, Хоть используй Транзакцию.Хоть они ПРОЗРАЧНЫ И ЛОГИЧЕСКИ ПРАВИЛЬНЫ, Одинаково. Сначала Выводит-разрывает, затем только переносит на новую страницу. Ниже привожу нарастание ВЫСОТЫ_ЛИСТА с выводом каждой секции: 207 329.25 463.5 597.75 720 854.25 - И здесь казалось бы должно сработать ОтменитьТранзакцию; Ан НЕТ не РАБОТАЕТ!!! Сначала выводит секцию, не смотря на то что высота то уже 854.25!!! Как проверить сработала ли ОтменитьТранзакцию или нет?
#26
by vbh
С Шапкой и ПодШапкой у меня проблем нет, проблема именно в разрыве текста. Казалось бы, всё что нужно есть и логически понятно, А не работает...
#27
by ИМХО
26. значит, здесь простые алгоритмы не подходят. Или надо смириться с вполовину недопечатанными страницами..
#28
by vbh
Возвращусь Опять к высотестроки у авто=0 Казалось бы надо смирится, а ведь решилась проблема. И здесь я верю что решение есть... и всё-таки Как проверить сработала ли ОтменитьТранзакцию или нет?
#30
by vbh
В том то и дело. Читай тему "... БЕЗ ДОПОЛНИТЕЛЬНОЙ ЗАТРАТЫ ВРЕМЕНИ", а если заполнять два отчета обработка выполняется в 2 раза дольше. Тут вот именно транзакция идеально подходит, Ан не работает... может ещё способы есть? повторюсь Как проверить сработала ли ОтменитьТранзакцию или нет?
#33
by leo-i
С транзакцией наверно не получится, попробуй с областью, сначала выводишь строку, запоминаешь область проверяешь на высоту если больше затираешь в области текст, расшифровку и рамки, устанавливаешь минимальную высоту строки делаешь разрыв страницы и заново выводишь строку
#34
by vbh
ПОЛУЧИЛОСЬ !!! Всё оказалось намного проще... Вся загвоздка была в новой странице! Синтаксис: НоваяСтраница(<Ном>) Назначение: Вставить в результирующую таблицу разделитель страниц. Параметры: <Ном> - необязательный параметр. Номер строки, после которой начинать новую страницу Так что запоминаем последнюю высоту листа и вперед! работает идеально. СтараяВысотаЛиста=ВЫСОТА_ЛИСТА ; ВывестиВх; А ТРАНЗАКЦИИ НАВЕРНОЕ ДЕЙСТВИТЕЛЬНО НЕ РАБОТАЮТ С ВНЕШНИМИ ФОРМАМИ...
#35
by vbh
Всем спасибо за участие, так сказать вчера весь день голову ломал, а с утречка встал и сделал... Вывод: Утро вечера мудренее
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как заполнить и вывести диаграмму в табличном документе ?
- Как вывести в табл-ную часть док-та на форме данные НЕ реквизита табл. ч.?
- Создаем ВК "без программирования",получаем задержку в N-сек без 100% загр.
- Можно ли в 7.7 вывести зачеркнутый шрифт?
- В запросе вывести дату без времени
- v7: вывести секцию(или нижний колонтитул) только на последней странице
- СКД. Вывести в печать даты-параметры без времени
- Как в запросе вывести дату без времени?
- СКД : Вывести доп. свойство (тип Дата,состав даты=Дата) справочника без времени
В этой группе 1С
- 60 счет - убрать субсчета
- Перенос v7.7 ТиС 9.2 -> v8 УТ 10.2
- Как изменить реквизит Наименование элемента справочника?
- Параметры запуска 1cv7.exe -???
- Выгрузка и загрузка...
- Как запустить процедуру написанную на VBA из 1С
- Можно ли узнать в каком режиме запущена форма списка справочника?
- Поиск в Номенклатуре по ПодСтроке из нескольких слов
- V7: Как убрать главное меню из 1С
- как получить себестоимость товара в запросе по докам?
- Перенос кредиторской задолженности и формирование записей книги покупок
- Сохранить настройки пользователей
- Отправить письмо из 1С посредством MS Outlook
- Названия банков в классификаторе
- На одной диаграмме два графика разного типа. Возможно ?
- Анализ заказов покупателей УТ 10.2
- Возвращаясь к пройденному: как автоматизировать объединение конфигураций.
- Аналитический учет на 40 счете. Почему он ведется по каким-то видам
- Где привязка 1С к принтеру?
- Возврат поставщику. Проводки по 60 счету