Почему печатная форма 1С выводится с разрывами страниц после каждой строки и как это исправить

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

В процессе эксплуатации 1С:Предприятие 8.3 пользователи часто сталкиваются с ситуацией, когда печатная форма документа (например, "Список перечислений в банк" в ЗУП 3.1) начинает вести себя некорректно: после каждой выведенной строки принудительно вставляется разрыв страницы. Даже если администратор удаляет измененный макет и возвращает стандартный, проблема сохраняется. Рассмотрим подробно, почему это происходит и как пошагово диагностировать и устранить эту "мистическую" ошибку.

Проверка и правильное удаление пользовательских макетов

Первым делом проанализируем состояние макетов печатных форм в информационной базе. В современных конфигурациях на базе БСП (Библиотеки стандартных подсистем) все изменения макетов, сделанные пользователями без программирования, сохраняются в специальном системном хранилище. Перейдем в раздел Администрирование — Печатные формы, отчеты и доработки — Макеты печатных форм.

Найдем в списке нужный нам макет, например, Список перечислений в банк. Обратим внимание на следующие моменты:

  1. Если напротив названия макета стоит значок "карандаша", это означает, что макет был изменен пользователем.
  2. Простое переключение радиокнопки в режим "Использовать стандартный" не всегда физически удаляет запись из регистра сведений Пользовательские макеты печати. Рекомендуем полностью удалить строку с измененным макетом, используя команду "Установить стандартный" или физическое удаление из списка.
  3. Учтите, что в 1С:ЗУП 3.1 может существовать несколько похожих макетов, например ПФ_MXL_СписокПеречисленийНаБанковскиеСчета и ПФ_MXL_СписокПеречисленийНаЛицевыеСчета. Важно убедиться, что вы правите именно тот макет, который используется в конкретном типе выплаты.

Диагностика настроек принтера и формата бумаги

Как показывает практика, в большинстве случаев проблема "одна строка на один лист" связана не с самим макетом, а с тем, как драйвер принтера передает параметры области печати в 1С. Рассмотрим ситуацию: у пользователя "слетели" настройки принтера по умолчанию или в параметрах страницы 1С установился некорректный размер бумаги (например, Letter вместо A4).

Выясним причину, выполнив следующие действия:

  1. Откроем печатную форму в режиме 1С:Предприятие.
  2. Перейдем в меню Файл — Параметры страницы.
  3. Проверим установленный размер бумаги. Если там стоит нестандартное значение, платформа может решить, что строка данных не помещается по высоте или ширине на лист, и принудительно разорвет страницу.
  4. Попробуем перевыбрать принтер. Часто достаточно сменить физический принтер на виртуальный (например, Microsoft Print to PDF). Если в PDF-файле документ выглядит корректно, значит, проблема 100% заключается в настройках или драйвере локального принтера.

Очистка кэша параметров печати пользователя

Даже после исправления макета 1С может продолжать использовать старые параметры печати (ориентацию, поля, масштаб), так как они кэшируются в Хранилище общих настроек для каждого пользователя и каждой формы отдельно. Чтобы сбросить эти настройки, выполним следующие шаги:

Перейдем в раздел Администрирование — Настройки пользователей и прав — Очистка настроек. Выберем конкретного пользователя и в списке настроек найдем "Настройки печати" для документа "Ведомость в банк". Удалим их. Это заставит систему при следующей печати заново считать параметры из макета и настроек принтера по умолчанию.

Также полезно удалить файл локальных настроек v8sprefs.xml, который находится в папке профиля пользователя (Roaming\1C\1Cv8\...). В этом файле могут "залипнуть" старые драйверные настройки принтера, которые мешают корректному выводу.

Программный анализ вывода строк (для разработчиков)

Если манипуляции с интерфейсом не помогли, проанализируем программный код в модуле менеджера документа. В типовых решениях печать часто реализуется через метод ПроверитьВывод(). Рассмотрим пример того, как это выглядит в коде:


// Пример проверки вывода области в табличный документ
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
// Заполнение параметров области...
Если Не ТабличныйДокумент.ПроверитьВывод(ОбластьСтрока) Тогда
    ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьСтрока);

Функция ПроверитьВывод() возвращает Ложь, если выводимая область не помещается на текущую страницу с учетом текущих настроек принтера и полей. Если драйвер принтера сообщает системе о слишком больших "непечатных зонах", 1С будет ошибочно считать, что каждая строка должна выводиться на новом листе. Именно это объясняет, почему проблема исчезает после перевыбора принтера или настройки формата A4.

Использование консоли запросов для поиска скрытых макетов

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


// Программный вызов макета через БСП
Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет.ПФ_MXL_СписокПеречисленийНаБанковскиеСчета");

Если в системе зарегистрирован пользовательский макет с таким же именем, функция УправлениеПечатью.МакетПечатнойФормы вернет именно его, а не макет из конфигурации. Убедитесь, что в базе нет расширений, которые могут подменять этот макет на уровне кода (через префиксы &Вместо или &После).

Подведем итоги

Если вы столкнулись с тем, что печатная форма 1С упорно выводит по одной строке на лист, следуйте этому алгоритму:

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

← На главную