Производство и продажа натурального камня, федеральная сеть
Миграция справочников 1С → Битрикс24 без дублей
Перенести справочники из 1С в Битрикс24 после чистки базы — так, чтобы миграцию можно было запускать повторно, а дубли не появлялись.
1С OData · REST API Битрикс24 · PHP · MySQL
Что мешало
- Наследство старого типового обмена: 20 174 мусорные компании и 72 контакта
- Дубли по названию: записи сопоставлялись текстом, а не идентификатором
- Выборка из 1С тянула все поля подряд и падала на объёме
- В Битрикс24 версии 25.x привычный класс работы с реквизитами больше не существует
Что сделали
- Спроектировали перенос: партнёры 1С → компании, контрагенты → реквизиты CRM, контактные лица → контакты, со всеми связями
- Ключ сопоставления — GUID из 1С, состояние записи — хэш всего набора полей: повторный запуск обновляет только реально изменившееся
- Подтянули филиал, сегмент и ответственного менеджера через таблицы соответствия GUID → значение
- Сопоставили менеджеров 1С с пользователями портала по служебному полю
- Перешли на актуальный класс работы с реквизитами вместо исчезнувшего
- Ускорили выборку из 1С: запрашиваем только нужные поля, пагинация с возобновлением после сбоя
- Сделали вкладку «Реквизиты» на карточке компании — через эпилог компонента и внедрение скрипта, после того как штатный механизм оказался неприменим
Что стало
639
компаний перенесено
9 202
контакта
15 024
реквизита
0
ошибок при переносе
Дополнительно вычищено 20 174 мусорные компании и 72 контакта. Дубли по названию сведены к четырём парам. Выборка из 1С стала быстрее в 8–9 раз. Миграцию можно запускать повторно — она не создаёт дублей.
Чему это научило
Главная ловушка была не в объёме данных, а в сопоставлении: пока записи ищутся по названию, любая опечатка порождает дубль. Перевод на идентификатор из 1С решает проблему один раз и навсегда.
Что спрашивают про эту задачу
- Подойдёт ли это для нашей базы
- Да, если в 1С есть GUID или их можно восстановить. Сопоставление по названию не годится в принципе: любая опечатка или переименование контрагента порождает дубль, а названия меняются регулярно. Если идентификаторов нет, стратегию сопоставления проектируем отдельно — до миграции, а не во время неё.
- Сколько стоит и сколько занимает перенос
- Зависит от объёма и чистоты данных. Оценку даём после пробной выгрузки небольшой части записей: по ней видно, сколько дублей и пустых полей придётся разбирать. В этом проекте попутно вычищено 20 174 мусорные компании — такая уборка обычно занимает больше времени, чем сам перенос.
- Можно ли переносить частями
- Да, и так безопаснее. Миграция идёт страницами с контрольными точками: перенесли партию, проверили, продолжили. Повторный запуск ничего не удвоит — ключ записи это идентификатор из 1С, а признак изменения — хэш полей.
Похожая задача
Если узнали свою ситуацию — расскажите, что происходит у вас. Вернёмся с оценкой в часах и планом работ.