Трилогия CDH в 1С: 3 инструмента очистки дублей без БСП, с ML и ИИ для архитектора
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
cdh-trilogy-companion.zip (20 КБ): CDH_Trilogy_Simulator.py, CDH_Architecture_Gateway.bsl, fixtures/trilogy_benchmark_dataset.json, architecture_decision_matrix.json, verify_companion.py, README.mdpython verify_companion.py (проверка анти-транзитивности, отката Movement Guard, air-gapped векторов, ИИ-синтеза эталона и UTF-8 BOM модуля 1С)1С-архитекторам, разработчикам и тимлидам: как выбрать и внедрить подходящий контур очистки справочников от дублей в 1С:Предприятии — от автономной обработки без БСП (CDH-Manager) и локальной векторной кластеризации без интернета (CDH-Master) до гибридного синтеза эталонной карточки с участием ИИ (CDH-Wizard).
- Три уровня под разные ограничения ИБ и баз: автономный CDH-Manager работает в любой базе 1С без БСП, CDH-Master находит скрытые дубли внутри закрытого периметра (0 байт во внешнюю сеть), а CDH-Wizard синтезирует эталонные карточки для сложной номенклатуры.
- Детерминированная защита учёта Movement Guard: при замене ссылок в проведённых документах сверяются снимки всех движений регистров до и после записи; малейшее расхождение вызывает немедленный откат транзакции (ROLLBACK).
- Никаких транзитивных ошибок и галлюцинаций в проводках: на всех трёх уровнях исключено слепое слияние цепочек A-B-C, а на уровне ИИ нейросеть формирует только проверяемый JSON-проект эталона, тогда как замену ссылок выполняет строгий код 1С.
Очистка НСИ в 1С не сводится к одному алгоритму: разделение на автономный транзакционный фильтр, локальное векторное ядро и управляемый ИИ-синтез позволяет навести порядок в справочниках любой сложности без риска для регистров учёта.
Для кого: архитекторы 1С, ведущие разработчики, руководители групп НСИ и администраторы корпоративных информационных баз.
Ключевые технологии: 1С:Предприятие 8.3.27, Управление торговлей 11.5, CDH (Manager, Master, Wizard), Movement Guard, триграммный индекс, косинусная близость векторов, графовая кластеризация, ИИ-синтез эталонных записей.
- Почему базовый алгоритм не закрывает все задачи НСИ
- Как устроен автономный контур CDH-Manager без БСП
- Как работает векторный контур CDH-Master без интернета
- Как CDH-Wizard синтезирует эталонную карточку через ИИ
- Матрица выбора архитектуры для инженера 1С
- Что внутри инженерного комплекта к статье
- Границы применимости архитектуры
- Источники
- Какой контур очистки выберете вы
🧭 Почему базовый алгоритм не закрывает все задачи НСИ
В корпоративных базах 1С:Предприятие (ERP, УТ 11.5, КА, отраслевые и самописные конфигурации) за годы эксплуатации накапливаются десятки тысяч задвоенных карточек номенклатуры, контрагентов и договоров. Попытка решить эту проблему универсальным средством неизбежно натыкается на три жестких барьера.
- Привязка к БСП и риск для закрытых периодов. Штатная обработка БСП «Поиск и удаление дублей» требует интегрированной подсистемы в метаданных. На старых, сильно доработанных или самописных базах ее невозможно запустить как автономный файл. А главное - при замене ссылок в проведенных документах прошлых лет слепое перепроведение искажает себестоимость, а бесконтрольная запись способна изменить движения регистров в закрытом периоде.
- Закрытый контур информационной безопасности. В банковском секторе, оборонной промышленности и закрытых холдингах исходные данные справочников запрещено передавать во внешние облачные сервисы. Простые строковые проверки не видят кластеров дублей на массивах в 100 000 - 500 000 записей с опечатками, перестановкой организационно-правовых форм и сокращениями.
- Сложная инженерная семантика и «грязные» карточки. В технической номенклатуре одна и та же деталь может быть записана как
Швеллер 12П ст3сп ГОСТ 8240-97 L=6миПрофиль П-обр. 120х52х4.8 сталь Ст3сп 6000мм (ГОСТ 8240), либо какБолт М12х1.75х60 кл.пр. 8.8 ГОСТ 7798-70 оц.иБолт шестигранный DIN 931 M12x60-8.8 Zn. Пересечение символьных триграмм между такими строками падает до 10-18 процентов: строковый алгоритм такие позиции пропускает, и при ручном слиянии любая одиночная карточка остается неполной без артикулов, единиц измерения или штрихкодов.
Чтобы не заставлять архитектора выбирать между безопасностью регистров, требованиями ИБ и глубиной распознавания, мы с коллегой NickScherbakov разделили задачу на три специализированных уровня - инженерную трилогию CDH (Codex Duplicate Hunter):
- Уровень 1 — CDH-Manager (Автономный базовый контур): внешняя обработка
DuplicateManager.epfбез зависимости от БСП, с нечетким поиском от 50 до 100 баллов, запретом транзитивных ошибок и защитой движений документов Movement Guard. - Уровень 2 — CDH-Master (Векторный контур на платформе): локальное ML-ядро (графовая кластеризация и векторные эмбеддинги), работающее полностью внутри закрытого периметра предприятия (0 байт во внешнюю сеть) и автоматически вычисляющее рекомендуемый эталон по частоте использования и полноте реквизитов.
- Уровень 3 — CDH-Wizard (Гибридный ИИ-контур синтеза): семантическое распознавание сложных инженерных позиций и автоматическая сборка «золотой записи» (Golden Record) из нескольких неполных карточек через защищенный API-шлюз с полным сохранением транзакционного контроля на стороне 1С.

Я подготовила исполняемый инженерный стенд к этой статье (CDH_Trilogy_Simulator.py и модуль интеграции CDH_Architecture_Gateway.bsl), чтобы вы могли прогнать все три уровня на контрольных фикстурах и проверить каждый инвариант на собственной машине.
🔒 Как устроен автономный контур CDH-Manager без БСП
Первый уровень трилогии закрывает базовую потребность разработчика и администратора 1С: быстро открыть внешнюю обработку через «Файл -> Открыть» в любой конфигурации на платформе 8.3 без внедрения БСП, найти дубли и заменить ссылки с математической гарантией сохранности учета. Детальный разбор этого инструмента и протокол его испытаний на платформе 8.3.27.2130 и демобазе УТ 11.5.22.77 я опубликовала в первой статье цикла (CDH: поиск и замена дублей в 1С без БСП).

В основе CDH-Manager лежат три жестких инженерных барьера, которые наследуются и старшими уровнями трилогии:
- Триграммный нечеткий поиск с нормализацией и сортировкой токенов. Оператор настраивает порог сходства от 50 до 100 баллов. На эталонном наборе из комплекта-компаньона карточка
Кронштейн крепления датчика ККД-12(cat-101) и карточка с переставленными словамиКронштейн ККД-12 крепления датчика(cat-102) получают оценку прямого сходства 87.5% при пороге 70.0% и попадают в кандидаты на слияние. - Строгий запрет неявной транзитивности (
A ~ B,B ~ C!=A ~ C). В наших фикстурах третья позицияКронштейн датчика ККД-12М усиленный(cat-103) имеет сходство 71.43% с промежуточной карточкойcat-102, но ее прямое сходство с выбранным эталономcat-101составляет всего 46.15% (ниже порога 70.0%). Обычный транзитивный алгоритм объединил бы все три карточки в одну группу и ошибочно списал бы усиленный кронштейнККД-12Мкак обычныйККД-12.CDH-Managerпроверяет прямое расстояние каждого кандидата исключительно к эталону и отклоняетcat-103со статусомОТКЛОНЕН_АНТИТРАНЗИТИВНОСТЬЮ. - Защита движений проведенных документов (Movement Guard). Замена ссылок выполняется в монопольном режиме и отдельной транзакции на каждую группу. Документы записываются в режиме
РежимЗаписиДокумента.ЗаписьприОбменДанными.Загрузка = Ложь. До и после записи снимаются полные слепки всех регистров документа. На сценарииmg-safe-01(«Реализация товаров и услуг № РТУ-000412 от 14.02.2025») оба слепка из 2 строк идентичны - транзакция фиксируется (COMMIT). А на сценарииmg-drift-02(«Отчет производства за смену № ОПЗС-000109 от 28.01.2025»), где подписка при записи попыталась пересчитать норматив и изменилаquantityв регистреТоварыНаСкладахс-10на-9,Movement Guardмгновенно фиксирует расхождение и откатывает всю транзакцию группы (ROLLBACK).
🧠 Как работает векторный контур CDH-Master без интернета
Когда объем справочника переваливает за десятки тысяч элементов, а карточки содержат сложные сокращения, перестановки реквизитов и опечатки в наименованиях контрагентов, символьных триграмм становится недостаточно. Служба информационной безопасности предприятия часто запрещает внешние HTTP-вызовы. Именно для таких контуров спроектирован второй уровень трилогии - CDH-Master.

Архитектура CDH-Master работает по принципу Air-Gapped Local AI (0 байт исходящего трафика во внешнюю сеть):
- Векторные эмбеддинги внутри периметра. Наименования, ИНН/КПП, адреса и контактные признаки преобразуются в многомерные числовые векторы локальной моделью внутри сервера предприятия. Близость карточек вычисляется через косинусное сходство векторов (
Cosine Similarity). - Семантическая кластеризация на графах. На контрольном кластере
CL-8841из файла-компаньона три карточки одного контрагента записаны по-разному:ООО "ПромЭнергоКомплект-Север"(cp-201),Пром-Энерго-Комплект Север ООО(cp-202) иООО ПромЭнергоКамлект-Север(cp-203). Косинусная близость их векторов к центру кластера составляет 1.0000, 0.9321 и 0.7780 (все выше порога кластеризации 0.75), благодаря чемуCDH-Masterбезошибочно собирает их в единый семантический узел. - Автоматический выбор рекомендуемого эталона (Golden Master Selection). Вместо того чтобы заставлять оператора вручную открывать каждую карточку кластера, алгоритм рассчитывает композитный индекс каждого кандидата: 60% веса дает полнота заполнения реквизитов (
completeness_ratio), а 40% - нормированная частота ссылок в документах базы (referenced_docs). В кластереCL-8841карточкаcp-201(148 документов, полнота 95%) набирает итоговый балл 0.9700 против 0.3624 уcp-202(12 документов, полнота 55%) и 0.2481 уcp-203(3 документа, полнота 40%) и автоматически назначается эталоном.
💡 Как CDH-Wizard синтезирует эталонную карточку через ИИ
Третий уровень трилогии - CDH-Wizard - решает самую трудоемкую задачу нормализации НСИ, где пасуют и строковые правила, и классические алгоритмы выбора одного эталона из существующих карточек. Речь идет о промышленных каталогах с разрозненными инженерными обозначениями, где ни одна из карточек-дублей не заполнена целиком.

В комплекте-компаньоне я заложила два показательных кейса из реальной практики НСИ, которые наглядно демонстрируют разницу между символьным поиском и семантическим синтезом через шлюз https://nopikreport.com/api/ask:
- Металлопрокат по ГОСТ (
wiz-rolled-steel-01):- Карточка 1:
Уголок 50х50х5 ст3сп ГОСТ 8509-93(штрихкод4607001230018). - Карточка 2:
Уголок горячекатаный равнополочный 50*5 Ст3(штрихкод4607001230025). - Карточка 3:
Профиль угловой стальной 50x50x5 мм S235JR (аналог Ст3сп) L=6000. - Результат: триграммное сходство первых двух строк составляет всего 17.54% (обычный поиск их никогда не сопоставит). Семантический контур
CDH-Wizardраспознает эквивалентность профилей с уверенностью 98.5% и синтезирует каноническую «золотую запись»:Уголок стальной горячекатаный равнополочный 50х50х5 Ст3сп ГОСТ 8509-93, где собраны все реквизиты и оба штрихкода EAN-13 (4607001230018,4607001230025).
- Карточка 1:
- Метрический крепеж ГОСТ / DIN (
wiz-fasteners-02):- Карточка 1:
Болт М12х60 ГОСТ 7798-70 кл.пр. 8.8 оц.(штрихкод4014235126088). - Карточка 2:
Болт с шестигранной головкой DIN 931 M12x60 8.8 цинк(штрихкод4609110001260). - Результат: при триграммном сходстве всего 10.26%
CDH-Wizardподтверждает взаимозаменяемость ГОСТ 7798-70 и DIN 931 с уверенностью 98.5% и собирает полную эталонную карточкуБолт с шестигранной головкой М12х60 кл.пр. 8.8 оцинкованный (ГОСТ 7798-70 / DIN 931)с сохранением обоих штрихкодов.
- Карточка 1:
Принципиальная граница безопасности ИИ в 1С: нейросетевой контур CDH-Wizard никогда не пишет напрямую в таблицы базы данных. Он возвращает в 1С строго типизированный JSON-проект золотой записи и текстовое обоснование для журнала аудита (AI Decision Audit Log). После подтверждения оператором саму замену ссылок в документах выполняет все тот же детерминированный механизм Movement Guard на стороне платформы 1С. Фрагмент модуля CDH_Architecture_Gateway.bsl из комплекта к статье показывает, как в 1С сочетаются расчет косинусной близости для CDH-Master и защищенный вызов шлюза синтеза для CDH-Wizard:
// Вычисляет косинусную близость двух разреженных векторов (Соответствие: Токен -> Вес)
// в закрытом периметре сервера 1С без обращения к внешним библиотекам.
Функция РассчитатьКосинуснуюБлизостьВекторовCDHMaster(Знач ВекторА, Знач ВекторБ) Экспорт
СкалярноеПроизведение = 0.0;
СуммаКвадратовА = 0.0;
СуммаКвадратовБ = 0.0;
Для Каждого ПараА Из ВекторА Цикл
ВесА = ПараА.Значение;
СуммаКвадратовА = СуммаКвадратовА + (ВесА * ВесА);
ВесБ = ВекторБ.Получить(ПараА.Ключ);
Если ВесБ <> Неопределено Тогда
СкалярноеПроизведение = СкалярноеПроизведение + (ВесА * ВесБ);
КонецЕсли;
КонецЦикла;
Для Каждого ПараБ Из ВекторБ Цикл
ВесБ = ПараБ.Значение;
СуммаКвадратовБ = СуммаКвадратовБ + (ВесБ * ВесБ);
КонецЦикла;
Если СуммаКвадратовА <= 0 Или СуммаКвадратовБ <= 0 Тогда
Возврат 0.0;
КонецЕсли;
Знаменатель = КвКорень(СуммаКвадратовА) * КвКорень(СуммаКвадратовБ);
Возврат Окр(СкалярноеПроизведение / Знаменатель, 4);
КонецФункции
// Выполняет защищённый HTTPS-вызов к шлюзу nopikreport.com/api/ask для синтеза золотой записи
// с регистрацией объяснимого аудита (AI Decision Audit Log).
Функция ВызватьШлюзСинтезаЭталонаCDHWizard(Знач ТелоЗапросаJSON, Знач ТокенАвторизации, Знач ТаймаутСекунд = 30) Экспорт
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
Соединение = Новый HTTPСоединение(
"nopikreport.com",
443,
,
,
,
ТаймаутСекунд,
ЗащищенноеСоединение
);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Заголовки.Вставить("Authorization", "Bearer " + ТокенАвторизации);
Запрос = Новый HTTPЗапрос("/api/ask", Заголовки);
Запрос.УстановитьТелоИзСтроки(ТелоЗапросаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния <> 200 Тогда
ВызватьИсключение СтрШаблон("CDH-Wizard API вернул код %1: %2", Ответ.КодСостояния, Ответ.ПолучитьТелоКакСтроку());
КонецЕсли;
Возврат Ответ.ПолучитьТелоКакСтроку();
КонецФункции
📊 Матрица выбора архитектуры для инженера 1С
Чтобы вы могли быстро определить, какой из трех уровней трилогии закрывает задачи вашего проекта, я свела технические характеристики и стендовые метрики всех трех редакций в единую архитектурную матрицу.
| Критерий / параметр | Уровень 1: CDH-Manager | Уровень 2: CDH-Master | Уровень 3: CDH-Wizard |
|---|---|---|---|
| Основное назначение | Автономный поиск и безопасная замена ссылок без БСП | Локальная семантическая кластеризация в закрытом контуре | ИИ-распознавание сложных дублей и синтез «золотой записи» |
| Зависимость от БСП | Не требуется (автономный файл .epf) |
Не требуется | Не требуется |
| Сетевой контур и ИБ | Локально внутри 1С (0 байт вовне) | Air-Gapped внутри периметра (0 байт вовне) | Гибридный HTTPS-шлюз (nopikreport.com/api/ask) |
| Ядро сопоставления | Точное + триграммное сходство (50..100 баллов) | Векторные эмбеддинги (Cosine Similarity) + графы |
LLM-семантика ГОСТ/DIN/ТУ + экстракция атрибутов |
| Выбор эталона | Ручной выбор оператором с проверкой анти-транзитивности | Автоматический расчет индекса (60% полнота + 40% частота) | Автоматический синтез канонической карточки из N дублей |
| Защита регистров учета | Movement Guard (поклеточный слепок до/после + откат) | Movement Guard + пакетная оркестрация кластеров | Movement Guard + журнал объяснимого ИИ-аудита |
| Рекомендуемый масштаб | До 2 000 - 10 000 элементов за сеанс | От 10 000 до 250 000+ элементов | Номенклатура со сложной инженерной спецификацией |
| Статус в трилогии | Доступен (статья и EPF) | Анонс (стендовая модель в архиве к статье) | Анонс (стендовая модель и BSL-шлюз в архиве к статье) |
📦 Что внутри инженерного комплекта к статье
К публикации прикреплен архив cdh-trilogy-companion.zip, в котором собраны исполняемые материалы для архитектурной проверки всех трех контуров трилогии на вашем рабочем месте:
CDH_Trilogy_Simulator.py- эталонный симулятор трех уровней архитектуры CDH (без внешних зависимостей, стандартная библиотека Python 3.10+). Воспроизводит триграммный поиск, блокировку транзитивной цепочкиA ~ B ~ C, поклеточную защиту регистровMovement Guard(COMMIT/ROLLBACK), косинусную близость векторовCDH-Masterи синтез золотой записиCDH-Wizard.CDH_Architecture_Gateway.bsl- готовый модуль на языке 1С:Предприятие 8.3 (с UTF-8 BOM для прямого импорта в конфигуратор или EDT), содержащий функции расчета триграммного сходства, сверки снимков движенийСравнитьСнимкиДвиженийMovementGuard, косинусной близостиРассчитатьКосинуснуюБлизостьВекторовCDHMasterи HTTPS-интеграцииВызватьШлюзСинтезаЭталонаCDHWizard.fixtures/trilogy_benchmark_dataset.json- набор контрольных фикстур по всем трем уровням (номенклатура, контрагенты, движения регистров и кейсы ГОСТ/DIN).architecture_decision_matrix.json- машиночитаемая матрица выбора архитектуры (TCO, ограничения ИБ, объемы справочников и гарантии целостности).verify_companion.pyиREADME.md- скрипт автоматической верификации комплекта (6 проверок, 0 ошибок) и краткая инструкция по запуску за 3 шага.
🔧 Границы применимости архитектуры
- Граница симулятора в комплекте этой статьи: скрипт
CDH_Trilogy_Simulator.pyи модульCDH_Architecture_Gateway.bslпредставляют собой референсный архитектурный стенд и шлюз интеграции для оценки трех контуров. Готовая внешняя обработка первого уровня (DuplicateManager.epf) поставляется в составе первой публикации цикла (статья 2819788), а полные дистрибутивыCDH-MasterиCDH-Wizardвыходят в следующих частях трилогии. - Требования к монопольному окну при записи: даже при использовании фоновой кластеризации
CDH-Masterили предварительного синтеза карточек вCDH-Wizardфинальная транзакционная подстановка ссылок в проведенных документах требует технологического окна и активного контроляMovement Guard. - Сетевая политика для Уровня 3: контур
CDH-Wizardобращается к защищенному API-шлюзу, поэтому для контуров с полным физическим отсутствием внешней сети (Air-Gapped) следует выбиратьCDH-MasterилиCDH-Manager.
📚 Источники
- Штатная подсистема БСП «Поиск и удаление дублей» (ИТС): стандартное решение для типовых конфигураций 1С, но требует встроенной БСП, опирается на точное совпадение или полнотекстовый индекс и не содержит поклеточного сравнения слепков движений до и после записи документов без перепроведения.
- Внешние корпоративные MDM-системы (1С:MDM, КСУ НСИ): мощные контуры централизованного управления справочниками, внедрение которых оправдано в крупных холдингах, но избыточно по срокам и стоимости, когда нужно очистить существующую рабочую базу 1С без перестройки всей ИТ-инфраструктуры.
- Первая часть трилогии CDH (CDH: поиск и замена дублей в 1С без БСП): базовый автономный инструмент
CDH-Manager, на фундаменте которого построены векторный и генеративный уровни трилогии.
💬 Какой контур очистки выберете вы
Коллеги, какой из трех сценариев сейчас острее всего стоит в ваших базах 1С: быстрая автономная расчистка без БСП (CDH-Manager), разбор десятков тысяч контрагентов и позиций в закрытом контуре без интернета (CDH-Master) или слияние сложных технических наименований ГОСТ/DIN со сборкой эталонной карточки (CDH-Wizard)? Напишите в комментариях, с какого справочника вы бы начали проверку - это поможет расставить акценты в детальных разборах второго и третьего уровней трилогии.
- CDH: поиск и замена дублей в 1С без БСП. Проверено на стенде и УТ 11.5
- Перегруженные общие модули 1С: что показывает Analyzer 1C и как разнести модуль на части
- SonarQube для 1С: плагин BSL Community, первый анализ и отключение замечаний. Проверено на стенде
- Поменяли строчку — упал маркетплейс: транзитивный анализ вызовов в 1С
- Привязка LLM к структуре базы 1С: архитектура (выгрузка метаданных, HTTP-сервис и граница вызовов)
Вступайте в нашу телеграмм-группу Инфостарт