Как сделать сопоставление объектов в 1С
Содержание
Сопоставление в 1С — это связывание одного и того же объекта (контрагента, номенклатуры, физлица) в двух местах: в вашей базе и во внешних данных. Нужно оно при загрузке из таблицы и при обмене между базами. Если сопоставление не сделать, программа создаст дубль вместо того, чтобы обновить уже существующую карточку.
Два типовых входа: при синхронизации баз — Администрирование → Синхронизация данных, там на первом сеансе появится шаг с ручным разбором; при загрузке из файла — колонки таблицы связываются с реквизитами справочника, и отдельно задаётся поле, по которому ищется совпадение. Ниже разберём оба сценария, а также правила поиска в обмене и сопоставление кодом.
Главная мысль, которую стоит усвоить сразу: 1С сравнивает объекты не «по карточке целиком», а по одному-двум ключевым реквизитам. Для контрагентов это обычно ИНН и КПП, для номенклатуры — наименование, код или артикул. От того, насколько чисты эти реквизиты, зависит весь результат.
Зачем сопоставлять объекты и что идёт не так без этого
Представьте: вы переносите остатки из старой базы в новую или подтягиваете прайс поставщика. В файле «ООО Ромашка», а у вас в базе — «Ромашка, ООО». Для человека это один контрагент, для программы — две разные строки. Без сопоставления появится второй контрагент, долги разъедутся по двум карточкам, а сверка перестанет сходиться.
Сопоставление решает три задачи:
- 🔗 Избежать дублей — обновить существующий объект вместо создания нового.
- 🔄 Связать базы при обмене — чтобы документ из одной базы лёг на правильного контрагента в другой.
- 📥 Корректно загрузить таблицу — строки Excel или CSV привязать к нужным позициям справочника.
Разные механизмы используют разные реквизиты для поиска. Поэтому первый вопрос всегда один: по какому полю программа будет искать совпадение. Ответите на него — дальше дело техники.
Какой способ выбрать под задачу:
| Способ | Когда применять | Чем сопоставляет |
|---|---|---|
| Загрузка из таблицы | Разовый импорт прайса, остатков, справочника из Excel/CSV | Поле поиска, которое вы задаёте вручную |
| Синхронизация баз | Постоянный обмен между двумя базами 1С | Правила поиска, встроенные в механизм обмена |
| Программно (во внешней обработке) | Нетиповые источники, сложная логика связывания | Запрос по реквизиту + коллекция Соответствие |
Первые два способа покрывают почти все задачи бухгалтера и администратора. К коду прибегают, когда данные приходят в нестандартном виде и типовые формы не справляются.
Готовим справочники перед сопоставлением
Чистые данные экономят часы ручного разбора. Потратьте время здесь — и автоматика сделает 80–90% работы сама.
Что проверить до старта:
- Заполните ключевые реквизиты. У контрагентов — ИНН и КПП, у номенклатуры — артикул или код. Пустой ИНН = объект не сопоставится автоматически никогда.
- Уберите дубли в своей базе. Два «Ромашки» в вашем справочнике сломают любой алгоритм. Используйте стандартную обработку поиска и удаления дубликатов (раздел
Администрирование, группа сервисных обработок; если не видите — вызовите черезГлавное меню → Все функции). - Приведите формат во внешнем файле. Лишние пробелы, разный регистр, символ
№вместо номера — всё это мешает точному совпадению строк. - Решите, что считать ключом. Для прайса поставщика это чаще артикул, а не наименование: наименования у всех пишутся по-своему, артикул стабильнее.
Перед любым массовым сопоставлением сделайте резервную копию базы. Откатить ошибочную загрузку из тысячи строк вручную почти невозможно.
Загрузка из таблицы: связываем строки файла со справочником
Самый частый сценарий — подтянуть данные из Excel или CSV. Здесь сопоставление состоит из двух связок: колонки → реквизиты и строки → существующие объекты.
Порядок действий:
- Откройте форму загрузки. В типовых конфигурациях у ряда справочников (Номенклатура, Контрагенты) есть кнопка загрузки из файла прямо в списке. Если её нет — применяют универсальную обработку «Загрузка данных из табличного документа».
- Укажите файл-источник и строку с заголовками, чтобы программа отбросила шапку.
- Сопоставьте колонки с реквизитами. Каждому столбцу таблицы назначьте реквизит справочника: «Наименование», «Артикул», «Ставка НДС» и так далее.
- Задайте поле поиска — тот реквизит, по которому строка ищет уже существующий объект. Это и есть ключ сопоставления.
- Запустите и просмотрите результат: что программа нашла, а что предлагает создать заново.
Логика связки колонок наглядно выглядит так:
Перед реальной загрузкой прогоните файл в тестовом режиме или на копии базы. Проверьте, сколько строк распозналось как «найдено» и сколько — как «будет создано». Большое число «создать» — сигнал, что ключ поиска выбран неверно.
Если часть строк не нашла пару, не спешите создавать новые объекты. Сначала разберитесь, почему не сработал поиск: чаще всего виноват формат ключа (пробелы, регистр, лишние нули в коде).
Правила поиска при обмене и синхронизации баз
Когда вы настраиваете обмен между двумя базами, сопоставление встроено в сам механизм. На первом сеансе синхронизации программа пытается связать объекты автоматически по заложенным правилам поиска.
Типовые правила поиска в обмене:
- Контрагенты — по ИНН и КПП, при их отсутствии по наименованию.
- Номенклатура — по коду, артикулу или наименованию (зависит от настроек правил).
- Физические лица — по ФИО и дате рождения или по ИНН/СНИЛС.
- Организации — по ИНН и КПП.
Сам порядок настройки обмена:
- Зайдите в
Администрирование → Синхронизация данныхи включите синхронизацию, если она ещё выключена. - Создайте настройку обмена с нужной базой и укажите параметры подключения.
- Запустите первый сеанс. Программа предложит сопоставить данные — на этом шаге она покажет, какие объекты связала сама, а какие остались без пары.
- Разберите несопоставленное вручную (см. следующий раздел) и завершите загрузку.
Если между базами используются настроенные правила конвертации, логику поиска задают именно они: в правилах прописано, по каким полям искать соответствие объекту-получателю. Менять эти правила без понимания механизма не стоит — проще один раз чисто сопоставить объекты вручную на первом сеансе, дальше система свяжет их по внутренним ссылкам и повторно спрашивать не будет.
После первого успешного сеанса соответствия сохраняются в служебном регистре. Поэтому самый ответственный момент — именно первая синхронизация: ошибку здесь потом придётся вычищать по всей цепочке документов.
Ручной разбор несопоставленных объектов
Автоматика закрывает большинство, но не всё. Остаток разбирают руками — это нормальная часть процесса, а не признак, что что-то сломалось.
На шаге сопоставления в помощнике синхронизации вы видите две колонки: объект из одной базы и объект из другой. Задача — для каждой строки без пары либо подобрать существующий объект, либо разрешить создать новый.
Как действовать:
- Отсортируйте список так, чтобы несопоставленные строки были сверху (обычно есть отбор по статусу сопоставления).
- Для каждой строки откройте выбор и найдите соответствующий объект в своей базе через строку поиска по наименованию или коду.
- Если объекта действительно нет — отметьте строку как «создать новый». Не сопоставляйте «наугад с похожим»: ошибочная связка хуже дубля.
- Сохраните сопоставление и продолжите синхронизацию.
Отдельно стоит режим сопоставления номенклатуры: его часто разбирают пачками через отбор по первым буквам наименования. Так вы не листаете тысячу строк, а идёте по алфавиту.
Пара приёмов, которые ускоряют ручной разбор:
- 🔍 Пользуйтесь строкой поиска в окне выбора — набрав часть наименования или код, вы сразу сузите список до нескольких кандидатов.
- 📑 Группируйте однотипные строки: все позиции одного поставщика или одной категории удобнее закрывать подряд, держа в голове один шаблон написания.
- ✅ Сомневаетесь в паре — лучше пометьте «создать новый» и объедините позже вручную, чем свяжете с заведомо не тем объектом.
Если несопоставленных объектов неожиданно много (сотни), остановитесь и вернитесь к подготовке данных. Массовый «несопоставлен» почти всегда означает, что ключевой реквизит заполнен не у всех или заполнен по-разному в двух базах.
Программное сопоставление: поиск и коллекция «Соответствие»
Когда типовых механизмов мало — например, нужно связать произвольные данные во внешней обработке, — сопоставление пишут кодом. Базовый инструмент здесь — поиск существующего объекта по реквизиту и коллекция типа Соответствие для хранения связок «ключ → объект».
Логика типового кода проста:
- Прочитать внешние данные (строку таблицы, элемент выгрузки).
- Найти в базе объект по ключевому реквизиту — запросом или методом поиска справочника.
- Нашли — работаем с найденной ссылкой; не нашли — создаём новый объект (если это разрешено логикой).
- Запомнить связку в
Соответствие, чтобы не искать повторно в цикле.
Упрощённый пример поиска контрагента по ИНН:
КэшКонтрагентов = Новый Соответствие;
Функция НайтиКонтрагента(ИНН)
Если КэшКонтрагентов.Получить(ИНН) <> Неопределено Тогда
Возврат КэшКонтрагентов.Получить(ИНН);
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1 Ссылка
|ИЗ Справочник.Контрагенты
|ГДЕ ИНН = &ИНН";
Запрос.УстановитьПараметр("ИНН", ИНН);
Выборка = Запрос.Выполнить().Выбрать();
Ссылка = ?(Выборка.Следующий(), Выборка.Ссылка, Неопределено);
КэшКонтрагентов.Вставить(ИНН, Ссылка);
Возврат Ссылка;
КонецФункции
Два практических правила. Первое: ищите по индексированному реквизиту. Если поле не проиндексировано, запрос в цикле по большому справочнику будет работать медленно. Второе: кэшируйте результат в Соответствие — один и тот же ИНН в файле встречается десятки раз, а искать его в базе достаточно один раз.
Когда ключ составной (например, контрагента ищут по ИНН и КПП сразу), в качестве ключа коллекции удобно брать строку-склейку этих реквизитов. Тогда один Получить по коллекции заменяет повторный запрос, а логика поиска остаётся однозначной. Для поиска строго по одному реквизиту вместо запроса подойдёт и типовой метод поиска справочника — результат тот же, но запрос даёт больше контроля над условиями и порядком.
При создании новых объектов в цикле не забывайте про уникальность: добавьте проверку, что объект не был создан на предыдущей итерации того же сеанса. Иначе внутри одной загрузки получите собственные дубли.
Частые ошибки сопоставления
Большинство проблем сводится к нескольким повторяющимся сценариям. Разберите симптом — и причина обычно становится очевидной.
Общее правило разбора: сначала смотрите не на результат, а на поле поиска. 9 из 10 ошибок сопоставления — это неверно выбранный или грязный ключ, а не сбой программы.