При работе с конфигурацией «1С:Управление торговлей 10.3» программисты часто сталкиваются с ситуацией: в конфигураторе открывается макет документа (например, «Накладная» для «Реализации товаров и услуг»), в него вносятся изменения или добавляется новый текст, но при запуске печати в режиме «Предприятие» макет остается прежним. Это может вызвать замешательство, особенно если визуально в конфигураторе всё выглядит правильно.
В этой статье мы подробно разберем причины этой проблемы и пошагово выясним, как заставить программу выводить нужные данные.
Самая частая причина, по которой новый текст не виден при печати — это непонимание того, как 1С формирует табличный документ. В отличие от текстового редактора, макет в 1С — это не цельный лист, а конструктор, состоящий из именованных областей. Программа в коде не говорит: «Напечатай весь макет». Она говорит: «Возьми область Шапка, выведи её, затем возьми область Строка столько раз, сколько позиций в документе, и в конце выведи область Подвал».
Если вы просто написали текст внизу макета, но не включили эти строки в границы существующей именованной области, 1С просто «не знает», что эти строки нужно печатать. Проанализируем, как это исправить:
Заголовок, ШапкаТаблицы, Подвал.Подвал или Подписи), затем через меню «Таблица — Имена — Назначить имя» переназначим старое имя на новый, расширенный диапазон строк.Даже если область расширена, иногда требуется добавить вывод новой, отдельно созданной области. Рассмотрим ситуацию, когда мы создали новую область с именем ДополнительнаяИнформация. Чтобы она появилась на печати, нам необходимо внести правки в модуль документа или модуль менеджера (в зависимости от версии конфигурации).
Найдем процедуру Печать или функцию, которая формирует табличный документ (часто это ПечатьРеализации). Посмотрим на пример кода, который управляет выводом:
// Получаем макет документа
Макет = ПолучитьМакет("Накладная");
// Получаем область подвала
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
// Заполняем параметры, если они есть
ОбластьПодвал.Параметры.ФИОМенеджера = Менеджер;
// Выводим в итоговый табличный документ
ТабДок.Вывести(ОбластьПодвал);
// ВАЖНО: Если мы создали свою область, ее нужно вывести аналогично:
ОбластьМойТекст = Макет.ПолучитьОбласть("ДополнительнаяИнформация");
ТабДок.Вывести(ОбластьМойТекст);
Без вызова метода Вывести() или Присоединить() для конкретной области, любые художества в макете останутся лишь «картинкой» внутри конфигуратора.
В «Управлении торговлей 10.3» крайне популярно использование внешних печатных форм (файлы с расширением .epf). Если для документа зарегистрирована внешняя форма, то как бы вы ни правили макет внутри самой конфигурации, система будет использовать макет из внешнего файла.
Проверим это по шагам:
.epf на диск для редактирования, либо внести изменения прямо в этот файл и загрузить его обратно.В некоторых случаях (особенно если конфигурация дорабатывалась) может работать механизм управления макетами печатных форм. Хотя это более характерно для управляемых форм (УТ 11, ERP), в поздних релизах платформы 8.2/8.3 для обычных форм тоже могли быть внедрены подобные механизмы БСП (Библиотеки стандартных подсистем).
Если в системе есть регистр сведений «Управление макетами печатных форм», пользователь мог отредактировать макет прямо в режиме «1С:Предприятие». В этом случае индивидуальный макет пользователя будет иметь приоритет над тем, что вы написали в конфигураторе. Проанализируем список макетов в режиме администратора и, если нашли «переопределенный» макет, либо удалим его, либо внесем правки в него.
Если вы абсолютно уверены, что области настроены верно, код их выводит, а внешних форм нет, но текста всё равно нет — рассмотрим более экзотические причины:
/ClearCache или просто удалите и заново добавьте базу в список запуска.Видимость для добавленных строк в конфигураторе. Также убедитесь, что параметр ЦветТекста не совпадает с цветом фона (белый на белом).РазмещениеТекста — «Переносить», если текста много. Если стоит «Забивать», а ячейка маленькая, текст просто не отобразится.Подводя итог, в большинстве случаев проблема решается либо расширением границ именованной области в макете, либо добавлением команды ТабДок.Вывести() в соответствующую процедуру печати. Всегда начинайте проверку с того, попадает ли ваш текст в «синие скобки» имен областей в левой части редактора макета.