Как сделать сопоставление объектов в 1С

· 9 мин

Содержание

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

Два типовых входа: при синхронизации баз — Администрирование → Синхронизация данных, там на первом сеансе появится шаг с ручным разбором; при загрузке из файла — колонки таблицы связываются с реквизитами справочника, и отдельно задаётся поле, по которому ищется совпадение. Ниже разберём оба сценария, а также правила поиска в обмене и сопоставление кодом.

Главная мысль, которую стоит усвоить сразу: 1С сравнивает объекты не «по карточке целиком», а по одному-двум ключевым реквизитам. Для контрагентов это обычно ИНН и КПП, для номенклатуры — наименование, код или артикул. От того, насколько чисты эти реквизиты, зависит весь результат.

Зачем сопоставлять объекты и что идёт не так без этого

Представьте: вы переносите остатки из старой базы в новую или подтягиваете прайс поставщика. В файле «ООО Ромашка», а у вас в базе — «Ромашка, ООО». Для человека это один контрагент, для программы — две разные строки. Без сопоставления появится второй контрагент, долги разъедутся по двум карточкам, а сверка перестанет сходиться.

Сопоставление решает три задачи:

  • 🔗 Избежать дублей — обновить существующий объект вместо создания нового.
  • 🔄 Связать базы при обмене — чтобы документ из одной базы лёг на правильного контрагента в другой.
  • 📥 Корректно загрузить таблицу — строки Excel или CSV привязать к нужным позициям справочника.

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

Какой способ выбрать под задачу:

СпособКогда применятьЧем сопоставляет
Загрузка из таблицыРазовый импорт прайса, остатков, справочника из Excel/CSVПоле поиска, которое вы задаёте вручную
Синхронизация базПостоянный обмен между двумя базами 1СПравила поиска, встроенные в механизм обмена
Программно (во внешней обработке)Нетиповые источники, сложная логика связыванияЗапрос по реквизиту + коллекция Соответствие

Первые два способа покрывают почти все задачи бухгалтера и администратора. К коду прибегают, когда данные приходят в нестандартном виде и типовые формы не справляются.

Готовим справочники перед сопоставлением

Чистые данные экономят часы ручного разбора. Потратьте время здесь — и автоматика сделает 80–90% работы сама.

Что проверить до старта:

  1. Заполните ключевые реквизиты. У контрагентов — ИНН и КПП, у номенклатуры — артикул или код. Пустой ИНН = объект не сопоставится автоматически никогда.
  2. Уберите дубли в своей базе. Два «Ромашки» в вашем справочнике сломают любой алгоритм. Используйте стандартную обработку поиска и удаления дубликатов (раздел Администрирование, группа сервисных обработок; если не видите — вызовите через Главное меню → Все функции).
  3. Приведите формат во внешнем файле. Лишние пробелы, разный регистр, символ № вместо номера — всё это мешает точному совпадению строк.
  4. Решите, что считать ключом. Для прайса поставщика это чаще артикул, а не наименование: наименования у всех пишутся по-своему, артикул стабильнее.

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

Готовность к сопоставлению
Выполнено: 0 / 5

Загрузка из таблицы: связываем строки файла со справочником

Самый частый сценарий — подтянуть данные из Excel или CSV. Здесь сопоставление состоит из двух связок: колонки → реквизиты и строки → существующие объекты.

Порядок действий:

  1. Откройте форму загрузки. В типовых конфигурациях у ряда справочников (Номенклатура, Контрагенты) есть кнопка загрузки из файла прямо в списке. Если её нет — применяют универсальную обработку «Загрузка данных из табличного документа».
  2. Укажите файл-источник и строку с заголовками, чтобы программа отбросила шапку.
  3. Сопоставьте колонки с реквизитами. Каждому столбцу таблицы назначьте реквизит справочника: «Наименование», «Артикул», «Ставка НДС» и так далее.
  4. Задайте поле поиска — тот реквизит, по которому строка ищет уже существующий объект. Это и есть ключ сопоставления.
  5. Запустите и просмотрите результат: что программа нашла, а что предлагает создать заново.

Логика связки колонок наглядно выглядит так:

Сопоставление полей
Артикул (столбец A)→Артикул номенклатуры (поле поиска)
Наименование (столбец B)→Наименование
Цена (столбец C)→Цена из документа установки цен
Ставка НДС (столбец D)→Справочник ставок НДС
Единица (столбец E)→Единица измерения

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

Если часть строк не нашла пару, не спешите создавать новые объекты. Сначала разберитесь, почему не сработал поиск: чаще всего виноват формат ключа (пробелы, регистр, лишние нули в коде).

Правила поиска при обмене и синхронизации баз

Когда вы настраиваете обмен между двумя базами, сопоставление встроено в сам механизм. На первом сеансе синхронизации программа пытается связать объекты автоматически по заложенным правилам поиска.

Типовые правила поиска в обмене:

  • Контрагенты — по ИНН и КПП, при их отсутствии по наименованию.
  • Номенклатура — по коду, артикулу или наименованию (зависит от настроек правил).
  • Физические лица — по ФИО и дате рождения или по ИНН/СНИЛС.
  • Организации — по ИНН и КПП.

Сам порядок настройки обмена:

  1. Зайдите в Администрирование → Синхронизация данных и включите синхронизацию, если она ещё выключена.
  2. Создайте настройку обмена с нужной базой и укажите параметры подключения.
  3. Запустите первый сеанс. Программа предложит сопоставить данные — на этом шаге она покажет, какие объекты связала сама, а какие остались без пары.
  4. Разберите несопоставленное вручную (см. следующий раздел) и завершите загрузку.

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

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

Ручной разбор несопоставленных объектов

Автоматика закрывает большинство, но не всё. Остаток разбирают руками — это нормальная часть процесса, а не признак, что что-то сломалось.

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

Как действовать:

  1. Отсортируйте список так, чтобы несопоставленные строки были сверху (обычно есть отбор по статусу сопоставления).
  2. Для каждой строки откройте выбор и найдите соответствующий объект в своей базе через строку поиска по наименованию или коду.
  3. Если объекта действительно нет — отметьте строку как «создать новый». Не сопоставляйте «наугад с похожим»: ошибочная связка хуже дубля.
  4. Сохраните сопоставление и продолжите синхронизацию.

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

Пара приёмов, которые ускоряют ручной разбор:

  • 🔍 Пользуйтесь строкой поиска в окне выбора — набрав часть наименования или код, вы сразу сузите список до нескольких кандидатов.
  • 📑 Группируйте однотипные строки: все позиции одного поставщика или одной категории удобнее закрывать подряд, держа в голове один шаблон написания.
  • ✅ Сомневаетесь в паре — лучше пометьте «создать новый» и объедините позже вручную, чем свяжете с заведомо не тем объектом.

Если несопоставленных объектов неожиданно много (сотни), остановитесь и вернитесь к подготовке данных. Массовый «несопоставлен» почти всегда означает, что ключевой реквизит заполнен не у всех или заполнен по-разному в двух базах.

Программное сопоставление: поиск и коллекция «Соответствие»

Когда типовых механизмов мало — например, нужно связать произвольные данные во внешней обработке, — сопоставление пишут кодом. Базовый инструмент здесь — поиск существующего объекта по реквизиту и коллекция типа Соответствие для хранения связок «ключ → объект».

Логика типового кода проста:

  1. Прочитать внешние данные (строку таблицы, элемент выгрузки).
  2. Найти в базе объект по ключевому реквизиту — запросом или методом поиска справочника.
  3. Нашли — работаем с найденной ссылкой; не нашли — создаём новый объект (если это разрешено логикой).
  4. Запомнить связку в Соответствие, чтобы не искать повторно в цикле.

Упрощённый пример поиска контрагента по ИНН:

КэшКонтрагентов = Новый Соответствие;

Функция НайтиКонтрагента(ИНН)
    Если КэшКонтрагентов.Получить(ИНН) <> Неопределено Тогда
        Возврат КэшКонтрагентов.Получить(ИНН);
    КонецЕсли;

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ ПЕРВЫЕ 1 Ссылка
        |ИЗ Справочник.Контрагенты
        |ГДЕ ИНН = &ИНН";
    Запрос.УстановитьПараметр("ИНН", ИНН);
    Выборка = Запрос.Выполнить().Выбрать();

    Ссылка = ?(Выборка.Следующий(), Выборка.Ссылка, Неопределено);
    КэшКонтрагентов.Вставить(ИНН, Ссылка);
    Возврат Ссылка;
КонецФункции

Два практических правила. Первое: ищите по индексированному реквизиту. Если поле не проиндексировано, запрос в цикле по большому справочнику будет работать медленно. Второе: кэшируйте результат в Соответствие — один и тот же ИНН в файле встречается десятки раз, а искать его в базе достаточно один раз.

Когда ключ составной (например, контрагента ищут по ИНН и КПП сразу), в качестве ключа коллекции удобно брать строку-склейку этих реквизитов. Тогда один Получить по коллекции заменяет повторный запрос, а логика поиска остаётся однозначной. Для поиска строго по одному реквизиту вместо запроса подойдёт и типовой метод поиска справочника — результат тот же, но запрос даёт больше контроля над условиями и порядком.

При создании новых объектов в цикле не забывайте про уникальность: добавьте проверку, что объект не был создан на предыдущей итерации того же сеанса. Иначе внутри одной загрузки получите собственные дубли.

Частые ошибки сопоставления

Большинство проблем сводится к нескольким повторяющимся сценариям. Разберите симптом — и причина обычно становится очевидной.

Диагностика: выберите симптом

Общее правило разбора: сначала смотрите не на результат, а на поле поиска. 9 из 10 ошибок сопоставления — это неверно выбранный или грязный ключ, а не сбой программы.

Частые вопросы

По какому реквизиту лучше сопоставлять контрагентов?
По ИНН и КПП — это самые стабильные поля. Наименование меняется и пишется по-разному, а ИНН у организации один. Для ИП достаточно ИНН.
Можно ли отменить неправильное сопоставление при обмене?
Готового отката «одной кнопкой» нет. Поэтому первый сеанс делают на копии базы или с резервной копией под рукой. Если связка уже ушла в документы, исправлять придётся вручную по цепочке.
Чем сопоставление отличается от объединения дубликатов?
Сопоставление связывает объект с внешними данными до загрузки, чтобы дубль не возник. Объединение — это уже лечение: когда два одинаковых объекта в базе есть, и их сливают в один.
Что делать, если нужных реквизитов для поиска нет ни в базе, ни в файле?
Заполнить их до загрузки. Без общего ключа автоматическое сопоставление невозможно в принципе — останется только ручной разбор каждой строки.
Сохраняются ли результаты сопоставления между сеансами обмена?
Да. После первой успешной синхронизации связки хранятся в служебном регистре, и повторно система объекты не переспрашивает — работает по внутренним ссылкам.