Почему в 1С создаются счета-фактуры с одинаковыми номерами и как включить контроль уникальности?

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

Многие пользователи и бухгалтеры, работающие в конфигурации 1С:Управление торговлей 11.5 (а также в Комплексной автоматизации и ERP), рано или поздно сталкиваются с пугающей ситуацией: система позволяет создавать документы СчетФактураВыданный с абсолютно одинаковыми номерами и датами — для очистки базы есть готовая обработка поиска и удаления дублей в 1С. При этом, если попробовать провернуть подобное с документом РеализацияТоваровУслуг, программа выдаст ошибку не уникальности. Давайте подробно рассмотрим эту проблему, выясним причину такого поведения системы и разберем по шагам, как правильно настроить контроль уникальности в вашей базе.

Почему разработчики отключили контроль уникальности счетов-фактур?

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

  1. Исправительные счета-фактуры: У исправительных документов нет отдельной собственной нумерации в привычном виде. Они нумеруются как «номер исходного счета-фактуры, исправление номер 1, 2 и т.д.». Если бы жесткий контроль платформы был включен, система просто не дала бы записать исправительный счет-фактуру с номером исходного документа.
  2. Счета-фактуры на аванс и сложные префиксы: Часто в компаниях авансовые счета-фактуры нумеруются с отдельным префиксом (например, «А-123») — для этого подойдёт модуль настройки нумерации и префиксации документов в 1С. Базовый платформенный контроль проверяет лишь совпадение строкового номера. Он не умеет «из коробки» понимать, что «А-123» и просто «123» — это допустимо, а два раза «123» — нет.
  3. Обмен с 1С:Бухгалтерией: При работе в распределенных базах (РИБ) или синхронизации УТ с БП нумерация может присваиваться по разным правилам. Отключенный контроль в УТ позволяет загружать документы из другой базы без фатальных ошибок обмена.

Чем опасны неуникальные номера счетов-фактур (юридический аспект)?

Бухгалтеров часто пугает ситуация с дублями, так как Налоговый кодекс РФ (ст. 169) и Постановление № 1137 требуют хронологической и сквозной нумерации. Проанализируем, грозят ли за это штрафы.

С точки зрения законодательства, прямых штрафов за сбой нумерации счетов-фактур нет. Грубым нарушением (ст. 120 НК РФ) считается полное отсутствие счетов-фактур, а не их задвоение. Более того, одинаковые номера не могут служить поводом для отказа вашему покупателю в вычете по НДС, если налоговая инспекция может четко идентифицировать продавца, покупателя, товары и сумму налога. Максимум неприятностей — это дополнительные вопросы от инспекторов при встречных проверках.

Боль бухгалтеров: несовпадение номеров УПД и реализаций

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

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

Как безопасно включить контроль уникальности: пошаговое решение

Важно! Не пытайтесь просто поставить галочку «Контроль уникальности» в Конфигураторе для документа СчетФактураВыданный. Это сломает логику обменов и не даст создавать исправительные документы.

Рассмотрим правильный современный подход — использование механизма Расширений. Нам необходимо добавить обработчик события ПередЗаписью, который будет проверять базу на наличие дублей только для обычных (не исправительных) счетов-фактур.

Алгоритм работы расширения будет следующим:

  1. Перехватываем событие ПередЗаписью документа СчетФактураВыданный.
  2. Проверяем вид счета-фактуры. Если он является исправительным — пропускаем проверку.
  3. Если документ новый или его номер был изменен, делаем запрос к базе данных. Ищем другой документ с таким же номером в пределах текущего года (или периода уникальности).
  4. Если дубль найден, устанавливаем параметр Отказ = Истина и выводим пользователю понятное сообщение об ошибке.

Концептуальный пример кода для модуля объекта в расширении (событие ПередЗаписью):


Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    
    // Проверяем, что это не исправительный счет-фактура
    Если ЭтаФорма.Исправление Тогда
        Возврат;
    КонецЕсли;

    // Ищем дубли запросом
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |   СчетФактураВыданный.Ссылка КАК Ссылка
        |ИЗ
        |   Документ.СчетФактураВыданный КАК СчетФактураВыданный
        |ГДЕ
        |   СчетФактураВыданный.Номер = &Номер
        |   И СчетФактураВыданный.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата, ГОД) И КОНЕЦПЕРИОДА(&Дата, ГОД)
        |   И СчетФактураВыданный.Ссылка <> &ТекущаяСсылка
        |   И СчетФактураВыданный.Исправление = ЛОЖЬ";
        
    Запрос.УстановитьПараметр("Номер", ЭтотОбъект.Номер);
    Запрос.УстановитьПараметр("Дата", ЭтотОбъект.Дата);
    Запрос.УстановитьПараметр("ТекущаяСсылка", ЭтотОбъект.Ссылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Если Не РезультатЗапроса.Пустой() Тогда
        ВызватьИсключение "Документ с таким номером уже существует! Контроль уникальности не пройден.";
        Отказ = Истина;
    КонецЕсли;

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

Также, используя подобное расширение, вы можете настроить автоматическую синхронизацию номеров. В обработчике события ПриУстановкеНовогоНомера или ПередЗаписью можно прописать логику, которая будет брать номер из документа-основания (документа РеализацияТоваровУслуг) и принудительно присваивать его счету-фактуре. Это полностью избавит бухгалтерию от проблемы несовпадения номеров в УПД и реализациях.

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

← На главную