Имя: Пароль:
1C
1С v8
Вывод области превышающей размер страницы
,
0 gidilica_
alexandr
 
08.09.16
16:50
Столкнулся с проблемой: есть область макета с установленным свойством "Переносить" в нее загоняем какой-то текст.. так вот нарвались на случай, когда размер получившейся области с текстом превышает высоту страницы! 1С то что не влезает на страницу обрезает при печати. Кто с сталкивался?
1 gidilica_
alexandr
 
08.09.16
17:20
версия платформы 8.3.6.2299
2 vicof
 
08.09.16
17:25
Я сталкивался
3 vicof
 
08.09.16
17:26
Запили голосовалку
4 gidilica_
alexandr
 
08.09.16
17:28
(2) Проблему решил обычным макетом? или переписывали через, например, шаблоны ворда?
(3) не понял для чего
5 Defender aka LINN
 
08.09.16
17:39
(0) У тебя одна строка получается больше страницы?
6 Vladal
 
08.09.16
17:41
Попробуй метод табличного документа ПроверитьВывод().
Если, например, не помещается, обрезай строку. Можно сделать рекурсивно.
7 Vladal
 
08.09.16
17:42
(2) Сталкивался - расскажи, как решил.
Тут же не тупо ответ в булевой логике, а вопрос как решить.
8 vicof
 
08.09.16
17:45
(7) Вопрос был "Кто сталкивался?", а не "Как решить?"
9 aleks_default
 
08.09.16
17:53
(0)Было дело. У ячейки свойство "Размещение текста" стоит "Переносить", но при формировании печ. формы текст обрезается. Автовысота строки не помогает. Никак не решил.
10 vicof
 
08.09.16
17:55
(9) Надо было еще высоту в 0 поставить
11 aleks_default
 
08.09.16
17:58
(10) В смысле и галку "Максимальная высота строк" тоже?
12 vicof
 
08.09.16
18:40
(11) когда высоту ячейки редактируешь, там галка и поле. Их надо вместе менять. Если высота есть, автовысота не действует
13 aleks_default
 
09.09.16
09:13
(12)Не, не то. Текст в ячейке формируется программно(Параметр), соответственно высоту строки я заранее не знаю и установить конкретное значение не могу.
Я просто галку Автовысота строки ставил/снимал, при этом галка "Максимальная высота строк" не стоит и значение высоты = 0. Но это не помогло. Все равно текст обрезается.
14 vicof
 
09.09.16
09:22
(13) Пичалька( Тогда надо на примере смотреть.
15 Vladal
 
модератор
09.09.16
09:32
(8) Тогда я лично прошу тебя от имени автора - поделись своим способом решения этой проблемы.
16 gidilica_
alexandr
 
19.09.16
12:29
тут проблема именно в том, что при печати данные просто режутся.. на экране, если не стоит разделитель страниц - то все нормально
17 gidilica_
alexandr
 
19.09.16
12:31
(5) Да, именно так, одна строка превышает размер страницы.. никак делить я ее не могу, ну разве что чисто теоретически, но ваще хз как, ибо у меня и автопереносы строк есть, и перенос строки и ширина символа разная, разве что какнибудь посимвольно выводить текст и в этот момент разделять текст на отдельные строки, которые выводит как разные области, но это ппц геморно
18 ifso
 
19.09.16
12:49
(17)
> разве что какнибудь посимвольно выводить текст
ждем "спасите!символ превышает размер страницы!", не?)
или разделить суперпуперную строку и вывести в разные ячейки с соответствующим оформлением ячеячных границ не предлагать?
19 aleks_default
 
19.09.16
13:25
(17) Автомасштаб поставить не?
20 gidilica_
alexandr
 
19.09.16
14:10
(19) уважаемый, автомасштаб выравнивает размер страницы по ширине, а у меня по высоте область не вмещается.. и все равно хотелось бы перенос на следующую страницу, а не тупое уменьшение масштаба
(18) к чему передергивания? ну и то что вы предлагаете, вы хоть имеете представление как это реализовать и что за франкенштейн будет на выходе?? у меня шрифт не моноширный чтоб ячейками баловаться.. по этой же причине я не могу тупо символы в строчке считать и выводить
21 ifso
 
19.09.16
16:39
(20) к чему стоны? обрезая безразмернонемоноширинного франкенштейна вендор какбэ намЯкивает про подобное нетупое баловство, не?
22 patria0muerte
 
20.09.16
05:31
Выводи построчно. Я делал подобное примерно так:

Пока НомерСтроки <= СтрЧислоСтрок(ТекстРаздела) Цикл
            
    ОбластьТекстРаздела = Макет.ПолучитьОбласть("РазделТекст");
    
    ТекстСтроки = СтрПолучитьСтроку(ТекстРаздела, НомерСтроки);
    
    ОбластьТекстРаздела.Параметры.ТекстРаздела = ТекстСтроки;
    
    Если НЕ НомерСтроки = СтрЧислоСтрок(ТекстРаздела) Тогда
        ОбластьТекстРаздела.Области.РазделТекст.ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии);                
    КонецЕсли;
    
    ВыводСПроверкой(ТабличныйДокумент, ОбластьТекстРаздела);
    
    НомерСтроки = НомерСтроки + 1;
                
КонецЦикла;


Здесь ТекстРаздела в теории может превышать размер листа. Я бью его на строки и каждую строку отдельно вывожу.

Если текст без переносов строк - то конечно не взлетит.

Тогда можно попробовать пихать в таб. док количество символов порциями (штук по 20ть) и проверять вывод. Когда выводиться перестает - делаешь шаг назад и выводишь в фактический док то что влазит.
23 gidilica_
alexandr
 
20.09.16
09:56
(22) Спасибо, вчера решил вопрос по-другому, но по схожей схеме
получил массив разделителей (символы которыми мы разделяем слова и т.п.) ну и ищу их в тексте, вывожу постепенно в табличный документ и проверяю через проверитьвывод().. думал что при одной области проверитьвывод закосячит, но нет - отработал..
у меня просто странный макет, там и шапка фиксированная есть, и колонтитулы снизу.. и ширина страницы не стандартная
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.