1с как узнать высоту табличного документа

Обновлено: 02.07.2024

Привет всем! Пожалуйста, подскажите, как определить высоту строки, если установлено свойство АвтоВысотаСтроки = Истина? Есть ли другой способ определить, в пунктах или в миллиметрах.

тема закрыта, нашел: ТабДок.Область(1,1).Примечание.Высота

Ждём следующей темы сводящейся к "Почему ТабДок.Область(1,1).Примечание.Высота выдаёт не высоту строки, а высоту примечания" :) Высоту строки с автовысотой определить нельзя. Да и не нужно это как правило.

мне нужно, чтобы знать, в какой момент делать горизонтальный разрыв страницы, т.к. я вывожу данные в две колонки таким образом примерно:

в проверить вывод надо передавать массив содержащий или таблицы ТабДока либо сам ТабДок, передать область ячеек табличного документа нельзя. Т.е. мне их сначала надо выводить, скажем, ТабДок.Вывести(Колонка1), но тогда не смогу заполнить область Колонка2.

+ мне еще надо вывести в две колонки так, чтобы было разное количество строк, потомучто слева строка будет растягивать из-за переноса текста, а справа текст всех элементов колонки помещается с ячейку.

вот я и придумал, если высота строки больше эталона какого-то, то объеденять со следующей, чтобы в правой колонке, напротив этой ячейки были две строки, к примеру, или три, не важно

ну для того чтобы вычислить высоту строки ее тоже нужно вывести в таб док

но в две колонки я потом не выведу данные, ни Область.присоединить, ни как, да? я пробовал, но ничего не вышло

В платформе не предусмотрено механизмов, облегчающих вывод в несколько колонок. Поэтому как ни делай, будет тяжко и через ж. Это ты (или заказчик) уже загнул чересчур.

Можешь попробовать правую колонку вывести как надпись.

сначала заполняется на листе первая колонка, потом вторая, я заполнял две, циклом, но забыл про то, что высота строки меняться может, вот я и парюсь по поводу высоты, как проверять ее, от этого же зависит наполнение и первой колонки и колонок на других листах. заказчик. а это как?

описка: решение как выводить я нашел, но оно реал конченное, для этого надо определить количество строк на каждом листе, то бишь вывести весь документ в одну КОЛОНКУ

когда лист заканчивается, я беру и обновляю значения КоличествоСтрокНаЛисте для второго листа

но опять же, получается, я ТабДок два раза буду весь выводить

Создаешь в макете надпись, в нее выводишь как текст, разбитый на строки.

туплю, в смысле создать область определенной высоты, и заполнять типа ТабДок.область(счетчикцикла,1).текст = "блаблабла", или как? просто не знаю, что за Надпись такая.

а потом всю заполненную область выводить? так мне все равно надо знать высоту ячеек, или хотя бы проверять, помещается ли текст в ячейку

формируй двумя таб доками с расчетом предельной высоты и потом в результирующий их выводи первый, а второй присоединяй

для 2х колонок на СКД применял следующий способ, на огромных данных будет чуть тормознутым, но тем не менее: - через тета-соединение "нумеруешь" строки запроса - для нечетных номеров - номер колонки = 1 - для четных номеров - номер колонки = 2 - производный номер строки = номер / 2 - в настройках строки группируешь по производному номеру, колонки группируешь по номеру колонки

вот это норм, я понимаю. ))) можно и проверять на вместимость в результирующий табдок, и присоеденить аккурат справа. Мужик. я бы еще долго парился с этим))))

можно вот так найти высоту строки и потом в коде объеденять с нижними ячейками в зависимости от высоты: какая высота, столько ячеек берется. тестовая ячейка - пустая строка макета с той же высотой и стилем текста что и в таблице

Управление высотой строк табличного поля

В 1С:Предприятии 8 реализована возможность устанавливать высоту отдельных ячеек строк табличного поля , то есть существует возможность отображать в ячейках строк табличного поля многострочный текст . При этом можно задать высоту ячеек строк как для табличного поля в целом , так и для отдельных ячеек , в этом случае строки табличного поля могут иметь разную высоту . Также существует возможность автоматического определения высоты ячеек строк табличного поля .

Существует несколько способов установки высоты ячеек строк табличного поля :

  1. Можно установить высоту ячейки строки табличного поля в палитре свойств . Для этого необходимо использовать свойство " Высота ячейки " колонки табличного поля . Для того чтобы для данной колонки высота ячейки вычислялась автоматически , необходимо установить свойство " Автовысота ячейки ", при этом значение свойства " Высота ячейки " будет использоваться как максимально возможная высота ячейки .
  2. Можно устанавливать высоту ячеек отдельных строк табличного поля . Для этого необходимо при обработке события ПриВыводеСтроки() табличного поля устанавливать высоту определенным ячейкам . Для управления высотой ячеек табличного поля предусмотрены свойства ВысотаЯчейки и АвтоВысотаЯчейки объекта типа ОформлениеЯчейки . Поясним использования этих свойств на следующем примере . Пусть существует справочник Номенклатура , у которого имеются реквизит НаименованиеПолное . Требуется полностью отображать значение реквизита НаименованиеПолное для строк табличного поля , не являющихся группами .

При обработке события ПриВыводеСтроки() устанавливаем свойства " ВысотаЯчейки " и " АвтоВысотаЯчейки " для ячейки , отображающей значение реквизита НаименованиеПолное , при этом устанавливаем максимально возможную высоту ячейки равной 5 строкам :

Копировать в буфер обмена
  1. Можно настраивать высоту и авто - высоту ячеек строк табличного поля через окно настройки списка . Для этого необходимо использовать команду " Настройка списка " контекстного меню табличного поля . В этом случае система запомнит эти настройки и восстановит их при следующем открытии списка . Необходимо отметить , что эти настройки действительны только для ячеек , высота и авто-высота которых не изменяется программно , т . е . при обработке события ПриВыводеСтроки() .

Необходимо отметить , что если в строке табличного поля установлена высота нескольким ячейкам , то действительная высота строки будет равна максимальной высоте ячейки этой строки , при этом высота ячеек , которым высота не установлена , может выть увеличена . Также стоит отметить , что высота ячеек строки табличного поля может увеличиваться в зависимости от положения колонок табличного поля . Так , если колонки табличного поля расположены друг под другом , то высота соседних ячеек будет увеличена .

Большинство обучающих материалов по программированию в системе 1С при описании формирования печатных форм на основе объекта «Табличный документ» ограничиваются выводом готовой формы на экран. Для пользователей же куда более важным является то, как документ будет выглядеть в распечатанном виде. Здесь, кроме хорошо сверстанного макета, играют роль и установки параметров печати.Почти все параметры, доступные в диалогах настройки печати (настройки принтера, свойства страницы), можно указать непосредственно при формировании табличного документа.Рассмотрим свойства и методы табличного документа, относящиеся к настройкам печати (в приведенных примерах «ТабДок» это объект типа «Табличный документ»).

Свойство «ИмяПринтера» позволяет задать для печати принтер, отличный от установленного по умолчанию. Имя должно совпадать с именем принтера, заданным в системе:

ТабДок.ИмяПринтера="HP LaserJet 3050 Series PCL 6";

При печати пакета документов можно сэкономить время, установив признак разбора по копиям:

Число копий можно указать так:

Разумеется, можно задать поля:

ТабДок.ПолеСлева=20;//Поле слева 20мм, остальные поля 10мм (по умолчанию)

Еще несколько свойств страницы:

При необходимости можно указать конкретное значение масштабирования в процентах (свойство «МасштабПечати»).

Для нестандартного размера бумаги (Custom) можно указать значения высоты и ширины страницы (в мм):

Также в табличном документе доступно управление выводом колонтитулов и их содержимым. Для этого служат свойства «ВерхнийКолонтитул» и «НижнийКолонтитул». Например:

Сформированный документ отправляется на печать с помощью метода «Напечатать()». Возможно два варианта вызова.

1) Непосредственно на принтер:ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать); ТабДок.Напечатать(истина);

2) Перед печатью будет выведен диалог печати:ТабДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать); ТабДок.Напечатать(ложь);

Кроме того можно управлять и разбиением документа на страницы. Оценить количество страниц в документе по настройкам текущего принтера можно так:

С помощью методов «ПроверитьВывод()» и «ПроверитьПрисоединение()» можно определить, умещается ли табличный документ или массив областей табличного документа на странице в высоту и в ширину при текущих настройках принтера.Надо иметь ввиду, что работа последних трех методов зависит от установленного принтера. Если методу не удается его найти, вызывается исключение.

Мы реализовали новый режим отображения таблицы, когда её высота определяется содержимым. Этот режим реализован для всех таблиц, которые не связаны с динамическими списками. Это, например, табличные части, таблицы значений и деревья значений.

Раньше таблица выглядела следующим образом. Вы могли задать либо фиксированную высоту таблицы, либо включить для неё растягивание по вертикали. В результате пустая таблица всегда занимала всё отведённое ей пространство. А если в таблице было лишь несколько строк, то после последней строки оставалась значительная неиспользуемая область.

01.jpg

Теперь пустая таблица занимает всего лишь 3 строки, а при её заполнении тремя и более строками, пустого пространства внизу таблицы не остаётся.

02.jpg

Мы видим два основных сценария использования нового режима отображения таблицы.

Самый простой сценарий, когда вы заведомо знаете, что в таблице не будет много строк, и все они поместятся на экране. Тогда вы можете отключить растягивание таблицы по вертикали, а свойство ВариантУправленияВысотой установить в значение ПоСодержимому. В этом случае пустая таблица будет занимать три строки, а при добавлении каждой следующей строки таблица будет раздвигаться вниз.

Более сложный сценарий, когда обычно в таблице строк не много, но иногда их может быть значительное количество. В этом случае, в дополнение к первому варианту, вам понадобится ограничить максимальную высоту раздвижения таблицы, чтобы она не портила форму. Для этого вы отключаете автоматическую максимальную выстоту в строках таблицы, а в свойстве МаксимальнаяВысотаВСтрокахТаблицы устанавливаете то значение, до которого позволительно раздвигать таблицу. Тогда, после достижения этого значения, таблица перестанет раздвигаться по высоте и начнёт прокручиваться. На следующем видео максимальная высота таблицы 7 строк.

По нашим оценкам такой режим отображения полезен и удобен, но мы пока не меняли стандартное поведение таблицы. Автоматически, при конструировании формы, новый режим не используется. Если в какой-то форме он вам нужен, необходимо включить его самостоятельно.

Это связано с тем, что мы хотим проанализировать ваши отзывы и опыт работы пользователей. На основании этого мы будем решать, в каких случаях устанавливать этот режим стандартно, по умолчанию.

Читайте также: