Как исправить задвоение строк при печати счета-фактуры в 1С 7.7?

Программист 1С v7.7 Бухгалтерский учет Торговля и дистрибуция
← На главную

При формировании и выводе на печать многостраничных печатных форм документов (счетов-фактур, товарных накладных ТОРГ-12) в платформе 1С:Предприятие 7.7 можно столкнуться с неприятной ошибкой: на втором и последующих листах документа перед новыми позициями повторно распечатывается первая строка табличной части. При этом в окне предварительного просмотра на экране таблица может выглядеть корректно. Проанализируем, почему возникает этот сбой, и разберем способы его устранения.

Причины возникновения проблемы

Выясним причину такого поведения печатной формы. В 1С 7.7 за дублирование шапки таблицы на каждом новом листе отвечает специальный механизм. Сбой происходит по одной из следующих причин:

  1. Некорректно указанный диапазон в коде: Метод ПовторятьПриПечатиСтроки() принимает номера первой и последней строки области, которая должна дублироваться. Если верхняя и нижняя границы заданы жесткими числовыми константами, добавление любой строки в шапку документа (например, увеличение высоты адреса или реквизитов) смещает шапку вниз. В результате зафиксированный диапазон захватывает строку с данными первого товара.
  2. Смещение области повтора в макете: В табличном редакторе область повтора может быть зафиксирована визуально. При редактировании ячеек макета горизонтальные маркеры могут захватить лишнюю строку таблицы.
  3. Особенности драйверов принтера и разрешения: Предварительный просмотр в 1С 7.7 строится на базе экранного разрешения (96 DPI), а физический вывод формируется через подсистему печати GDI/PCL. Несовпадение внутренних непечатаемых областей принтера приводит к переносу страниц, на которых активируется некорректная граница повтора.

Способ 1. Корректировка метода ПовторятьПриПечатиСтроки в программном коде

Разберем основной вариант исправления в конфигураторе или во внешней печатной форме документа. Откроем модуль печатной формы (или модуль обработки формирования счета-фактуры) и найдем вызов метода, управляющего повтором шапки.

Посмотрим на типовой вызов метода:


// Пример ошибочной жесткой фиксации строк
Таб.ПовторятьПриПечатиСтроки(12, 16);

Если нижняя граница захватывает первую строку товаров, достаточно уменьшить конечное значение диапазона на единицу:


// Скорректированный диапазон повтора шапки
Таб.ПовторятьПриПечатиСтроки(12, 15);

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


// Выводим секции до шапки таблицы
Таб.ВывестиСекцию("Шапка");
Таб.ВывестиСекцию("Реквизиты");

// Запоминаем начальную строку шапки
НомНачалаШапки = Таб.ВысотаТаблицы() + 1;

// Выводим шапку таблицы
Таб.ВывестиСекцию("ШапкаТаблицы");

// Запоминаем конечную строку шапки
НомКонцаШапки = Таб.ВысотаТаблицы();

// Устанавливаем точный повтор строк шапки на каждом листе
Таб.ПовторятьПриПечатиСтроки(НомНачалаШапки, НомКонцаШапки);

// Выводим строки документа
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
    Таб.ВывестиСекцию("Строка");
КонецЦикла;

Способ 2. Настройка повторяемых строк через макет таблицы

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

  1. Откроем макет печатной формы в конфигураторе.
  2. В главном меню перейдем в пункт Таблица → Настройка печати → Повторять на каждом листе строки.
  3. Посмотрим на выделенные горизонтальные пунктирные линии на линейке макета слева. Если нижняя линия заходит на секцию Строка, снимем выделение или выделим только строки секции ШапкаТаблицы.
  4. Сохраним изменения в макете и проверим вывод документа на печать.

Способ 3. Проверка параметров печати и драйвера

Если границы повтора заданы верно, но на некоторых принтерах (в частности, бюджетных линейках HP LaserJet Pro) по-прежнему вылезают пустые страницы или смещаются строки, проанализируем параметры печати:

  1. Проверим масштаб печати в меню Файл → Параметры страницы. Установим фиксированный масштаб 100% либо режим По ширине страницы без автоподгонки, провоцирующей дробные коэффициенты сжатия.
  2. Для сетевых принтеров заменим базовый host-based драйвер на совместимый HP Universal Print Driver (PCL5/PostScript), который корректно рассчитывает границы печати без искажения таблиц 1С 7.7.
← На главную