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