Как доработать внешнюю печатную форму счета-фактуры в 1С:УПП под новые требования

Программист 1С v8.3 (Обычные формы) Налоговый учет IT и автоматизация бизнеса
← На главную

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

Анализ необходимых изменений в макете и коде

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

  1. Разделение областей макета по дате: бланк должен формироваться в старой редакции для документов, проведенных до даты вступления изменений в силу, и в новой редакции (с добавленной строкой идентификатора госконтракта и обновленной ссылкой на постановление) — для документов от даты изменений и позже.
  2. Программное заполнение и вывод параметров: в модуле объекта обработки необходимо предусмотреть проверку даты документа и передачу параметров в табличный документ.

Корректировка табличного макета

Рассмотрим порядок модификации макета печатной формы счета-фактуры:

  1. Откроем макет печатной формы во внешней обработке.
  2. В верхней части бланка обновим нормативную ссылку на постановление Правительства РФ в шапке (с учетом редакции изменений).
  3. Добавим отдельную именованную область строк или скорректируем область Шапка, предусмотрев строку: «Идентификатор государственного контракта, договора (соглашения):» (строка 8 счета-фактуры).
  4. Назначим ячейке с выводом значения параметр, например ИдентификаторГосКонтракта.
  5. Проверим и при необходимости скорректируем нумерацию последующих строк и областей подвала макета, чтобы не нарушить позиционирование табличной части и подписей.

Программная реализация проверки даты и вывода данных

Разберем, как реализовать логику вывода в модуле внешней обработки. В типовых конфигурациях свежих релизов для проверки даты используется функция общего модуля УчетНДС.ВедетсяУчетНДСПоФЗ56(). Если конфигурация еще не обновлена до нужного релиза, данная функция будет отсутствовать, поэтому проверку даты документа можно выполнить явным сравнением.

Посмотрим на пример формирования и вывода области идентификатора госконтракта:


// Проверяем дату документа
Если СсылкаНаОбъект.Дата >= '20170701' Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("ИдентификаторГосКонтракта");
    
    // При наличии значения заполняем параметр, иначе оставляем пустым или ставим прочерк
    Если ЗначениеЗаполнено(СтруктураРеквизитов.ИдентификаторГосКонтракта) Тогда
        ОбластьМакета.Параметры.ИдентификаторГосКонтракта = СтруктураРеквизитов.ИдентификаторГосКонтракта;
    Иначе
        ОбластьМакета.Параметры.ИдентификаторГосКонтракта = "";
    КонецЕсли;
    
    ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;

Если в обработке также требуется вывод сведений по комиссионной торговле, проанализируем пример процедуры заполнения реквизитов комиссионера:


Процедура ВывестиРеквизитыКомиссионера(Продавец, Поставщик, Дата, Макет, ТабДокумент)
    
    Если ЗначениеЗаполнено(Продавец) 
        И ЗначениеЗаполнено(Поставщик) 
        И Продавец <> Поставщик Тогда
        
        ОбластьМакета = Макет.ПолучитьОбласть("РеквизитыКомиссионера");
        
        СведенияОКомиссионере = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Поставщик, Дата);
        
        НаименованиеКомиссионера = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОКомиссионере, "ПолноеНаименование,");
        ЮридическийАдресКомиссионера = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОКомиссионере, "ЮридическийАдрес,");
        ИННКомиссионера = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОКомиссионере, "ИНН,", Ложь);
        КППКомиссионера = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОКомиссионере, "КПП,", Ложь);
        
        ОбластьМакета.Параметры.ПредставлениеКомиссионера = "Составлен комиссионером (агентом): " + НаименованиеКомиссионера 
            + ", " + ЮридическийАдресКомиссионера 
            + ", ИНН/КПП: " + ИННКомиссионера 
            + ?(ЗначениеЗаполнено(КППКомиссионера), "/" + КППКомиссионера, "");
        
        ТабДокумент.Вывести(ОбластьМакета);
        
    КонецЕсли;        
    
КонецПроцедуры

Особенности заполнения идентификатора госконтракта (ИГК)

Выясним правила заполнения реквизита «Идентификатор государственного контракта»:

  1. Организации без гособоронзаказа и спецконтрактов: если организация не работает по государственным контрактам в рамках 275-ФЗ или казначейского сопровождения, строка 8 счета-фактуры оставляется пустой либо в ней выводится прочерк. Ручной ввод реквизита в каждом документе не требуется.
  2. Организации, работающие по ГОЗ: в типовой конфигурации «1С:УПП» учет по госконтрактам активируется специализированными настройками параметров учета. В этом случае код ИГК формируется автоматически по регламентированной маске разрядов:
    
    Объект.Код = Прав(Строка(Объект.ГодЗаключения), 2) + 
                 Прав(Строка(Объект.ГодОкончанияСрокаДействия), 2) + 
                 Объект.КодГосударственногоЗаказчика + 
                 КодСпособаОпределенияПоставщика + 
                 Объект.ПорядковыйНомер + 
                 Объект.ВидЦены + 
                 Объект.ДополнительныеРазряды;
    
  3. Хранение ИГК без доработки структуры метаданных: если конфигурация находится на типовой поддержке и добавление реквизита в документ нежелательно, значение ИГК можно привязать к справочнику ДоговорыКонтрагентов через механизм дополнительных реквизитов (план видов характеристик СвойстваОбъектов) и считывать его значение запросом внутри внешней печатной формы.

Ограничения использования внешней печатной формы

Важно помнить о технических ограничениях применения внешней печатной формы как временного решения:

  1. Смежные формы документов: внешняя печатная форма для документа СчетФактураВыданный не обновляет автоматически макеты корректировочных счетов-фактур, а также печатные формы УПД и УКД. Их потребуется дорабатывать отдельно.
  2. Печать из документов-оснований: если печать счета-фактуры выполняется непосредственно из документов реализации (например, РеализацияТоваровУслуг), внешняя обработка, прикрепленная только к счету-фактуре, не будет вызываться из формы документа-основания без дополнительной регистрации.
  3. Электронный документооборот (ЭДО): внешняя обработка формирует исключительно визуальный табличный документ. Для передачи счета-фактуры по каналам ЭДО с корректной структурой XML-файла требуется обязательное обновление типовых модулей конфигурации.
← На главную