Табличный документ. Разная высота строк в разных колонках. #420343


#0 by selenat
Задача такая. Имеем 6 колонок. В 3 из них строки должны иметь свою высоту (которая определяется автоматически по содержимому ячеек), в других 3 строки имеют свою высоту (тоже определяется независимо по содержимому своих ячеек). Кто-нибудь делал такое? Попробовал формировать разные наборы колонок в разных табличных документах, а потом выводить в итоговый табл. док. сначала готовый вариант из первого таб. дока, потом присоединять к нему готовый вариант из второго таб дока. Ничего хорошего не вышло - 1С выравнивает всю строку по содержимому ячеек во всех 6 колонках. Вот код:    Ном1 = 0; Что можно доработать в этом коде для получения результата? Или какой есть еще вариант?
#1 by selenat
апп
#2 by Mitriy
Объединяй
#3 by selenat
если можно, чуть подробнее. Чем мне может помочь объединение ячеек?
#4 by Mitriy
я делал этикетку, где надо было выводить в разных местах разными шрифтами разные вещи, да чтобы еще и красиво было... разбиваешь табдок на мелкие строки и стобцы, из расчета, например, 10 на обычную строку и объединяешь как хочешь...
#5 by Mitriy
в твоем случае столбцы разбивать не нужно...
#6 by selenat
насколько я понимаю, так ты можешь получать области неправильной формы. Но чем это поможет мне? Мне нужно, чтобы в зависимости от количества инфы в ячейках срабатывала автовысота строк (у ячеек свойство "размещение" ставлю "переносить"). Но нужно, чтобы эта автовысота работала только в пределах определенных колонок. По другим колонкам тоже работает автовысота, но в пределах этого другого набора колонок. Т.е. подчеркивание строк в разных колонках идет на разном уровне...
#7 by Mitriy
ну не могут быть строки в табдоке быть разной высоты в разных колонках... поэтому только извращаться... еще можно попробовать выводить горизонтально ))
#8 by selenat
в смысле развернуть текст на 90 градусов и заменить колонки на строки?
#9 by Mitriy
ну да... только мне кажется, что это еще муторнее, чем мой вариант...
#10 by selenat
тогда скажи еще раз про свой вариант. Он пока до меня не дошел. Как в твоем случае можно регулировать высоту строк по каждой колонке?
#11 by Mitriy
это только идея... реализации в динамике я не делал, у меня был готовый макет    с разными областями, в крайнем случае я что-то объединял, но тоже в определенных пределах и все области были поименованы, поэтому проще. А вот как выводить динамически, рассчитывая, что объединять и как будет себя вести Присоединить и вывести, это надо пытать...
#12 by Mitriy
могу предложить собирать сначала первую колонку, выводить ее, а потом последовательно присоединять следующие колонки... целиком...
#13 by Mitriy
но с таким расчетом, что высота строк во всех колонках будет одинаковой, а уж по сколько ты их будешь объединять, тебе решать :)
#14 by selenat
херово. У меня именно динамический вариант. И количество строк, и объем инфы в каждой ячейки может быть каким угодно. Разбивать содержимое ячейки на строки вручную (чтоб переносы целых слов были правильными), чтобы для каждой ячейки расчитать необходимую высоту - это закат солнца вручную...
#15 by selenat
так я ж так и делаю в . Это была первая же идея, которая в голову пришла. Но одинесина автоматически перевыравнивает высоты строк...
#16 by Mitriy
можно предварительно выводить в область с автовысотой и переносом и измерять высоту строки, которую потом использовать...
#17 by Mitriy
кстати, измерение высоты я сегодня уже где-то предлагал, может пригодится:
#18 by selenat
Тут два момента. Во-первых, я не нашел свойств,  из которых можно считать получившуюся высоту строки. Второе - 1С все равно перевыравнивает высоту, несмотря на попытки запрета этого:
#19 by Mitriy
кстати, если заменить Высота на Ширина, то ширина тоже будет в миллиметрах, что иногда дюже радует ))
#20 by selenat
класс. Спасибо!
#21 by selenat
Афигеть!
#22 by Mitriy
строки используй одинаковой высоты, заданной в макете... или приводи их к такой высоте перед выводом... будешь всегда знать, на какую высоту сколько строк надо...
#23 by selenat
т.е. получается, что зная высоты всех строк в двух разных таб доках (каждый таб. док со своим набором колонок), я могу конструировать строку с единой высотой в результирующем документе, выводя где нужно пустые места и т.д. Так?
#24 by Mitriy
в идеале можно иметь одну область в виде ячейки с высотой строки в один миллиметр и шириной в одну колонку, и с помощью нее лепить все, что угодно ))
#25 by selenat
И все равно пока не догоняю. Если мне нужно провести подчеркивание строки в одной колонке выше, чем в другой. В этом случае мне видимо придется выводить 2 строки, искусственно разбив содержимое колонки с бОльшей высотой на 2 строки. Как в этом случае текст разбивать? фигасе О-0. А с текстом динамическим что делать?
#26 by Mitriy
можно собирать область каждой ячейки столбца из мелких областей, в количестве, рассчитанном по нужной высоте, которую можно рассчитать предварительным выводом в обычную строку с автовысотой, а потом объединять и туда вставлять текст... где-то так ))
#27 by Mitriy
в общем, конструктор покруче лего... все я ушел, если что, можно завтра по экспериментировать...
#28 by selenat
Из каких бы кусочков мы ни собирали ячейки, вывод всегда происходит с единой высотой строки. Давай на примере. Вот предположим, у нас высота строки по одному набору столбцов равна 15. По другому - 25. Какой высоты строку мы будем собирать для вывода в результирующем таб доке? Поскольку мне нужно отчеркнуть строку меньшей высоты, то наверное придется выводить 2 строки, одну высотой 15, другую - 10. Как в этом случае разбивать текст по этим строкам?
#29 by selenat
ок. Подниму еще завтра веточку...
#30 by Mitriy
пока теория и вкратце: 1. Берем чистый макет - табдок. Чтобы не париться с границами, в первом столбце выделяем подряд сверху n ячеек и указываем границу везде. 2. Когда узнаем, какой высоты h должна быть ячейка, получаем Область(1, 1, h/К, 1), где К - коэффициент = стандартной высоте строки (если стандарт выбираем = 1мм, тогда и К = 1 мм) объединяем, присваиваем нужный текст, устанавливаем стандартную высоту строки и выводим в формируемую колонку... то бишь, строки всегда будут иметь одинаковую высоту, просто количество объединенных по вертикали ячеек будет отличаться... примерно так я себе это представляю...
#31 by НЕА123
как вариант: исользовать рисунки типа текст.
#32 by Mitriy
можно даже кнопки ))
#33 by selenat
Спасибо, буду пробовать!
#34 by selenat
все равно не понятно. Мы выводим целиком строку или только область в одной колонке, к которой потом присоединяем области в других колонках? Если второй вариант, то что будет если высота присоединяемой секции будет больше высоты в прошлой колонке? Скорее всего в этом случае 1С все равно приведет все области в разных колонках к одной высоте. А если нет, то вообще неясно, как будет осуществляться вывод следующих строк...
#35 by Mitriy
собираем полностью колонку первую, выводим ее, потом полностью собираем колонку вторую, присоединяем, третью присоединяем и т.д.
#36 by selenat
ну дык я ж говорил, что при таком подходе 1С выравнивает все. Вряд ли есть разница - собирали мы ячейки объединением секций или нет...
#37 by selenat
+36 но конечно попробую...
#38 by Mitriy
если все правильно делать, то строки будут одинаковой высоты, что там выравнивать еще?
#39 by Mitriy
млин... может и правда чо не так... надо самому попытать, а то я все на словах тут умничаю...
#40 by selenat
как это одинаковой высоты? Ты ведь собираешь ячейку из строк одинаковой высоты до вывода ее в таб док. А выводишь в таб док уже целиком область с какой-то неизвестной заранее высотой. И какая тогда разница - как ты собирал эту область? Высота выводимой области каждый раз разная...
#41 by selenat
Кстати, код в 17 почему-то возвращает 0 все время... :(
#42 by selenat
ты сам пользовался кодом ? У тебя реально высоту определяет?
#43 by Mitriy
вот моя идея в первом приближении: а высоту щас проверю...
#44 by selenat
спасибо, буду разбираться...
#45 by Mitriy
а вот так высота работает:
#46 by Mitriy
думаю, можно все это упростить как-то, если повозиться...
#47 by selenat
Спасибо! Щас после обеда начну ковырять все это и попытаюсь приспособить...
#48 by selenat
так, с высотой кажется разобрался. Спасибо. Щас дальше пойду...
#49 by selenat
Митрий, спасибо большое! Твой метод действительно работает. Сейчас буду приспосабливать его к своей задаче.
#50 by selenat
Еще раз спасибо! Все получилось прекрасно!
#51 by selenat
Еще вопросик. А почему не работает вот такая конструкция для объединения ячеек, в каждой из которых заполнен свой параметр? Вроде как если делаешь то же самое в конфигураторе интерактивно, ячейки объединяются, оставляя в качестве содержимого то, что было в первой (верхней или левой) ячейке области...
#52 by НЕА123
#53 by selenat
не, не то. Область и Область в данном случае имеют разный тип. Одно - табличный документ, другое - облясть ячеек табличного документа. Тут все правильно, это совершенно рабочая конструкция. Но работает почем-то только объединяя с пустыми ячейками...
#54 by НЕА123
не уверен, но может так Область = мМакет.Область(1, 1, Низ, 1);
#55 by selenat
хех, кажись помогло. Спасибо!
#56 by selenat
Что-то я не догнал. Вот этот алгоритм из у меня на копии работает нормально. А на реальной базе выдает для каждой области одинаковую высоту. При том, что объем текста у разных ячеек разный. Соотвтетсвенно на копии высота разная. И структура инфы, и сама инфа одинакова. В чем может быть трабла?
#57 by selenat
никто с не сталкивался?
#58 by selenat
апп
#59 by selenat
жаль :((
#60 by НЕА123
хз. может из-за автовысота = ложь?
#61 by selenat
запарка. Даже нет сейчас времени посмотреть. Гляну как только смогу. Спасибо!
#62 by selenat
Дело было в разных релизах платформы. Еще раз спасибо...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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