При необходимости внести изменения в печатную форму счета-фактуры (например, утвержденную Постановлением № 1137 или более поздними редакциями) в конфигурации 1С:Бухгалтерия 7.7 многие специалисты сталкиваются с неочевидным поведением системы. Открыв в конфигураторе документ СчетФактура, мы видим несколько встроенных макетов, однако ни один из них не соответствует актуальной форме документа, выводящейся на печать в режиме предприятия. В каталоге информационной базы папка внешних форм также может отсутствовать.
Выясним причину такого устройства конфигурации, подробно разберем, где именно платформа хранит действующий шаблон и какими способами можно его отредактировать, сохранив удобство последующих обновлений программы.
Проанализируем архитектуру типовой конфигурации «Бухгалтерский учет» ред. 4.5 для платформы 1С 7.7. С течением времени законодательство регулярно обновляло бланки счетов-фактур. Чтобы не перегружать структуру самого метаданного документа и унифицировать формирование печатных форм из разных мест (например, из документов реализации, авансовых счетов-фактур и журнала выданных счетов-фактур), разработчики перенесли логику печати в глобальный модуль — процедуру глПечатьСчетФактуры.
Выбор конкретного макета выполняется программно в зависимости от даты документа (ДатаДок). Старые варианты бланков остались в самом документе для обеспечения исторической совместимости, а все современные редакции бланков (включая Постановление № 1137, универсальный передаточный документ УПД и универсальный корректировочный документ УКД) перенесены на общеконфигурационный уровень.
Рассмотрим по шагам, как открыть актуальный макет встроенными средствами конфигуратора:
СчетФактура1137 (или другие смежные макеты, например, УПД или СчетФактураКорректировочный1137) и дважды кликнем по ней для открытия.После этого откроется табличный документ, который используется процедурой глобального модуля по умолчанию. Здесь можно отредактировать оформление колонок, шрифты или статический текст.
Правка конфигурации напрямую в «Общих таблицах» имеет существенный минус: при установке очередного типового обновления измененные таблицы могут быть перезаписаны, либо возникнут сложности при сравнении и объединении конфигураций. Разберем механизм, который разработчики 1С заложили для решения этой задачи без изменения метаданных.
В глобальном модуле перед обращением к встроенным общим таблицам выполняется проверка наличия внешнего файла макета на диске с помощью конструкции следующего вида:
ИмяФайла = КаталогИБ() + "ExtForms\PrnForms\1csf1137.mxl";
Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда
Таблица.ИсходнаяТаблица(ИмяФайла);
Иначе
Таблица.ИсходнаяТаблица("СчетФактура1137");
КонецЕсли;
Если внешний файл существует, система загружает его в приоритетном порядке. По умолчанию подкаталог ExtForms\PrnForms может физически отсутствовать в папке базы данных, поэтому его создание и наполнение ложится на плечи программиста. Настроим переопределение формы по шагам:
ExtForms. Если его нет — создадим его, а внутри него создадим папку PrnForms.СчетФактура1137 через Общие таблицы (как описано в Способе 1).Ctrl + A или кликом на серый квадрат в левом верхнем углу на пересечении заголовков строк и колонок) и скопируем содержимое через буфер обмена.КаталогИБ\ExtForms\PrnForms\1csf1137.mxl.Теперь программа будет автоматически подхватывать отредактированный файл 1csf1137.mxl. Аналогичным образом именуются и другие типовые бланки: 1sfk1137.mxl (корректировочный счет-фактура), 1CUPD.MXL (УПД) и 1CUKD.MXL (УКД).
Проанализируем важные технические нюансы, о которых необходимо помнить при модификации макета:
Шапка, Строка, Подвал). Если удалить, переименовать или объединить существующие именованные секции, метод Таблица.ВывестиСекцию(...) вызовет фатальную ошибку времени выполнения.глПечатьСчетФактуры. Добавление произвольного выражения или нового реквизита без поддержки в коде глобального модуля не приведет к расчету данных — ячейка останется пустой либо вызовет ошибку неопознанной переменной.Если поставленная задача требует не просто косметической правки внешнего вида бланка, а добавления новых алгоритмов расчета, выборки дополнительных реквизитов или пересчета колонок, одного изменения файла .mxl будет недостаточно.
В этом случае создадим полноценную внешнюю печатную форму в виде файла обработки .ert и файла описания .efd. Форма также размещается в папке ExtForms\PrnForms и подключается в режиме «1С:Предприятие» через пункт меню Сервис — Регистрация внешних печатных форм. Данный подход позволяет полностью изолировать программный код печати от типовой конфигурации и избежать любых конфликтов при ее регламентном обновлении.