|
1С 8.2 Как определить высоту строки табличного документа | ☑ | ||
---|---|---|---|---|
0
kozhem1990
17.08.17
✎
15:18
|
Привет всем! Пожалуйста, подскажите, как определить высоту строки, если установлено свойство АвтоВысотаСтроки = Истина? Есть ли другой способ определить, в пунктах или в миллиметрах...
|
|||
1
kozhem1990
17.08.17
✎
15:24
|
тема закрыта, нашел: ТабДок.Область(1,1).Примечание.Высота
|
|||
2
azernot
17.08.17
✎
15:34
|
Ждём следующей темы сводящейся к "Почему ТабДок.Область(1,1).Примечание.Высота выдаёт не высоту строки, а высоту примечания"
:) Высоту строки с автовысотой определить нельзя. Да и не нужно это как правило. |
|||
3
DrShad
17.08.17
✎
15:46
|
(2) определить можно хоть с автовысотой, хоть без
|
|||
4
kozhem1990
17.08.17
✎
15:56
|
(2) уже понял это: 17,63... выдает все время)))
|
|||
5
kozhem1990
17.08.17
✎
15:58
|
(2) мне нужно, чтобы знать, в какой момент делать горизонтальный разрыв страницы, т.к. я вывожу данные в две колонки таким образом примерно:
ТабДок = Новый ТабличныйДокумент; Для Сч = 1 По 10 Цикл ТабДок.Область(Сч, 1).Текст = "Колонка1"; КонецЦикла; Для Сч = 1 По 10 Цикл ТабДок.Область(Сч, 2).Текст = "Колонка2"; КонецЦикла; ТабДок.Показать(); |
|||
6
kozhem1990
17.08.17
✎
15:58
|
(3) как?
|
|||
7
DrShad
17.08.17
✎
16:00
|
ПроверитьВывод чем не подходит?
|
|||
8
mistеr
17.08.17
✎
16:00
|
(5) Для этого есть ПроверитьВывод()
|
|||
9
kozhem1990
17.08.17
✎
16:03
|
(7) (8) в проверить вывод надо передавать массив содержащий или таблицы ТабДока либо сам ТабДок, передать область ячеек табличного документа нельзя. Т.е. мне их сначала надо выводить, скажем, ТабДок.Вывести(Колонка1), но тогда не смогу заполнить область Колонка2...
|
|||
10
kozhem1990
17.08.17
✎
16:05
|
(7) (8) + мне еще надо вывести в две колонки так, чтобы было разное количество строк, потомучто слева строка будет растягивать из-за переноса текста, а справа текст всех элементов колонки помещается с ячейку.
|
|||
11
kozhem1990
17.08.17
✎
16:07
|
(7) (8) вот я и придумал, если высота строки больше эталона какого-то, то объеденять со следующей, чтобы в правой колонке, напротив этой ячейки были две строки, к примеру, или три, не важно
|
|||
12
kozhem1990
17.08.17
✎
16:09
|
а теперь думаю что это тухлый номер всё...
|
|||
13
kozhem1990
17.08.17
✎
16:09
|
не догоняю, как да что((
|
|||
14
DrShad
17.08.17
✎
16:14
|
ну для того чтобы вычислить высоту строки ее тоже нужно вывести в таб док
|
|||
15
kozhem1990
17.08.17
✎
16:15
|
(14) но в две колонки я потом не выведу данные, ни Область().присоединить, ни как, да? я пробовал, но ничего не вышло
|
|||
16
DrShad
17.08.17
✎
16:16
|
сразу построчно выводи в две колонки
|
|||
17
mistеr
17.08.17
✎
16:16
|
(10) В платформе не предусмотрено механизмов, облегчающих вывод в несколько колонок. Поэтому как ни делай, будет тяжко и через ж.
(11) Это ты (или заказчик) уже загнул чересчур. |
|||
18
mistеr
17.08.17
✎
16:17
|
(11) Можешь попробовать правую колонку вывести как надпись.
|
|||
19
kozhem1990
17.08.17
✎
16:21
|
(16) сначала заполняется на листе первая колонка, потом вторая, я заполнял две, циклом, но забыл про то, что высота строки меняться может, вот я и парюсь по поводу высоты, как проверять ее, от этого же зависит наполнение и первой колонки и колонок на других листах.
(17) заказчик. (18) а это как? |
|||
20
kozhem1990
17.08.17
✎
16:26
|
решение как выводить я нашел, но оно реал конченное, для этого надо определить количество строк на каждом листе, то бишь вывести весь документ в одну строку, потом отчистить, и исходя из того, сколько умещается минимум строк на листе, я и заполняю сразу построчно две колонки из такого разряда:
Для Страница = 1 По КоличествоСтраниц Цикл Для Строка = 1 По КоличествоСтрокНаЛисте Цикл //в первую колонку Индекс1 = Строка - 1 + КоличествоСтрок * (Счетчик - 1); //во вторую колонку Индекс2 = Строка - 1 + КоличествоСтрок * Счетчик; КонецЦикла; Конеццикла; |
|||
21
kozhem1990
17.08.17
✎
16:26
|
описка:
решение как выводить я нашел, но оно реал конченное, для этого надо определить количество строк на каждом листе, то бишь вывести весь документ в одну КОЛОНКУ |
|||
22
kozhem1990
17.08.17
✎
16:27
|
когда лист заканчивается, я беру и обновляю значения КоличествоСтрокНаЛисте для второго листа
|
|||
23
kozhem1990
17.08.17
✎
16:28
|
но опять же, получается, я ТабДок два раза буду весь выводить
|
|||
24
mistеr
17.08.17
✎
16:33
|
(19) Создаешь в макете надпись, в нее выводишь как текст, разбитый на строки.
|
|||
25
kozhem1990
17.08.17
✎
16:50
|
(24) туплю, в смысле создать область определенной высоты, и заполнять типа ТабДок.область(счетчикцикла,1).текст = "блаблабла", или как? просто не знаю, что за Надпись такая...
|
|||
26
kozhem1990
17.08.17
✎
16:51
|
(24) а потом всю заполненную область выводить? так мне все равно надо знать высоту ячеек, или хотя бы проверять, помещается ли текст в ячейку
|
|||
27
DrShad
17.08.17
✎
17:03
|
формируй двумя таб доками с расчетом предельной высоты и потом в результирующий их выводи первый, а второй присоединяй
|
|||
28
kittystark
17.08.17
✎
17:05
|
для 2х колонок на СКД применял следующий способ, на огромных данных будет чуть тормознутым, но тем не менее:
- через тета-соединение "нумеруешь" строки запроса - для нечетных номеров - номер колонки = 1 - для четных номеров - номер колонки = 2 - производный номер строки = номер / 2 - в настройках строки группируешь по производному номеру, колонки группируешь по номеру колонки |
|||
29
kozhem1990
17.08.17
✎
17:21
|
(27) вот это норм, я понимаю!!!))) можно и проверять на вместимость в результирующий табдок, и присоеденить аккурат справа!!! Мужик!!! я бы еще долго парился с этим))))
|
|||
30
mistеr
17.08.17
✎
22:20
|
(29) Проблему с раздвиганием строк это не решает.
|
|||
31
DrShad
18.08.17
✎
07:53
|
(30) еще как решает
|
|||
32
kozhem1990
21.08.17
✎
13:13
|
ТестовыйТабДок = Новый ТабличныйДокумент;
МассивТест = Новый Массив; СчетчикТест = 0; Пока Истина Цикл МассивТест.Добавить(ПустаяСтрока); Если Не ТестовыйТабДок.ПроверитьВывод(МассивТест) Тогда МассивТест.Удалить(МассивТест.Количество() - 1); Прервать; КонецЕсли; КонецЦикла; Для каждого Элемент Из Продукция Цикл ТаблицаЛевая.Параметры.Номенклатура = Элемент.Номенклатура; ТаблицаЛевая.Параметры.НоменклатурныйНомер = Элемент.Номенклатура.НоменклатурныйНомер; ТаблицаЛевая.Параметры.Количество = Элемент.Количество; ТаблицаЛевая.Параметры.ЕдИзм = " " + НРег(Элемент.ЕдиницаИзмерения) + "."; Массив = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(МассивТест)); Пока Истина Цикл Массив.Добавить(ТаблицаЛевая); Если ТестовыйТабДок.ПроверитьВывод(Массив) Тогда Элемент.ВысотаСтроки = СчетчикТест; СчетчикТест = 0; Прервать; Иначе СчетчикТест = СчетчикТест + 1; Массив.Удалить(Массив.Количество() - 1); Массив.Удалить(Массив.Количество() - 1); КонецЕсли; КонецЦикла; КонецЦикла; ВысотаСтроки = Продукция[Счетчик - 1].ВысотаСтроки; ВысотаТаблицы = ТабДок.ВысотаТаблицы; Для Столбец = 1 По 4 Цикл Область = ТабДок.Область(ВысотаТаблицы, Столбец, ВысотаТаблицы + ВысотаСтроки - 1, Столбец); Область.Объединить(); КонецЦикла; |
|||
33
kozhem1990
21.08.17
✎
13:15
|
можно вот так найти высоту строки и потом в коде объеденять с нижними ячейками в зависимости от высоты: какая высота, столько ячеек берется. тестовая ячейка - пустая строка макета с той же высотой и стилем текста что и в таблице
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |