При работе с печатными формами документов в 1С, особенно в таких сложных формах, как Товарно-транспортная накладная (ТТН), пользователи часто сталкиваются с тем, что система принудительно переносит одну или несколько строк на следующую страницу, оставляя на текущей много пустого места. Давайте вместе разберемся, почему так происходит и можно ли это изменить.
Первое, что нужно усвоить: поведение печатной формы — это не «баг», а заложенная логика платформы. В макетах 1С существует понятие группировки строк. Система воспринимает табличную часть вместе с итоговым подвалом как единый логический блок. Если в настройках макета установлено свойство Выводить вместе с предыдущим для подвала, система будет проверять, помещается ли подвал (подписи, расшифровки, печати) на текущую страницу.
Если места недостаточно для размещения подвала целиком, 1С «тянет» за собой часть строк табличной части, чтобы документ не выглядел разорванным. Это делается для того, чтобы подписи не оказались на пустом листе, что с точки зрения документооборота является грубым нарушением.
Важно помнить, что первичные учетные документы, к которым относится ТТН, должны отвечать требованиям законодательства. Основное из них — исключение возможности подделки документа. Подписи ответственных лиц должны находиться на странице, где есть информация о товарах или услугах.
Если подписи окажутся на «голом» листе, документ легко может быть признан недействительным при налоговой или аудиторской проверке. Именно поэтому алгоритмы 1С настроены на предотвращение ситуаций, когда подписи оказываются «оторванными» от содержания документа.
Если вы решили, что стандартное поведение вам не подходит, давайте проанализируем, какие есть способы оптимизации:
ТабличныйДокумент. Этот метод позволяет динамически вычислять высоту текущей страницы и высоту выводимых строк. Вы можете самостоятельно вставлять разрывы страниц (метод ВывестиГоризонтальныйРазделительСтраниц) только тогда, когда это действительно необходимо.Разберем пример того, как программисты 1С управляют выводом данных, чтобы максимально эффективно использовать место на странице:
// Пример логики вывода табличной части
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаТаблицы");
ОбластьСтроки.Параметры.Заполнить(СтрокаТЧ);
// Проверяем, поместится ли строка в оставшееся место
Если ТабличныйДокумент.ПроверитьВывод(ОбластьСтроки) Тогда
ТабличныйДокумент.Вывести(ОбластьСтроки);
Иначе
// Если не помещается, принудительно разрываем страницу
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабличныйДокумент.Вывести(ОбластьСтроки);
КонецЕсли;
КонецЦикла;
Используя объект ПроверитьВывод, система заранее оценивает, поместится ли блок на странице. Это позволяет реализовать гибкую логику печати без потери юридической значимости документа.
Подводя итог: перед внесением изменений в типовую печатную форму ТТН, тщательно взвесьте риски. Если у вас есть возможность просто сделать макет более компактным (изменить отступы или шрифты в подвале), это будет лучшим решением, не требующим вмешательства в код. Если же вы выбираете программный метод, обязательно убедитесь, что подписи сотрудников всегда остаются «привязанными» к табличной части с товарами, чтобы у контролирующих органов не возникло вопросов к вашим документам.