Как подключить внешнюю печатную форму счета-фактуры в 1С:УНФ и почему при печати выходит старый бланк?

Пользователь 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Бухгалтерский учет Торговля и дистрибуция
← На главную

При изменении законодательных требований к бланкам первичных документов и счетов-фактур организации часто сталкиваются с ситуацией, когда оперативно обновить типовую конфигурацию нет возможности. В таких случаях выходом становится подключение внешней печатной формы. Разберем по шагам, как правильно загрузить внешнюю печатную форму в конфигурацию «1С:Управление небольшой фирмой» (УНФ) без использования конфигуратора, а также проанализируем, почему после успешного добавления обработки программа может продолжать выводить старый бланк документа.

Подключение внешней печатной формы в пользовательском режиме

Для добавления внешних отчетов и печатных форм в базу данных монопольный доступ и запуск среды «Конфигуратор» не требуются. Механизм подсистемы дополнительных отчетов и обработок Библиотеки стандартных подсистем (БСП) позволяет производить интеграцию непосредственно в режиме «1С:Предприятие» пользователем с правами администратора.

Рассмотрим порядок подключения новой формы по шагам:

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

После выполнения этих действий при открытии документов, для которых предназначена обработка (например, «Счет-фактура», «Расходная накладная»), в выпадающем меню кнопки Печать появятся новые команды для вывода обновленных бланков.

Почему при печати формируется старая форма документа?

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

1. Встроенная проверка даты документа

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

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


Если ШапкаДокумента.Дата < ДатаИзмененияЗаконодательства Тогда
    Макет = ПолучитьМакет("ПФ_MXL_СчетФактураСтарая");
Иначе
    Макет = ПолучитьМакет("ПФ_MXL_СчетФактура2017");
КонецЕсли;

Если протестировать печать на новом документе, дата которого строго больше или равна дате начала действия поправок (например, с 1 июля 2017 года для постановления Правительства РФ № 625), программа автоматически переключится на новый макет.

2. Кэширование модулей на клиенте и сервере

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

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

Особенности разработки внешних печатных форм по стандартам БСП

Для корректного подключения печатной формы конфигурация ожидает строго определенную программную структуру внутри внешней обработки. Разберем ключевые процедуры модуля объекта.

В модуле объекта внешней обработки обязательно должна присутствовать экспортная функция СведенияОВнешнейОбработке(), которая возвращает структуру с описанием параметров регистрации:


Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);

    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.СчетФактура");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);

    ТаблицаКоманд = Новый ТаблицаЗначений;
    ТаблицаКоманд.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
    ТаблицаКоманд.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
    ТаблицаКоманд.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));

    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Идентификатор = "СчетФактураНовая";
    НоваяКоманда.Представление = "Счет-фактура";
    НоваяКоманда.Использование = "ВызовСерверногоМетода";

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;

КонецФункции

Формирование печатного листа и вывод табличного документа выполняет экспортная процедура Печать(), принимающая массив объектов назначения и параметры вывода:


Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

    ПараметрыПечати = Новый Структура;
    
    // Проверяем наличие идентификатора нашей команды
    УправлениеПечатью.ЗадатьОписательПечатнойФормы(
        КоллекцияПечатныхФорм, 
        "СчетФактураНовая", 
        "Счет-фактура", 
        "ПечатьСчетаФактуры"
    );

КонецПроцедуры

Заполнение новых реквизитов при устаревшей конфигурации

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

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

Согласно пункту 2 статьи 169 НК РФ, ошибки и неточности в счетах-фактурах, которые не мешают налоговым органам однозначно идентифицировать продавца, покупателя, наименование товаров, их стоимость, а также ставку и сумму предъявленного налога, не являются основанием для отказа в вычете НДС. Тем не менее предоставление контрагентам документов на бланках актуального формата позволяет избежать формальных споров и разногласий при проверках.

← На главную