Где найти и как отредактировать макет печатной формы счета-фактуры в 1С 7.7 Бухгалтерия

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

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

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

Почему макета нет внутри самого документа

Проанализируем архитектуру типовой конфигурации «Бухгалтерский учет» ред. 4.5 для платформы 1С 7.7. С течением времени законодательство регулярно обновляло бланки счетов-фактур. Чтобы не перегружать структуру самого метаданного документа и унифицировать формирование печатных форм из разных мест (например, из документов реализации, авансовых счетов-фактур и журнала выданных счетов-фактур), разработчики перенесли логику печати в глобальный модуль — процедуру глПечатьСчетФактуры.

Выбор конкретного макета выполняется программно в зависимости от даты документа (ДатаДок). Старые варианты бланков остались в самом документе для обеспечения исторической совместимости, а все современные редакции бланков (включая Постановление № 1137, универсальный передаточный документ УПД и универсальный корректировочный документ УКД) перенесены на общеконфигурационный уровень.

Способ 1. Поиск макета в общих таблицах конфигурации

Рассмотрим по шагам, как открыть актуальный макет встроенными средствами конфигуратора:

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

После этого откроется табличный документ, который используется процедурой глобального модуля по умолчанию. Здесь можно отредактировать оформление колонок, шрифты или статический текст.

Способ 2. Использование внешнего файла в каталоге PrnForms

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

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


ИмяФайла = КаталогИБ() + "ExtForms\PrnForms\1csf1137.mxl";
Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда
    Таблица.ИсходнаяТаблица(ИмяФайла);
Иначе
    Таблица.ИсходнаяТаблица("СчетФактура1137");
КонецЕсли;

Если внешний файл существует, система загружает его в приоритетном порядке. По умолчанию подкаталог ExtForms\PrnForms может физически отсутствовать в папке базы данных, поэтому его создание и наполнение ложится на плечи программиста. Настроим переопределение формы по шагам:

  1. Перейдем в каталог рабочей информационной базы через проводник.
  2. Проверим наличие каталога ExtForms. Если его нет — создадим его, а внутри него создадим папку PrnForms.
  3. Вернемся в Конфигуратор и откроем макет СчетФактура1137 через Общие таблицы (как описано в Способе 1).
  4. Выделим таблицу целиком (нажатием комбинации клавиш Ctrl + A или кликом на серый квадрат в левом верхнем углу на пересечении заголовков строк и колонок) и скопируем содержимое через буфер обмена.
  5. В главном меню выберем Файл — Новый — Таблица, после чего вставим скопированный макет.
  6. Сохраним новый документ через Файл — Сохранить как... по пути КаталогИБ\ExtForms\PrnForms\1csf1137.mxl.

Теперь программа будет автоматически подхватывать отредактированный файл 1csf1137.mxl. Аналогичным образом именуются и другие типовые бланки: 1sfk1137.mxl (корректировочный счет-фактура), 1CUPD.MXL (УПД) и 1CUKD.MXL (УКД).

Ограничения при редактировании внешнего макета .mxl

Проанализируем важные технические нюансы, о которых необходимо помнить при модификации макета:

  1. Имена секций: Алгоритм вывода строго привязан к именам секций таблицы, заложенным в глобальном модуле (например, Шапка, Строка, Подвал). Если удалить, переименовать или объединить существующие именованные секции, метод Таблица.ВывестиСекцию(...) вызовет фатальную ошибку времени выполнения.
  2. Ограничение переменных: В ячейках макета можно использовать только те переменные и выражения, которые уже вычисляются процедурой глПечатьСчетФактуры. Добавление произвольного выражения или нового реквизита без поддержки в коде глобального модуля не приведет к расчету данных — ячейка останется пустой либо вызовет ошибку неопознанной переменной.

Альтернативное решение: внешняя печатная форма (.ert)

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

В этом случае создадим полноценную внешнюю печатную форму в виде файла обработки .ert и файла описания .efd. Форма также размещается в папке ExtForms\PrnForms и подключается в режиме «1С:Предприятие» через пункт меню Сервис — Регистрация внешних печатных форм. Данный подход позволяет полностью изолировать программный код печати от типовой конфигурации и избежать любых конфликтов при ее регламентном обновлении.

← На главную