Передача заказов в 1С с неизменяемыми внешними идентификаторами (EID) — это механизм, позволяющий системе однозначно определять заказ из внешней среды (CRM, маркетплейса или сайта) и не создавать дубликаты при повторных попытках синхронизации. Ключевая задача: привязать внешний ID к объекту контрагента или документу так, чтобы он оставался неизменным даже после изменений в исходной системе.

1. Механизм передачи неизменяемых внешних идентификаторов (EID) в 1С:Управление торговлей и 1С:Бухгалтерия

В стандартной конфигурации 1С документы создаются по номеру, который генерируется системой. Если внешний источник присылает заказ с уникальным кодом (например, Order-12345), а затем отправляет его повторно для обновления статуса, 1С без настройки создаст новый документ. Это приводит к расхождению остатков и финансов.

Механизм работы EID базируется на перехвате процесса регистрации документа или использовании специальных реквизитов в справочниках. При поступлении данных извне система должна проверить: существует ли уже объект с таким внешним кодом? Если да — обновить его. Если нет — создать новый и привязать к нему этот код.

В 1С:УТ это реализуется через обработку «Регистрация документов по внешнему идентификатору» или доработку стандартной обработки «Поступление товаров и услуг». В 1С:Бухгалтерия аналогичный подход применяется к документам «Приходная накладная» и «Товарная накладная».

Важно понимать, что внешний идентификатор должен быть уникальным для всей системы (глобально), а не только внутри одной компании. Если два разных клиента используют одинаковый формат ID (например, просто номер заказа), система будет путать их. Поэтому формат EID часто включает префикс с кодом контрагента.

2. Настройка справочника «Контрагенты» для поддержки уникальных ID

Первый шаг — расширить справочник «Контрагенты». Добавьте реквизит, например, «Внешний код контрагента» или «Global ID». Это поле должно быть обязательным при создании нового контрагента.

При поступлении заказа из внешней системы сначала ищется контрагент по этому внешнему коду. Если найден — система использует его. Если нет — создается новый контрагент с этим кодом в качестве первичного идентификатора.

Рекомендация: используйте текстовое поле для хранения ID, но добавьте проверку на уникальность через механизм «Уникальный код» или пользовательскую обработку. В 1С:УТ можно использовать реквизит «Внешний код» из стандартной структуры справочников, если он доступен в вашей редакции.

Пример настройки: в карточке контрагента «ООО Ромашка» вы указываете внешний ID «ROM-001». При поступлении заказа с этим же ID система сразу находит этого клиента, даже если его название изменилось.

3. Использование реквизита «Внешний код» в документах продаж и закупок

После настройки справочника нужно передать внешний ID на уровень документов. В 1С:УТ это делается через реквизит «Внешний код» в табличной части или в общем поле документа.

При регистрации документа по внешнему заказу система должна копировать значение этого поля из входящих данных. Если документ уже существует, а внешний ID совпадает — обновляем его. Если ID отличается — создаем новый документ с новым ID.

В 1С:Бухгалтерия аналогичный подход применяется к документам «Приходная накладная» и «Товарная накладная». Здесь важно, чтобы внешний код был привязан к строке документа или к документу в целом, в зависимости от бизнес-процесса.

Ошибочная практика: хранить внешний ID только в заголовке документа. Если одна строка товара имеет свой уникальный заказ (например, на маркетплейсе), то ID должен быть в табличной части.

4. Синхронизация данных между 1С и внешними системами (CRM, ERP) через веб-сервисы

Для автоматической передачи EID используйте веб-сервисы. В 1С:УТ стандартный механизм «Веб-сервис» позволяет передавать данные в формате XML или JSON.

Пример структуры запроса: {"orderId": "ORD-999", "customerId": "CUST-001", "items": […]}. При ответе 1С возвращает статус и обновленные данные.

Если внешняя система не поддерживает веб-сервисы, используйте файловый обмен (XML/CSV) с проверкой внешнего кода при импорте. В этом случае файл должен содержать колонку «Внешний код».

Важно: при каждом обновлении статуса заказа в внешней системе отправляйте тот же ID. 1С должна понимать, что это не новый заказ, а обновление существующего.

5. Обработка конфликтов при дублировании контрагентов по внешнему ID

Конфликт возникает, если один и тот же внешний ID используется разными клиентами. Например, два магазина используют одинаковый формат номеров заказов.

Решение: добавьте префикс к внешнему ID (например, «SHOP1-ORD-001» и «SHOP2-ORD-001»). Либо используйте дополнительный реквизит в справочнике контрагентов для разделения по источнику данных.

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

Профилактика: настройте в внешней системе правило генерации уникальных ID с учетом кода клиента.

6. Валидация входящих заказов с проверкой формата идентификатора

Перед записью документа в 1С проверяйте формат внешнего ID. Он должен соответствовать маске (например, «^[A-Z]{3}-[0-9]+$» для алфавитно-цифровых кодов).

Используйте обработку проверки данных или пользовательскую функцию в обработчике события «Поступление». Если формат неверный — отклоните заказ и выведите сообщение.

Пример кода (псевдокод): если не соответствует маске, то вернуть ошибку 'Неверный формат внешнего ID'.

Также проверяйте длину строки. Некоторые системы ограничивают длину ID до 50 символов. Если превышение — обрезайте или отклоняйте.

7. Логирование ошибок передачи для отладки интеграции

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

Это поможет быстро найти проблему. Например, если заказ не записался из-за дубликата контрагента, лог покажет это.

Рекомендация: настройте автоматическую отправку логов в Telegram или email при критических ошибках.

8. Автоматическое создание документов на основе внешних заказов

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

Алгоритм работы: 1) Проверить наличие контрагента по внешнему ID. 2) Создать документ с привязкой к этому ID. 3) Заполнить строки заказа. 4) Сохранить и отправить ответ внешней системе.

Если заказ уже существует — обновите его статус и данные. Если нет — создайте новый.

Важно: после создания документа проверьте, что внешний ID записан в нужное поле. Иначе при повторной отправке будет создан дубликат.

Вопросы и ответы

Что делать, если внешний идентификатор изменился у клиента?

Если клиент изменил формат или значение внешнего ID, нужно обновить справочник контрагентов в 1С. Это можно сделать вручную или через обработку импорта. После обновления все новые заказы будут привязываться к новому ID.

Можно ли использовать внешний ID для документов без привязки к контрагенту?

Да, если документ не связан с конкретным клиентом (например, внутренний заказ). Но в этом случае внешний ID должен быть уникальным только внутри вашей системы. Для внешних заказов всегда привязывайте ID к контрагенту.

Как проверить, что внешний ID записан правильно?

Откройте документ в режиме «Детали» и проверьте поле «Внешний код». Если оно пустое или содержит мусор — настройте обработку регистрации документов. Также проверьте логи интеграции.

По теме