Проблема появления «двойников» в нумерации счетов-фактур — одна из самых критических для бухгалтерии, так как она напрямую влияет на правильность формирования книги продаж и корректность вычетов НДС у контрагентов. В программе 1С:Бухгалтерия предприятия КОРП 3.0 штатно предусмотрены механизмы контроля уникальности, однако в ряде случаев пользователи сталкиваются с ситуацией, когда система позволяет создавать документы с идентичными номерами. Разберем подробно, почему это происходит и как восстановить сквозную нумерацию.
Прежде всего, проанализируем, как работает контроль уникальности на уровне платформы. У каждого типа документа в конфигурации существует свойство Контроль уникальности, расположенное на вкладке «Нумерация». Для счета-фактуры этот флаг по умолчанию включен. Это означает, что при попытке записи документа с номером, который уже существует в текущем периоде (год), система должна выдать предупреждение и заблокировать запись.
Рассмотрим, почему этот механизм может давать сбой:
ОбменДанными.Загрузка = Истина. При его активации (например, во время синхронизации или работы внешних обработок) система отключает практически все проверки, включая контроль уникальности и проверку заполнения обязательных реквизитов.Проанализируем ситуацию, упомянутую в обсуждении. Если при создании счета-фактуры вручную система не дает сохранить документ с дублирующим номером, значит, программный контроль работает. В таком случае дубли, которые уже есть в базе, скорее всего, попали туда одним из следующих способов:
Использование внешних обработок. Часто для массового создания документов программисты пишут обработки. Если в коде создания документа не прописан явный вызов метода УстановитьНовыйНомер() или, как было сказано выше, включен режим загрузки, платформа позволит записать любой номер.
Посмотрим на пример кода, который может привести к созданию дубля:
НовыйСФ = Документы.СчетФактураВыданный.СоздатьДокумент();
НовыйСФ.Дата = ТекущаяДата();
НовыйСФ.ОбменДанными.Загрузка = Истина; // Вот здесь отключаются все проверки
НовыйСФ.Номер = "0000-000001"; // Устанавливаем номер, который уже есть в базе
НовыйСФ.Записать();
Влияние префиксов. В 1С уникальность проверяется по всей строке номера целиком. Номер состоит из префикса организации, префикса информационной базы и самого порядкового номера. Выясним причину визуального совпадения: если в базе есть организация с префиксом «МС» и организация без префикса, то номера «МС00-000001» и «0000-000001» для системы будут разными, а в печатной форме (где префиксы отсекаются) они оба превратятся в «1».
Если в базе уже накопились документы с неправильными или дублирующимися номерами, необходимо выполнить следующие шаги для восстановления порядка.
Для того чтобы система снова начала предлагать корректные номера, нужно «подсказать» ей правильную точку отсчета. Выберем последний созданный документ, который имеет правильный формат номера. Если формат нарушен, создадим новый документ и вручную присвоим ему номер в правильном формате, например, 0000-000006. После записи этого документа система проанализирует его и следующий номер (0000-000007) предложит уже автоматически.
Рассмотрим ситуацию, когда дублей много и исправлять их вручную невозможно. В этом случае воспользуемся типовой обработкой «Групповое изменение реквизитов» (Раздел Администрирование — Обслуживание — Корректировка данных).
Важно: Перед выполнением этих действий обязательно создайте резервную копию базы данных!
Программисту следует проверить свойства метаданных объекта Документ.СчетФактураВыданный. Убедимся, что установлены следующие параметры:
Если контроль включен, но не срабатывает, проверим наличие подписок на события, таких как ПередЗаписью или ПриУстановкеНовогоНомера. Возможно, в расширении или в основной конфигурации внесены изменения, которые программно обходят стандартные проверки.
Иногда возникают ситуации, которые кажутся мистическими: два номера выглядят абсолютно идентично в интерфейсе, но система не считает их дублями. Проанализируем ситуацию на предмет скрытых символов.
В строке номера могут присутствовать:
Для базы данных "000-1" и "000-1 " (с пробелом в конце) — это два разных значения. Чтобы выявить такие случаи, можно воспользоваться консолью запросов и проверить длину строки номера функцией СТРДЛИНА(Номер).
Также стоит учитывать механизм кэширования номеров на стороне сервера (актуально для платформы 8.3). Для повышения производительности сервер «забирает» себе диапазон номеров. При аварийном завершении работы сервера эти номера могут «вылететь», что приводит к пропускам. Хотя это редко вызывает дублирование, сбой в кэше может спровоцировать попытку выдачи уже использованного номера.
Необходимо помнить, что согласно Постановлению Правительства №1137, счета-фактуры должны иметь сквозную нумерацию в хронологическом порядке. Наличие двух разных документов с одинаковым номером от одного поставщика — это прямой путь к отказу в вычете у вашего покупателя. Налоговая служба при автоматизированной проверке (АСК НДС-2) выявит несоответствие сумм или контрагентов по одному и тому же номеру документа, что приведет к требованию пояснений.
Для предотвращения двоения номеров в «1С:Бухгалтерия КОРП 3.0» выполним следующие действия:
Соблюдение этих правил обеспечит чистоту учета и отсутствие проблем при сдаче налоговой отчетности.