При работе с сервисом 1С-ЭДО пользователи часто сталкиваются с неприятной ситуацией: в справочнике Контрагенты начинают бесконтрольно появляться дубликаты собственных организаций. Особенно остро эта проблема проявляется у Индивидуальных Предпринимателей (ИП). Даже если в настройках администрирования снята галочка «Создавать контрагентов автоматически», система может продолжать создавать десятки и сотни записей. В этой статье мы подробно разберем, почему так происходит, и как навести порядок в справочниках и базе данных.
Прежде всего, проанализируем ситуацию. Программа 1С при получении любого электронного документа (будь то УПД или просто служебное сообщение от оператора) должна идентифицировать отправителя и получателя. Для этого она использует определенный алгоритм поиска. Если программа не находит точного соответствия в своих внутренних регистрах сопоставления, она инициирует поиск по реквизитам ИНН и КПП.
Выясним причину, почему поиск по реквизитам часто дает сбой для ИП. Особенности идентификации ИП в 1С-ЭДО часто связаны с проблемой пустых КПП, которые и провоцируют дублирование. В программном коде 1С и в структурах XML-файлов ЭДО (подобных тем, что формирует групповая выгрузка файлов для ЭДО по приказам ФНС) поле КПП может быть пустым, содержать ноль, дефис или строку из пробелов. Если в карточке вашей организации КПП пустой, а во входящем сообщении передается технический символ (например, «0»), система расценивает это как несовпадение и создает новую карточку в справочнике Контрагенты, считая её уникальной.
Рассмотрим ситуацию, когда дубли появляются каждые 15 минут. Это явный признак работы регламентного задания ПолучениеЭлектронныхДокументов. Посмотрим на этот процесс изнутри: программа автоматически обращается к серверу оператора ЭДО для проверки новых уведомлений. Чтобы избежать подобных проблем, необходима грамотная оптимизация регламентных заданий ЭДО, которая поможет избежать «засорения» базы данных лишними записями. Каждый раз, когда выполняется этот цикл, модуль ЭДО пытается сопоставить участников обмена.
Выясним, как записаны ваши данные. Для алгоритмов сопоставления 1С-ЭДО критически важно, чтобы написание наименования совпадало до символа. Разберем типичную ошибку: в справочнике Организации вы указаны как «Иванов Иван Иванович», а в справочнике Контрагенты (куда попал дубль) — «ИП Иванов И.И.». Для системы это разные объекты.
Рекомендация: приведите все наименования к единому стандарту. Рекомендуется использовать полное ФИО без сокращений, так как именно в таком виде данные обычно передаются в сертификатах электронных подписей и через операторов ЭДО.
Проанализируем техническую часть сопоставления. В программах на базе 1С (например, 1С:Розница, 1С:УНФ или 1С:Бухгалтерия) существует специальный регистр, который связывает уникальный Идентификатор ЭДО (ID) с объектом в базе данных. Если эта связь нарушена, система будет постоянно искать объект заново. В этом случае поможет настройка регистра «Сопоставление объектов ЭДО» и устранение ошибок автосоздания, что позволит восстановить корректную связь между ID и карточкой организации. Также полезно проверить настройки форматов исходящих документов, чтобы убедиться в правильности передаваемых данных.
Рассмотрим последовательность действий для исправления:
Контрагент. Если там выбрана ваша же организация, но из справочника Контрагенты, это может приводить к зацикливанию.Если вы программист или имеете доступ к консоли запросов, проанализируем структуру данных в документах ЭДО. Иногда проблема кроется в том, что при получении данных система не может определить тип объекта: ЮрЛицо или ФизЛицо. Для ИП в 1С используется тип ФизическоеЛицо с установленным признаком предпринимателя.
Посмотрим на пример того, как система может искать контрагента в программном коде БЭД (Библиотеки электронных документов). Если стандартный поиск не срабатывает, можно прибегнуть к расширению, которое принудительно будет искать по одному только ИНН для ИП:
&После("НайтиКонтрагентаПоРеквизитам")
Функция Икс_НайтиКонтрагентаПоРеквизитам(Реквизиты, ТипКонтрагента)
Если ТипКонтрагента = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ФизЛицо") Тогда
// Принудительно ищем только по ИНН, игнорируя пустые КПП
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Контрагенты ГДЕ ИНН = &ИНН И Не ПометкаУдаления";
Запрос.УстановитьПараметр("ИНН", Реквизиты.ИНН);
// ... логика возврата ссылки
КонецЕсли;
КонецФункции
Часто проблема дублей возникает в связке нескольких баз, например, 1С:Розница и 1С:Бухгалтерия. Проанализируем ситуацию: синхронизация может переносить контрагента из одной базы в другую, а модуль ЭДО в это же время создает своего. В итоге получается «чехарда» из объектов. Чтобы этого избежать, важно провести сравнение настроек двух баз для поиска расхождений и устранить конфликты при синхронизации данных и ЭДО.
ИдентификаторЭДО.КПП стоит «0», попробуйте в качестве эксперимента проставить этот же «0» в карточку вашего ИП (хотя это и не по стандарту). В некоторых релизах это останавливает создание дублей.Подводя итог, можно сказать, что дублирование в ЭДО — это почти всегда вопрос некорректной идентификации. Тщательно проверьте соответствие ИНН, отсутствие лишних пробелов в ФИО и правильность привязки учетной записи ЭДО к карточке организации. Эти шаги позволят вам забыть о сотнях лишних записей в справочнике и сделают работу в программе комфортной.