Имя: Пароль:
1C
 
Перенос на новый лист в Табличном Документе
0 Ivan7AK
 
06.05.26
11:50
Необходимо выводить шапку таблицы и последнюю строку товара на новый лист, что бы там не остались только реквизиты компании


Столкнулся с такой проблемой, в макете стоит автовысота строк, т.к. название номенклатуры может быть и 20 символов, а может и 400, плюс картинки могут отсутсвовать.
Случается что реквизиты из области подвала не умещаются под таблицей на листе и они переносятся на другой лист.
Что не есть Окей.
Как определеить при выводе строки с товарами что на листе не уместятся с ней реквизиты и её вместе с шапкой вывести на новый лист.
ТабДок высоту страницы считается в строках макета, а они разной высоты


Что можете посоветовать, пожалуйста!
1 timurhv
 
06.05.26
11:55
ТабличныйДокумент (SpreadsheetDocument)
ПроверитьВывод (CheckPut)
Синтаксис:
ПроверитьВывод(<Таблицы>)
Параметры:
<Таблицы> (обязательный)
Тип: Массив, ТабличныйДокумент.
Массив из проверяемых таблиц или табличный документ.

Возвращаемое значение:
Тип: Булево.
Истина - умещаются; Ложь - в противном случае.
Описание:
Проверяет, умещаются ли переданные табличные документы на страницу при печати.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
При возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение.
Следует учитывать, если для табличного документа установлены поля, размер которых меньше размера полей, установленных для принтера, на котором документ будет напечатан, то при печати содержимое некоторых строк может не уместиться на странице, даже если метод возвращает значение Истина.

Т.Добавить(ШапкаДокумента);
Т.Добавить(СтрокаДокумента);
Т.Добавить(ПодвалДокумента);
Если Не ТабДок.ПроверитьВывод(Т) Тогда
    Сообщить("Документ не умещается на страницу!");
КонецЕсли;


Но если документ большой - будет долго лопатить.
2 paramedic
 
06.05.26
12:03
(1) Только надо помнить, что эта функция врет как сивый мерин. Это можно легко увидеть, когда документ бъется на страницы при наличии огромных пустых полей, куда спокойно влезает не одна строка табличной части.
3 Ivan7AK
 
06.05.26
12:11
(1) спасибо, на документе с 40 товарами отработала корректно с 6 листами



...цикл товарам
вывод шапка
цикл товары заполнение строки товаров


                Если ТабличныйДокумент.ПроверитьВывод(ОбластьПриложениеСтрока) Тогда
                    Сообщить("Документ Умещается");
                Иначе
                    Сообщить("Документ не Умещается");
                    ТабличныйДокумент.Вывести(ОбластьПриложениеШапкаТаблицы);
                КонецЕсли;
                
                ТабличныйДокумент.Вывести(ОбластьПриложениеСтрока);



выводенные сообщения
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ не Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ не Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ не Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ не Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ Умещается
Документ не Умещается
Документ Умещается
Документ Умещается
Документ Умещается
4 RomanYS
 
06.05.26
12:11
+(2) она тормозит и зависит от принтера (что логично - для этого ее и придумали)
5 Ivan7AK
 
06.05.26
12:11
хочу протестировать сейчас когда строки товаров умещаются, а подвал таблицы нет)
6 RomanYS
 
06.05.26
12:34
(0) Есть простой вариант:
1. шапку задать как область повтора строк табличного документа
2. Для последней строки таблицы и всего подвала задаем ВместеСоследующим = Истина;

Ограничения:
1. такой фокус пройдёт только с одной таблицей
2. подвал должен влезать на страницу, иначе в нём вылезет шапка таблицы
7 Ivan7AK
 
06.05.26
12:34
Получилось так
Макет
https://ibb.co/gMGS32Xr

Код
https://ibb.co/LDgR68gd

печать
https://ibb.co/1YWjZYhG

вот думаю почему последняя строка товара выводится, я ведь скопировал в табдок1 перед выводом области
8 RomanYS
 
06.05.26
12:41
(7) я ведь скопировал в табдок1
Ты скопировал "ссылку" на ТД, а не скопировал содержимое
9 Ivan7AK
 
06.05.26
14:05
(8) понял
10 Ivan7AK
 
06.05.26
14:16
Получилось с помощью -
Удалить всю строку в табличном документе.

Всем спасибо!
11 timurhv
 
06.05.26
14:29
(2) Она не врет, был такой же вывод как у вас.
Лет 10 назад с такой же задачей столкнулся, некорректно передавал массив - из-за этого криво работало.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший