CDH - охотник за дублями, созданный одним запросом в Codex

19.10.26

Задачи пользователя - Поиск данных

Автономный поиск дублей и подтверждённая замена ссылок в 1С:Предприятии без БСП: разбор инструмента CDH (Codex Duplicate Hunter). Нечёткое сравнение по порогу от 50 до 100 баллов, монопольный захват базы, снимки движений документов и защита от искажения регистров. В прикреплённом архиве — готовый EPF, фикстуры и скрипт верификации.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
CDH: автономная обработка поиска и замены дублей DuplicateManager.epf, фикстуры и тесты
.zip 46,83Kb
0 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.
🧭 Качество данных • 1С:Предприятие • CDH • Поиск и замена дублей
🎯 О чём это (в трёх тезисах)
🗸Архитектура автономного инструмента поиска и слияния дублей в 1С без БСП.
🗸Стендовые замеры на платформе 8.3.27 и УТ 11.5: обработка DuplicateManager.epf с комплектом тестовых данных (фикстур).
🗸Детерминированная замена ссылок с контролем движений документов и аудитом в JSON/MXL.
🧪 Отчёт о тестировании на реальном стенде
Среда и дата15.10.2026, Windows 11 Pro, 1С:Предприятие 8.3.27.2130, Python 3.12, файловая база и копия демо-базы УТ 11.5.22.77
Стек ПОПлатформа 8.3.27.2130, автономная внешняя обработка DuplicateManager.epf (41 357 байт), тестовый драйвер build.py
Объект анализаСинтетическая база (Номенклатура, Владельцы, Заказ, регистры); файловая копия УТ 11.5.22.77 (192 элемента Номенклатуры, 177 Контрагентов)
Ключевые замеры4 подтверждённые замены в 2 объектах синтетической базы; замена 2 ссылок у 2 контрагентов в УТ 11.5; экспорт 38 ячеек отчёта MXL и идентичность JSON; откат транзакции при изменении движений подтверждён на стенде
Границы замераЛокальный стенд на Windows; ERP, БП, клиент-серверный кластер и физический обрыв сети не исследовались
🧪 Отчёт о тестировании файла-компаньона
Архивcdh-duplicate-hunter-companion.zip (48 КБ): DuplicateManager.epf, fixtures/*.json, fixtures/*.bsl, verify_companion.py, README.md
Среда и дата15.10.2026, Windows 11 Pro, Python 3.12, автономный прогон из распакованного архива
Что запускалосьpython verify_companion.py (контроль SHA-256 EPF, валидация JSON-фикстур, UTF-8 BOM и синтаксический баланс BSL)
Результат5 тестов из 5 пройдены успешно (5 из 5 тестов PASS): контрольная сумма 07c155b5... подтверждена, 0 ошибок
Где скачатьВ блоке прикреплённых файлов публикации (перейти к разделу)
🧠 Суть статьи

1С-разработчикам и администраторам: как устроен автономный инструмент CDH (Codex Duplicate Hunter) для поиска дублей и безопасной замены ссылок в базах 1С без БСП.

Ключевые идеи
  • CDH полностью автономен и не требует БСП: рабочая логика поиска и замен упакована в обработку DuplicateManager.epf.
  • Нечёткое сравнение защищено от транзитивных ошибок: цепочки A-B и B-C не объединяются автоматически; каждый дубль требует прямого соответствия выбранному эталону.
  • Снимки движений защищают проведённые документы: если обработчик записи изменяет регистры, транзакция группы немедленно откатывается.
  • Диагностический экспорт доступен без исполнения: отчёт в JSON и MXL формируется сразу после подготовки плана, даже если группы заблокированы.
Главная мысль

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

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

Ключевые технологии: 1С:Предприятие 8.3.27, Управление торговлей 11.5, автономная внешняя обработка EPF, нечёткий поиск строк, снимки движений документов, монопольный режим, экспорт JSON/MXL.

📂 История создания CDH (Codex Duplicate Hunter)

Инструмент CDH (Codex Duplicate Hunter) вырос из практического эксперимента: автономную внешнюю обработку и первичное описание спроектировал ИИ-агент Codex по техническим требованиям коллеги NickScherbakov, задавшего архитектурные границы решения.

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

Я исследовала полученные исходники, проверила обработку на копиях синтетической базы и УТ 11.5.22.77, подтвердив контрольные суммы замерами на стенде. Ниже — архитектура инструмента и барьеры защиты учёта при слиянии ссылок.

🔬 Алгоритм точного и нечёткого поиска

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

  • Точный режим: строго различает типы данных — число и строка с одинаковым текстом считаются разными значениями. По умолчанию сопоставление идёт с учётом регистра и пробелов; нормализация включается отдельным флажком.
  • Нечёткий режим: строковое сравнение выбранного поля (чаще всего наименования). Алгоритм переводит текст в нижний регистр и удаляет лишние пробелы. Диапазон порога подобия составляет от 50 до 100 процентов (базовый порог — 90 процентов); также доступны удаление пунктуации и сортировка слов.
Настройки поиска: точный режим, поле Наименование и отбор по артикулу

Чтобы исключить зависание интерфейса, выборка ограничена 2 000 элементов. Поиск отсекает группы, предопределённые элементы, помеченные на удаление позиции и пустые ключи.

Схема алгоритма нечёткого и точного поиска

Найденные кандидаты выводятся страницами по 100 пар. Сервер кэширует результаты блоками по 1 000 строк. Для каждой пары доступна карточка с формулой расчёта оценки и сопоставлением строк.

Кандидаты с оценкой 100 и объяснением точного совпадения

📋 Формирование подтверждённой группы

Фундаментальный принцип CDH — запрет неявной транзитивности. Если элемент A похож на B, а B — на C, обработка не связывает C с A. Автоматическое объединение цепочек недопустимо: накопление погрешности приводит к ошибочному слиянию разнородных позиций номенклатуры.

Оператор вручную назначает единственный Эталон. Каждый дубль в группе требует прямого подтверждённого совпадения с выбранным эталоном. В составе группы отображаются артикулы и UUID каждого элемента.

Один главный и два прямых дубля в полном составе группы

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

Полный план: два объекта и четыре места замены

🛡 Защита движений проведённых документов

Типовые решения слияния дублей ставят инженера перед рискованным выбором: полное перепроведение искажает себестоимость и закрытые периоды прошлых лет, а режим ОбменДанными.Загрузка = Истина выключает прикладной контроль целостности.

В CDH эту дилемму снимает механизм Movement Guard. Документы записываются штатным методом Записать(РежимЗаписиДокумента.Запись) без перепроведения, с активными проверками конфигурации (ОбменДанными.Загрузка = Ложь). Защита проводок работает по четырём шагам:

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

🔒 Монопольный захват и транзакция на группу

Для гарантированной консистентности замена ссылок требует монопольного захвата базы. CDH действует корректно: обработка не сбрасывает активные сеансы пользователей. Если база занята, платформа отклоняет захват, а запись блокируется до освобождения соединений.

Схема монопольного захвата и выполнения замен

Каждая группа выполняется в обособленной транзакции. Объект-владелец перезаписывается один раз для всех входящих замен. Старые элементы-дубли физически не стираются и не помечаются на удаление автоматически — администратор утилизирует их после сверки отчёта.

Успешный результат и сообщение о сохранённом JSON

📊 Блокировки и диагностический экспорт

Если на дубль ссылается запись регистра сведений (штрихкод, соответствие номенклатуры), константа или нераспознанное двоичное хранилище, группа получает статус «Блокирована». Выполнение замены отключается, исключая нарушение структуры данных.

Неподдерживаемая запись регистра блокирует выполнение; диагностический экспорт сохранён

Диагностический аудит доступен сразу, ещё до монопольного захвата базы. После построения плана обработка формирует JSON и макет MXL. Инженер видит объём замен и блокировок заранее.

Табличный документ отчёта аудита MXL

🧪 Что показала проверка на УТ 11.5

Работоспособность в типовом контуре я проверила на копии демо-базы конфигурации «Управление торговлей» редакции 11.5.22.77:

  • Поисковый прогон: проанализированы 192 позиции Номенклатуры и 177 Контрагентов. Механизм отработал штатно, без ошибок контекста и сбоев памяти.
  • Замена ссылок: выполнена точечная подстановка ссылок у двух контрагентов в реквизите СтранаРегистрации. Записаны два объекта и два значения; проверочный запрос подтвердил корректную привязку эталона.
  • Сверка отчётов: файлы JSON и MXL выгружены и сопоставлены внешним скриптом; все 38 ячеек макета (19 строк на 2 колонки) совпали с эталоном.
  • Статус аварийного отката: на синтетическом стенде откат при изменении проводок подтверждён во всех 22 тестах. На живой УТ искусственный сбой инъектора не возник, поэтому статус отката зафиксирован как «экспериментально не подтверждён на УТ». Тестовое расширение удалено.

📦 Файл к статье

К публикации прикреплён проверенный архив cdh-duplicate-hunter-companion.zip. Это готовый инженерный комплект для безопасного развёртывания и тестирования на вашем стенде:

  • DuplicateManager.epf: автономная обработка 1С (41 357 байт, SHA-256: 07c155b5e96a87aad130c19d7b53f1efdb69695bfe73d865a1e1f430682fe60d). Открывается через «Файл -> Открыть» в любой базе 1С 8.3 без БСП и внешних компонент.
  • fixtures/demo_data_synthetic.json: эталонный набор для точного и нечёткого сценариев поиска.
  • fixtures/demo_orders_fixture.json: контрольный план замен в документах и табличных частях.
  • fixtures/blocked_register_sample.json: готовый пример блокирующего вхождения в регистр сведений.
  • fixtures/СоздатьТестовыеДанныеДублей.bsl: исполняемый BSL-модуль для мгновенного создания трёх тестовых дублей на учебной копии.
  • verify_companion.py: скрипт автоматической проверки целостности комплекта (5 из 5 тестов PASS).
  • README.md: лаконичное руководство по запуску за 3 шага.

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

🧭 Ограничения первого выпуска

  • Замена ссылок в записях регистров сведений, регистрах накопления или константах в релизе 1.0.0 блокирует группу.
  • Ссылки внутри хранилищ значений вызывают блокировку.
  • Активное разделение данных и неполнота прав (RLS) запрещают выполнение.
  • Конфигурации ERP и «Бухгалтерия предприятия» в контур испытаний не входили.
  • Поведение при сетевом обрыве во время фиксации транзакции на физическом кластере не исследовалось.

📚 Источники и предшественники

  • Типовая подсистема БСП «Поиск и удаление дублей» (документация ИТС): требует интеграции в конфигурацию и перезаписывает объекты через общий механизм слияния.
  • Публикация-ориентир на Инфостарте со 122 скачиваниями: показала практическую потребность в альтернативном автономном решении.
  • Инженерный проект CDH: все модули внешней обработки, сценарии проверок, тестовые фикстуры и скрипты верификации включены в состав файла-компаньона к статье.

🏁 Итог проведённых испытаний

CDH подтвердил состоятельность автономного подхода: внешняя обработка способна выполнять детерминированный поиск дублей и замену ссылок в 1С без внедрения БСП. Механизм Movement Guard и монопольный режим исключают искажение закрытых периодов, а предварительный экспорт JSON и MXL позволяет согласовать регламентные работы заранее.

💬 Вопросы для обсуждения

Как вы очищаете рабочие базы 1С от дублей? Доверяете ли штатному механизму БСП или разработали собственные инструменты? Случалось ли вам сталкиваться с искажением проводок закрытых периодов при замене ссылок? Поделитесь вашим опытом в комментариях.

 
Нинель Адольевна Щербакова
Нинель Адольевна Щербакова (Ninel_S)
Архитектор • SRE & DevOps инженер • HighLoad 1С
Автор 70 публикаций на Infostart. Разработчик NOPik, SRE-Suite-for-1C и мультиагентных ассистентов для экосистемы 1С:Предприятие.

Вступайте в нашу телеграмм-группу Инфостарт

1С:Предприятие Поиск дублей Дублирование данных CDH Codex Рефакторинг 1С Управление торговлей Внешняя обработка Целостность данных

См. также

Нейросети Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Подключите ИИ к 1С и решайте рабочие задачи обычными словами. От работы с данными до доработки конфигурации через расширения, всё в привычном чате с ИИ-помощником. Теперь с поддержкой DeepSeek Harness, Kimi Code и Kimi Work, доступных в России без VPN.

15990 руб.

30.07.2026    19309    40    4    

36

SALE! %

Банковские операции Обмен с интернет-банком Мастера заполнения Нейросети Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1C:ERP 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:ERP. Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)

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

17500 руб.

20.12.2024    21423    104    32    

90

Инструментарий разработчика Нейросети Платные (руб)

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

15250 руб.

25.08.2025    76694    147    41    

154

SALE! 30%

Нейросети 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение добавляет в 1С чат с ИИ-агентом. Пользователь пишет вопрос обычными словами: «какие УПД не подписаны?», «какой НДС к уплате за квартал?», «что висит на согласовании дольше недели?», а агент сам строит запросы к базе с правами этого пользователя и отвечает цифрами, таблицей, диаграммой или файлом Excel. Плитки «Аналитик», «Бухгалтер» и «Руководитель» дают сводку по базе одной кнопкой. Агент разбирает ошибки по скриншоту, сверяет прайсы поставщиков и проверяет коды маркировки. С версии 1.0.21 спрашивать можно и с телефона: QR-код в окне агента, без установки приложения. Работает в УТ 11, КА 2, ERP 2, БП 3.0, УНФ 3.0, Документооборот 3.0 и Альфа-Авто 6, ставится одним расширением.

18300 руб.

05.10.2026    3332    10    9    

11

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5. Работает на возможностях платформы, внешние компоненты не используются.

6000 руб.

25.02.2026    6653    23    1    

25

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14640 руб.

29.04.2020    52905    145    164    

98
Для отправки сообщения требуется регистрация/авторизация