Объединение справочников и дублей в 1С без потери данных

· 9 мин

Содержание

Чтобы объединить справочники в 1С 8.3 внутри одной базы, в большинстве случаев хватает штатной обработки «Поиск и удаление дублей» (Администрирование → Обслуживание): она находит повторяющиеся элементы, оставляет один главный и переносит на него все ссылки из документов. Если задача другая — свести данные из двух разных баз, — работают выгрузка и загрузка в формате XML либо загрузка из таблицы Excel.

За фразой «объединить справочники» обычно скрываются две разные задачи. Первая: в одном справочнике (контрагенты, номенклатура, физлица) завёлся один и тот же объект дважды, и его нужно слить в один элемент. Вторая: есть две базы, и нужно перенести элементы справочника из одной в другую, не плодя дубли. Способы для них разные, поэтому сначала стоит понять, что именно вы объединяете.

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

Какую задачу решаем и какой способ подходит

Выбор метода зависит от того, где находятся элементы и сколько их.

Какая у вас ситуация со справочниками?

Дальше разберём каждый способ по шагам. Пути и названия даны для «Бухгалтерии предприятия» 3.0, но обработка дублей и универсальный обмен одинаково работают в «ЗУП» 3.1, «Управлении торговлей» 11 и других конфигурациях на базе стандартных подсистем.

Подготовка: разметка дублей и копия базы

Объединение необратимо после удаления помеченных объектов, поэтому подготовка важнее самих шагов.

Перед объединением справочников
Выполнено: 0 / 5

Главным стоит оставлять элемент с наиболее полными и верными реквизитами: заполненным ИНН/КПП, банковскими счетами, корректным наименованием. Остальные станут дублями и после объединения будут помечены на удаление.

Если дубли различаются опечатками или лишними пробелами в наименовании, поиск по точному совпадению их не увидит. В таких случаях сравнивайте по коду или ИНН, а не по названию.

Объединение дублей обработкой «Поиск и удаление дублей»

Это основной и самый безопасный способ слить повторяющиеся элементы в одной базе. Обработка входит в конфигурацию, ничего отдельно устанавливать не нужно.

Откройте Администрирование → Обслуживание → Поиск и удаление дублей. Если команды нет в списке, её может потребоваться включить в настройках раздела «Обслуживание».

  1. В поле Искать в выберите нужный справочник — например, «Контрагенты» или «Номенклатура».
  2. При необходимости задайте отбор, чтобы сузить поиск (по группе, по виду). Для большого справочника это ускорит работу в разы.
  3. Настройте правила поиска дублей — по каким реквизитам считать элементы одинаковыми. По умолчанию сравнение идёт по наименованию; добавьте ИНН или код, если наименования могут расходиться.
  4. Нажмите Найти дубли. Программа сгруппирует кандидатов: в каждой группе один элемент предлагается как оригинал, остальные — как дубли.
  5. Проверьте группы вручную. Убедитесь, что в одну группу не попали разные объекты с похожими названиями — обработка объединяет по формальному признаку, а решение остаётся за вами.
  6. В каждой группе выберите главный элемент (переключателем «Оригинал»).
  7. Нажмите Удалить дубли .

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

Разберём на примере. В справочнике «Контрагенты» завелись два ООО «Ромашка»: один с 40 документами и заполненным ИНН, второй — с 3 документами и пустыми реквизитами. Главным оставляете первый, второй помечаете как дубль. После нажатия Удалить дубли три документа второго контрагента начинают ссылаться на первого — и теперь у «Ромашки» единая история из 43 документов. Второй элемент уходит в пометку на удаление.

Выбирать главным элемент с бо́льшим числом ссылок удобнее ещё и технически: программе придётся переписать меньше ссылок, и обработка пройдёт быстрее.

Пометка на удаление обратима, но полное удаление помеченных объектов (Администрирование → Обслуживание → Удаление помеченных объектов) — нет. Запускайте его, только убедившись, что объединение прошло правильно.

Этот же механизм замены ссылок лежит в основе почти всех способов объединения — отличается лишь способ выбора дублей.

Перенос справочника в другую базу через выгрузку и загрузку XML

Когда элементы лежат в разных базах с одинаковой (или близкой) конфигурацией, применяют универсальный обмен — обработку «Выгрузка и загрузка данных» в формате XML. Её берут из комплекта стандартных внешних обработок для вашей версии платформы.

Порядок такой:

  1. Откройте обработку через Файл → Открыть и укажите файл обработки выгрузки/загрузки XML.
  2. В базе-источнике на закладке выгрузки выберите справочник и, при необходимости, отбор по конкретным элементам.
  3. Выгрузите данные в XML-файл.
  4. В базе-приёмнике откройте ту же обработку на закладке загрузки и укажите полученный файл.
  5. Загрузите данные.

Ключевой момент: обмен сохраняет внутренние идентификаторы элементов (ссылки). Если элемент с таким идентификатором уже есть в приёмнике, он обновится, а не задвоится. Поэтому перенос из «родственной» базы объединяет справочники корректно.

«Родственными» базы считаются, когда у них одинаковый состав реквизитов справочника — обычно это копии одной базы или базы на одном релизе конфигурации. Если же элементы заводились в двух базах независимо, их идентификаторы различаются, и загрузка создаст новые элементы рядом со старыми. Тогда после переноса придётся дополнительно пройтись обработкой «Поиск и удаление дублей» уже в базе-приёмнике.

Проверяйте результат по числу элементов: запомните количество до загрузки и сверьте после. Резкий прирост — признак того, что вместо обновления создались дубли.

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

Этот способ не подходит для переноса между разными продуктами (например, из «Управления торговлей» в «Бухгалтерию») — там нужны типовые планы обмена или синхронизация данных, а не прямой перенос XML.

Загрузка элементов справочника из таблицы Excel

Если нужно пополнить или свести справочник по готовому списку из Excel, используют обработку «Загрузка данных из табличного документа». Это тоже стандартная внешняя обработка.

  1. Откройте обработку и выберите режим загрузки в справочник.
  2. Укажите, какой справочник заполняете.
  3. Вставьте или загрузите табличную часть из Excel.
  4. Сопоставьте колонки таблицы с реквизитами справочника: наименование, код, ИНН и так далее.
  5. Обязательно укажите поле, по которому ищется существующий элемент (чаще всего — код или наименование). Иначе каждая строка создаст новый элемент, и вместо объединения вы получите дубли.
  6. Запустите загрузку и проверьте протокол.

Если поле поиска задано, обработка обновит существующие элементы и добавит только новые. Это и есть «объединение» справочника с внешним списком.

Пример сопоставления для номенклатуры: колонка Excel «Артикул» → реквизит «Код» (поле поиска), колонка «Товар» → «Наименование», колонка «НДС» → ставка НДС. Элементы с совпавшим артикулом обновятся, с новым — добавятся. Если же полем поиска оставить наименование, а в списке встретятся два товара с одинаковым названием, один перезапишет другой — поэтому для товаров надёжнее искать по коду или артикулу.

Перед загрузкой почистите Excel: уберите лишние пробелы, приведите коды к одному формату (текст, а не число), иначе сопоставление не найдёт совпадений.

Ручное объединение и замена ссылок кодом

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

Полноценно «слить» элементы вручную нельзя: 1С не даст удалить элемент, на который есть ссылки, — при попытке удаления появится сообщение, что объект используется. Поэтому ручная схема сводится к следующему:

  • заводят отдельную группу (папку) справочника — например, «Не использовать» или «Архив»;
  • переносят в неё устаревшие дубли;
  • вручную исправляют документы, где эти дубли использовались, подставляя главный элемент;
  • после этого помечают дубли на удаление.

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

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

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

Отдельно учитывайте подчинённые справочники. При объединении контрагентов их договоры (подчинённый справочник) не переносятся на главный элемент сами — такие элементы объединяют отдельно или перепривязывают вручную.

Особенности объединения в распределённой базе (РИБ)

В распределённой информационной базе справочники синхронизируются между узлами через план обмена. Это накладывает ограничения.

Главное правило: объединяйте дубли только в главном (центральном) узле. После обмена изменения — замена ссылок и пометки на удаление — разойдутся по периферийным узлам автоматически. Если запустить обработку дублей одновременно в разных узлах, после синхронизации возможны конфликты и повторные дубли.

Ещё один нюанс — автонумерация. В РИБ у каждого узла свой префикс кодов, поэтому один и тот же контрагент, заведённый в двух узлах независимо, получит разные коды и после обмена окажется двумя элементами. Такие дубли и приходится потом сводить обработкой — уже в главном узле.

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

Частые ошибки при объединении справочников

  • 🗑️ Удалили дубль вручную до замены ссылок. Документы остаются с битой ссылкой. Правильно — сначала заменить ссылки (обработкой или кодом), и только потом удалять.
  • 🔤 Искали дубли по наименованию при наличии опечаток. Элементы с лишним пробелом или разным регистром не попадут в одну группу. Сравнивайте по ИНН или коду.
  • 📎 Забыли про подчинённые элементы. Договоры, счета, контактные данные дубля не переезжают на главный элемент автоматически.
  • 🐢 Запустили поиск по всему большому справочнику без отбора. На десятках тысяч элементов обработка работает долго; сузьте область отбором по группе или виду.
  • 🔀 Объединили дубли в периферийном узле РИБ. После обмена это оборачивается конфликтами. Все операции с дублями — в главном узле.

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

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