Часто при доработке печатных форм пользователи сталкиваются с тем, что после изменения макета в режиме предприятия текст, который должен выводиться один раз, начинает дублироваться на листе. Давайте вместе разберем, почему это происходит и как найти причину, скрытую в программном коде 1С.
Важно понимать, что печатная форма в 1С:УНФ — это не статичный документ. Вся логика вывода данных заложена в программном модуле, который обращается к макету как к набору областей. Когда мы редактируем макет визуально, мы меняем только «внешний вид», но алгоритм, который «заполняет» эти области данными, остается неизменным.
Если вы удалили параметр из макета, но в программном коде осталась команда ТабДок.Вывести(), которая выполняется дважды для одной и той же области, результат печати будет содержать дубли. Основная причина — это цикл или последовательные вызовы функции вывода в коде модуля, которые продолжают «отрабатывать» даже после ваших правок в редакторе.
Давайте проанализируем, как происходит процесс формирования документа и где искать ошибку:
ОбластьСтроки = Макет.ПолучитьОбласть("ДополнительныеУсловия");
// Вывод области первый раз
ТабДок.Вывести(ОбластьСтроки);
// Вывод области второй раз
ТабДок.Вывести(ОбластьСтроки);
Если вы видите подобную структуру, то именно двойной вызов ТабДок.Вывести() является причиной появления текста дважды.
Чтобы окончательно решить задачу, выполним следующие действия:
Печать или СформироватьПечатнуюФорму). Используйте Точки останова, чтобы посмотреть, сколько раз выполняется метод Вывести() для нужной вам области. Это даст 100% ответ, где именно происходит дублирование.
Область.Параметры.Условие = "Ваш текст";
ТабДок.Вывести(Область);
Если этот код выполняется в цикле, он будет генерировать строки снова и снова.
Помните: визуальный редактор макетов — это лишь инструмент отображения. Любые изменения в структуре вывода областей должны быть подкреплены пониманием того, как работает код 1С. В большинстве случаев достаточно просто найти лишний вызов ТабДок.Вывести() и удалить его, чтобы нормализовать печатную форму.