В процессе эксплуатации 1С:Предприятие 8.3 пользователи часто сталкиваются с ситуацией, когда печатная форма документа (например, "Список перечислений в банк" в ЗУП 3.1) начинает вести себя некорректно: после каждой выведенной строки принудительно вставляется разрыв страницы. Даже если администратор удаляет измененный макет и возвращает стандартный, проблема сохраняется. Рассмотрим подробно, почему это происходит и как пошагово диагностировать и устранить эту "мистическую" ошибку.
Первым делом проанализируем состояние макетов печатных форм в информационной базе. В современных конфигурациях на базе БСП (Библиотеки стандартных подсистем) все изменения макетов, сделанные пользователями без программирования, сохраняются в специальном системном хранилище. Перейдем в раздел Администрирование — Печатные формы, отчеты и доработки — Макеты печатных форм.
Найдем в списке нужный нам макет, например, Список перечислений в банк. Обратим внимание на следующие моменты:
Пользовательские макеты печати. Рекомендуем полностью удалить строку с измененным макетом, используя команду "Установить стандартный" или физическое удаление из списка.ПФ_MXL_СписокПеречисленийНаБанковскиеСчета и ПФ_MXL_СписокПеречисленийНаЛицевыеСчета. Важно убедиться, что вы правите именно тот макет, который используется в конкретном типе выплаты.Как показывает практика, в большинстве случаев проблема "одна строка на один лист" связана не с самим макетом, а с тем, как драйвер принтера передает параметры области печати в 1С. Рассмотрим ситуацию: у пользователя "слетели" настройки принтера по умолчанию или в параметрах страницы 1С установился некорректный размер бумаги (например, Letter вместо A4).
Выясним причину, выполнив следующие действия:
Microsoft Print to PDF). Если в PDF-файле документ выглядит корректно, значит, проблема 100% заключается в настройках или драйвере локального принтера.Даже после исправления макета 1С может продолжать использовать старые параметры печати (ориентацию, поля, масштаб), так как они кэшируются в Хранилище общих настроек для каждого пользователя и каждой формы отдельно. Чтобы сбросить эти настройки, выполним следующие шаги:
Перейдем в раздел Администрирование — Настройки пользователей и прав — Очистка настроек. Выберем конкретного пользователя и в списке настроек найдем "Настройки печати" для документа "Ведомость в банк". Удалим их. Это заставит систему при следующей печати заново считать параметры из макета и настроек принтера по умолчанию.
Также полезно удалить файл локальных настроек v8sprefs.xml, который находится в папке профиля пользователя (Roaming\1C\1Cv8\...). В этом файле могут "залипнуть" старые драйверные настройки принтера, которые мешают корректному выводу.
Если манипуляции с интерфейсом не помогли, проанализируем программный код в модуле менеджера документа. В типовых решениях печать часто реализуется через метод ПроверитьВывод(). Рассмотрим пример того, как это выглядит в коде:
// Пример проверки вывода области в табличный документ
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
// Заполнение параметров области...
Если Не ТабличныйДокумент.ПроверитьВывод(ОбластьСтрока) Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьСтрока);
Функция ПроверитьВывод() возвращает Ложь, если выводимая область не помещается на текущую страницу с учетом текущих настроек принтера и полей. Если драйвер принтера сообщает системе о слишком больших "непечатных зонах", 1С будет ошибочно считать, что каждая строка должна выводиться на новом листе. Именно это объясняет, почему проблема исчезает после перевыбора принтера или настройки формата A4.
В редких случаях измененный макет может "застрять" в системных таблицах. Проверим наличие записей в регистре сведений Пользовательские макеты печати программным путем или через консоль запросов. Посмотрим на структуру вызова макета в коде:
// Программный вызов макета через БСП
Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет.ПФ_MXL_СписокПеречисленийНаБанковскиеСчета");
Если в системе зарегистрирован пользовательский макет с таким же именем, функция УправлениеПечатью.МакетПечатнойФормы вернет именно его, а не макет из конфигурации. Убедитесь, что в базе нет расширений, которые могут подменять этот макет на уровне кода (через префиксы &Вместо или &После).
Если вы столкнулись с тем, что печатная форма 1С упорно выводит по одной строке на лист, следуйте этому алгоритму:
Такой системный подход позволит быстро выявить причину — будь то человеческий фактор при редактировании макета или технический сбой в работе драйвера печати.