Как распечатать УПД из документа реализации без предварительного создания счета-фактуры в 1С:Бухгалтерия 3.0?

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

В практике работы с «1С:Бухгалтерия 3.0» часто возникает запрос от пользователей: «Почему я не могу просто нажать кнопку печати УПД в реализации, не создавая лишний документ счета-фактуры?». Эта задача кажется простой только на первый взгляд. На самом деле за кнопкой печати скрывается сложная методология учета НДС и формирования первичных документов. В этой статье мы подробно разберем, почему система ведет себя именно так, и как реализовать пожелание заказчика максимально корректно, не нарушая логику программы.

Понимаем суть УПД: разница между статусом «1» и «2»

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

  1. Статус «1»: Документ одновременно является и счетом-фактурой, и передаточным актом (накладной). В этом случае он служит основанием для вычета НДС.
  2. Статус «2»: Документ используется только как первичный передаточный документ (аналог ТОРГ-12 или Акта). В этом режиме данные о счете-фактуре в нем отсутствуют.

В типовой конфигурации «1С:Бухгалтерия 3.0» печать УПД со статусом «1» жестко завязана на объект СчетФактураВыданный. Это сделано потому, что номер и дата УПД в этом статусе должны соответствовать номеру и дате счета-фактуры в Книге продаж. Если объекта счета-фактуры нет в базе, программе просто негде взять обязательные реквизиты для заполнения «шапки» документа.

Почему нельзя просто «подменить» данные в печатной форме?

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

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

Решение 1: Использование статуса «2» (для неплательщиков НДС)

Если организация работает на УСН (без НДС) или конкретная операция не облагается налогом, мы можем использовать УПД со статусом «2». В этом случае 1С позволяет печатать документ без создания счета-фактуры.

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

Решение 2: Автоматическое создание счета-фактуры (рекомендуемый вариант)

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

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

Разберем пример кода, который можно разместить в модуле менеджера или через механизм подписок на события (ПередЗаписью или ПриЗаписи):


// Пример логики автоматического создания Счета-фактуры
Процедура АвтосозданиеСчетаФактуры(ДокументРеализация)
    
    // Проверяем, не создан ли уже счет-фактура
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	СчетФактураВыданный.Ссылка КАК Ссылка
        |ИЗ
        |	Документ.СчетФактураВыданный КАК СчетФактураВыданный
        |ГДЕ
        |	СчетФактураВыданный.ДокументОснование = &Основание
        |	И НЕ СчетФактураВыданный.ПометкаУдаления";
    
    Запрос.УстановитьПараметр("Основание", ДокументРеализация.Ссылка);
    Результат = Запрос.Выполнить();
    
    Если Результат.Пустой() Тогда
        // Создаем новый объект
        НовыйСФ = Документы.СчетФактураВыданный.СоздатьДокумент();
        НовыйСФ.Дата = ДокументРеализация.Дата;
        НовыйСФ.Организация = ДокументРеализация.Организация;
        НовыйСФ.Контрагент = ДокументРеализация.Контрагент;
        
        // Заполнение табличной части и основания
        НовоеОснование = НовыйСФ.ДокументыОснования.Добавить();
        НовоеОснование.ДокументОснование = ДокументРеализация.Ссылка;
        
        // Заполняем остальные реквизиты по типовой методике
        НовыйСФ.Заполнить(ДокументРеализация.Ссылка);
        
        // Устанавливаем номер равным номеру реализации, если это требуется бизнес-логикой
        // Внимание: проверьте префиксы и длину номера!
        НовыйСФ.Номер = ДокументРеализация.Номер;
        
        НовыйСФ.Записать(РежимЗаписиДокумента.Проведение);
    КонецЕсли;

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

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

Решение 3: Реализация внешней печатной формы (ВПФ)

Если заказчик категорически против создания новых объектов в базе (например, база сильно раздута или есть жесткие требования к чистоте журнала документов), можно пойти по пути создания ВПФ. В этом случае мы «обманываем» макет, подставляя в него данные реализации вместо данных СФ.

Разберем по шагам, что нужно изменить в коде печати:

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

Рассмотрим пример изменения логики заполнения:


// В типовом коде данные берутся так:
// ДанныеПечати.НомерСчетаФактуры = Шапка.Номер;

// В вашей ВПФ для реализации это будет выглядеть так:
ДанныеПечати.НомерСчетаФактуры = ОбщегоНазначенияБПВызовСервера.ПолучитьНомерНаПечать(СсылкаНаРеализацию);
ДанныеПечати.ДатаСчетаФактуры = СсылкаНаРеализацию.Дата;

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

Выясним причину: зачем это нужно заказчику?

Зачастую требование «печатать УПД без СФ» продиктовано тем, что менеджеры ленятся делать «лишние клики». В этом случае лучшим выходом будет:

Таким образом, мы сохраняем юридическую чистоту учета (наличие СФ в базе, записи в регистрах НДС, корректная Книга продаж) и при этом полностью удовлетворяем потребность пользователя в быстроте и удобстве работы.

Подведем итоги

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

← На главную