Ситуация, когда после очередного обмена данными (например, с конфигурацией 1С:Ювелирный магазин) справочник номенклатуры раздувается от сотен или тысяч дублей, является критической для учета. Стандартные инструменты поиска дублей могут «зависать» или выдавать ошибки из-за колоссального объема информации. В этой статье мы подробно разберем, как эффективно очистить базу, не нарушив ссылочную целостность и сохранив правильные остатки.
Прежде чем приступать к удалению, давайте разберем, почему стандартная обработка Поиск и удаление дублей может работать неэффективно. Основная причина — алгоритм поиска. Программа не просто ищет похожие строки, она анализирует каждое вхождение объекта во всех документах базы данных (регистры сведений, накопления, проводки). Когда количество записей исчисляется тысячами, нагрузка на сервер или файловую систему становится избыточной.
Рассмотрим ситуацию: при обмене данными реквизиты поиска были настроены некорректно, и система создала новые карточки товаров вместо того, чтобы найти старые. В итоге мы имеем две карточки: одну с историей движений и вторую — «чистую» или с новыми движениями. Наша задача — объединить их или удалить лишние.
Как справедливо отмечено в обсуждении на форуме, типовая обработка — это мощный инструмент, если уметь его ограничивать. Не пытайтесь заставить 1С обработать весь справочник Номенклатура за один раз. Разберем по шагам, как настроить отборы:
Номенклатура.Наименование — Начинается с — А.Наименованию или Артикулу).Совет: Если дублей слишком много даже на одну букву, используйте дополнительные фильтры, например, по конкретной группе номенклатуры или по наличию артикула.
Проанализируем ситуацию, когда мы точно знаем, что все дубли были созданы в определенный момент времени (момент злополучного обмена). В этом случае нам поможет обработка Групповое изменение реквизитов. Это гораздо быстрее, чем поиск соответствий по строкам.
Выясним причину появления объектов. Если объекты созданы под конкретным пользователем или в конкретную минуту, мы можем отобрать их программно или через консоль запросов. Рассмотрим алгоритм действий:
Номенклатура.Пометка удаления и установим значение Да.После этого нам останется только запустить стандартное Удаление помеченных объектов. Этот метод исключает тяжелую стадию сравнения строк и поиска похожих слов.
Посмотрим на ситуацию с точки зрения отрасли. В ювелирной торговле (обмен с 1С:Ювелирный магазин) товар часто учитывается по характеристикам: вес, вставки, размер. Простой поиск дублей по Наименованию («Кольцо золотое») приведет к катастрофе — система «схлопнет» изделия с разным весом в одну карточку.
При настройке поиска дублей обязательно учитывайте следующие правила:
Артикул + Наименование.1С:Бухгалтерия учет ведется в разрезе номенклатуры, а в Ювелирном магазине — в разрезе партий.Когда мы удаляем тысячи записей, файлы базы данных (особенно в файловом варианте .1CD) не уменьшаются в размере автоматически. Они становятся «дырявыми», что замедляет работу системы. Проанализируем, что нужно сделать после завершения очистки:
Для файловых баз обязательно выполните Тестирование и исправление через Конфигуратор:
Для клиент-серверных версий (на SQL) рекомендуется выполнить реиндексацию таблиц и обновление статистик. Это восстановит скорость работы после массовых транзакций по удалению ссылок.
Если объем дублей превышает 50% от справочника, самым рациональным решением будет восстановление базы из архивной копии до момента обмена. Это сэкономит десятки часов работы. После восстановления необходимо проанализировать правила обмена и выяснить, по каким полям происходит синхронизация (GUID, Код или Артикул), чтобы ситуация не повторилась при следующем запуске синхронизации.
Помните, что перед любыми массовыми манипуляциями с данными создание архивной копии (бэкапа) является обязательным и самым важным этапом работы!