Где найти и как отредактировать макет печатной формы счета-фактуры в 1С

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

В современных конфигурациях «1С:Предприятие 8.3» (таких как «Бухгалтерия предприятия 3.0», «ERP Управление предприятием» или «Управление торговлей 11») процесс формирования печатных форм существенно отличается от старых редакций. Часто программисты сталкиваются с тем, что в самом документе РеализацияТоваровУслуг макет счета-фактуры попросту отсутствует. Давайте разберем, где спрятаны эти макеты, почему в них «мало параметров» и как найти нужный фрагмент кода с помощью отладки.

Расположение макета в дереве конфигурации

Первое, что нам необходимо усвоить: в современных решениях на базе БСП (Библиотеки стандартных подсистем) макеты первичных документов, регулируемых законодательством, вынесены в общий доступ. Проанализируем ветку конфигурации Общие -> Общие макеты. Именно там сосредоточены все версии счетов-фактур, отвечающие разным постановлениям правительства.

Рассмотрим наиболее актуальные имена макетов, которые вы можете встретить:

Важный нюанс: если вы ищете макет в документе РеализацияТоваровУслуг, вы его там не найдете. Даже если печать инициируется из реализации, система чаще всего обращается к объекту-основанию или программно вызывает функции из модуля менеджера документа СчетФактураВыданный.

Проблема «недостающих параметров» в макете

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

Это означает, что программа не просто берет готовый «рисунок» и заполняет в нем поля. Она собирает макет как конструктор:

  1. Берет «Шапку» из основного макета.
  2. Проверяет, нужно ли выводить колонки для прослеживаемых товаров (РНПТ). Если да — присоединяет дополнительные секции по горизонтали.
  3. Программно вычисляет ширину колонок и высоту строк в зависимости от настроек (например, печать в валюте или в рублях).

Поэтому не стоит пугаться, если в ПФ_MXL_СчетФактура вы не видите параметров для всех 13 колонок. Большинство из них формируется кодом в процессе компоновки табличного документа.

Поиск макета через механизм отладки

Если визуальный поиск в конфигураторе не приносит результатов, воспользуемся проверенным методом отладки. Это позволит нам точно определить, какой макет система выбирает в конкретный момент времени для конкретного документа. Разберем этот процесс по шагам:

  1. Запустим конфигурацию в режиме отладки.
  2. Откроем нужный документ (например, Реализация) и подготовим форму к печати.
  3. В конфигураторе установим точку останова в общем модуле УправлениеПечатью или в модуле менеджера документа СчетФактураВыданный, в процедуре Печать.
  4. Нажмем кнопку печати в пользовательском интерфейсе.
  5. Когда выполнение кода остановится, проанализируем значение переменной, отвечающей за имя макета. Обычно это переменная с именем ИмяМакета или поле структуры ПараметрыПечати.

Посмотрим на пример кода, который обычно отвечает за выбор макета в модуле менеджера:


// Пример логики выбора макета в зависимости от даты
Если ДатаДокумента < ДатаНачалаДействияПостановления Тогда
    ИмяМакета = "ПФ_MXL_СчетФактура981";
Иначе
    ИмяМакета = "ПФ_MXL_СчетФактура1137_1351";
КонецЕсли;

Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет." + ИмяМакета);

Проанализировав этот участок кода, вы точно поймете, какой именно файл из ветки «Общие макеты» редактирует система.

Где искать программную логику заполнения

Если ваша задача — не просто изменить шрифт или логотип, а изменить логику вывода данных (например, алгоритм расчета суммы НДС), вам нужно искать не макет, а Модуль менеджера.

Основные места сосредоточения логики:

Рассмотрим подробнее, как происходит заполнение данных. Система формирует запрос к базе данных, получает результат, а затем в цикле обходит строки, заполняя параметры областей макета. Если вам нужно добавить свое поле, вам придется:

  1. Добавить параметр в макет (в нужную область).
  2. Найти в коде модуля менеджера место, где вызывается метод Параметры.Заполнить() или где параметры присваиваются явно.
  3. Дописать заполнение вашего нового параметра.

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

Перед тем как вносить изменения в конфигураторе, обязательно проверим, не используется ли в базе Пользовательский макет. В режиме «1С:Предприятие» перейдем в раздел Администрирование -> Печатные формы, отчеты и обработки -> Макеты печатных форм.

Найдем в списке «Счет-фактура». Если рядом с названием стоит пиктограмма синего карандаша, значит, стандартный макет переопределен пользователем. В этом случае правки в конфигураторе не вступят в силу, пока вы не удалите или не обновите этот пользовательский макет.

Особенности версии КОРП и прослеживаемости

Вы упоминали, что скриншот был сделан из базы КОРП, а у вас обычная версия. Проанализируем ситуацию: в версии КОРП могут быть включены специфические настройки (например, работа с обособленными подразделениями или сложный учет НДС). Однако структура макетов в БСП унифицирована.

Если на вашем образце есть колонки для РНПТ (прослеживаемость), убедитесь, что в вашей базе в Настройках налогов и отчетов включена опция «Учет прослеживаемых товаров». Без этой галочки система программно будет скрывать секции макета, отвечающие за прослеживаемость, даже если они физически присутствуют в общем макете ПФ_MXL_СчетФактура1137_1351.

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

Если конфигурация находится на поддержке, крайне не рекомендуется менять «Общие макеты» напрямую. Правильным подходом будет использование Расширений конфигурации. Рассмотрим алгоритм действий:

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

Это позволит вам безболезненно обновлять программу, сохраняя при этом все ваши индивидуальные доработки печатной формы счета-фактуры.

← На главную