При необходимости внести изменения в печатные формы, такие как Счет-фактура, пользователи часто сталкиваются с тем, что добавленный текст или целые строки не отображаются в итоговом документе. Вы визуально видите текст в режиме редактирования макета, но при нажатии кнопки «Печать» он магическим образом испаряется. Разберем, почему это происходит и какими способами можно добиться желаемого результата.
Основная причина кроется в механизме формирования табличного документа. Платформа 1С:Предприятие работает не со всем листом макета сразу, а с его именованными областями (секциями). В программном коде это выглядит как последовательный вызов методов Вывести() или Присоединить() для конкретных именованных диапазонов (например, «Шапка», «Заголовок», «Строка»).
Проанализируем ситуацию: если вы добавили новую строку в макет, но она оказалась вне границ именованной области, алгоритм формирования документа просто «не заметит» её. Программа обращается к области с именем Шапка, копирует всё, что входит в её границы, и вставляет в итоговый документ. Всё, что находится ниже или между секциями без включения в их состав, на печать не выводится.
В современных конфигурациях (например, БП 3.0 или ERP) ситуация усложняется тем, что макеты могут динамически перестраиваться кодом в зависимости от даты документа или версии законодательства. Если алгоритм жестко прописан под конкретную структуру, любая лишняя строка может удаляться программно перед выводом на экран.
Если вам нужно добавить небольшую строку текста (например, «Идентификатор государственного контракта») под существующим реквизитом, проще всего использовать уже существующую ячейку, которая гарантированно выводится на печать. Рассмотрим, как это сделать:
[Валюта] (для вывода значения параметра) и обычного текста под ним.Таким образом, ваш текст окажется внутри области, которую программа точно выводит на печать, и вам не придется воевать с границами секций.
Если вам принципиально нужно создать новую отдельную строку в макете, необходимо убедиться, что она входит в нужную секцию. Выполним следующие шаги:
Шапка), чтобы переопределить её границы.Важный момент: если вы используете стандартный механизм «Редактирование макета» в пользовательском режиме, платформа может ограничивать возможность изменения имен областей. В этом случае лучше воспользоваться первым способом.
Иногда строка на самом деле выводится, но её не видно из-за настроек отображения. Проанализируем свойства ячейки:
В некоторых типовых решениях процедура Печать() может содержать условия, которые принудительно очищают параметры. Если вы добавили в макет параметр [ИдентификаторГосКонтракта], но не передали его значение в структуру данных при формировании, 1С может удалить всю строку, если она посчитает её пустой и ненужной согласно логике заполнения Счета-фактуры.
Чтобы избежать подобных проблем в сложных случаях, рекомендуется использовать Расширения для переопределения модуля печати или создавать Внешнюю печатную форму. Это позволит вам полностью контролировать процесс вывода каждой области макета через метод Вывести() и гарантировать, что ваши изменения не будут затерты стандартными механизмами конфигурации.