Поставщик прислал счёт по почте. Через час отправил тот же документ ещё раз после сканирования с телефона. Файлы разные, checksum разный, изображение немного повернуто. Для учёта это один и тот же счёт.

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

Я бы делал duplicate detection отдельным обязательным статусом до проведения, а не пытался исправлять двойную запись после факта.

File duplicate и business duplicate нужно разделять

Одинаковый файл определяется просто: checksum совпал, значит байты те же. Это полезно для повторной загрузки из одного канала и защиты от случайного двойного import.

Business duplicate сложнее. PDF могли пересохранить, подписать, отсканировать заново или прислать другим способом. Внешний вид и файл изменились, а хозяйственная операция осталась прежней.

Поэтому я бы хранил оба результата: `same_file` и `same_document_candidate`. Они имеют разные основания и разные правила дальнейшей обработки.

Проверяемые источники: 1С — 1С:Распознавание первичных документов · Google Cloud — Document AI overview

Первый бизнес-ключ — контрагент, номер и дата

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

Если такое сочетание уже существует в 1С, новый файл не должен автоматически создавать ещё один документ. Система сравнивает дополнительные признаки и показывает существующую запись.

Но один этот ключ не всегда абсолютен. У разных типов документов бывают особенности нумерации и исправлений. Поэтому правило нужно настраивать по конкретному классу первички.

Проверяемые источники: 1С — 1С:Распознавание первичных документов · 1С — Распознавание и автоматический ввод первичных документов

MEDIA FRAME · PLACEHOLDERИллюстрация будет добавлена позже
Как в 1С найти дубли документов до повторного проведения счёта · временная заглушка

Сумма и позиции помогают отличить дубль от похожего документа

Два документа одного поставщика с близкими датами могут иметь одинаковую сумму. Это ещё не доказательство дубля. Я бы сравнивал валюту, НДС, количество позиций, артикулы или нормализованные наименования и итоговые значения.

Для точного совпадения реквизитов и позиций можно автоматически выставить высокий статус duplicate. Для частичного совпадения — `probable_duplicate` и показать сотруднику различия.

Важно не заставлять человека визуально сравнивать два PDF целиком. Лучше вывести таблицу отличий: номер, дата, сумма, три изменённые позиции, статус существующей записи.

Проверяемые источники: Google Cloud — Document AI overview · AWS — Tables — Amazon Textract

Исправленный документ не должен исчезнуть как обычный дубль

Поставщик мог прислать исправленную версию с тем же номером и изменённой суммой. Если система просто увидела совпадение номера и заблокировала файл, мы потеряли важное изменение.

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

Статус `duplicate` должен означать, что новый файл не несёт отдельной хозяйственной операции. Всё остальное требует более точной классификации.

Проверяемые источники: 1С — Распознавание и автоматический ввод первичных документов

Параллельные загрузки требуют атомарной проверки

Есть техническая ситуация, которую легко пропустить. Один счёт одновременно пришёл из почты и ЭДО. Оба worker проверили базу до того, как другой успел создать запись. Каждый решил, что дубля нет.

Значит, duplicate check должен быть не только аналитическим, но и транзакционным. На устойчивом бизнес-ключе нужен уникальный constraint, блокировка или другой механизм, который не позволяет двум конкурентным операциям создать один объект дважды.

AI здесь не нужен. Это обычная гарантия учётной системы, и она надёжнее любой дополнительной проверки модели.

Перед проведением нужен воспроизводимый статус проверки дубля

Я бы использовал минимум три состояния: `no_match`, `exact_duplicate`, `probable_duplicate`. У каждого сохраняется основание: какой ключ сравнивался, какие существующие документы найдены и в чём различие.

`Exact_duplicate` завершает обработку без нового проведения. `Probable_duplicate` идёт человеку с таблицей сравнения. `No_match` позволяет продолжить остальные проверки документа.

Так duplicate detection становится частью audit trail. Через месяц можно ответить, почему конкретный счёт был пропущен или заблокирован, а не восстанавливать решение по догадке.

Проверяемые источники: 1С — 1С:Распознавание первичных документов · 1С — Распознавание и автоматический ввод первичных документов

Очередь дублей должна показывать сравнение, а не два изображения рядом

Сотруднику важна причина совпадения. Я бы выводил существующий документ, новый файл и таблицу реквизитов: поставщик, номер, дата, сумма, позиции, статус проведения и найденные отличия.

Для exact duplicate подтверждение человека обычно не нужно после достаточной проверки. Для probable duplicate интерфейс должен позволить выбрать: дубль, исправленная версия, отдельный документ. Решение сохраняется.

Если оператор каждый раз визуально ищет разницу между двумя PDF, алгоритм только нашёл кандидатов. Проверку он ещё не автоматизировал.

Проверяемые источники: 1С — 1С:Распознавание первичных документов · 1С — Распознавание и автоматический ввод первичных документов

Контрольные вопросы перед внедрением

Можно ли искать дубли документов только по hash файла?

Нет. Hash обнаруживает только идентичные файлы. Один бизнес-документ может быть пересохранён или отсканирован заново. Для учёта нужны реквизиты и сравнение содержимого.

Какие поля использовать для поиска дубля счёта?

Обычно полезны контрагент, номер, дата, сумма, валюта и позиции. Точный набор и приоритет зависят от типа документа и правил вашей учётной системы.

Что делать с похожим, но не идентичным документом?

Не проводить автоматически и не отбрасывать как дубль. Выставить probable duplicate, показать различия и сохранить решение сотрудника как основание следующего статуса.

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

Для соседних проверок пригодятся для «как в 1С найти дубли документов»: Как передавать данные из PDF в 1С с подтверждением сотрудника · Как AI сравнивает договор, счёт и акт между собой · Как настроить роли и права доступа в автоматизации документов.