Нормализация «до/после» на реальном справочнике
Шаг за шагом: как строка «каб ВВГнг 3*2,5 ед:м.п <NULL>» превращается в классифицированную карточку. Примеры «было → стало» таблицей.
1. С чем приходит справочник
Перед стартом мы делаем аудит справочника «как есть» — с цифрами, а не на словах. Типичная картина для справочника материалов на десятки тысяч позиций:
Плюс заглушки, которые притворяются данными: «нет», «---», «<NULL>», «-». Такой справочник не понимает ни человек, ни система закупок.
2. Конвейер: 7 шагов на одной строке
Разберём одну типичную строку, как она приходит из 1С:
каб ВВГнг-LS 3*2,5 , 0.66кв чёрн ГОСТ нет ед:м.п кол-756 <NULL>
Ни кода, ни нормальной единицы, ни структуры. Дальше — конвейер.
- Приём. Запись попадает в конвейер как есть — из 1С, Excel или XML. Оригинал сохраняется, чтобы каждый следующий шаг был прослеживаем.
- Очистка мусора. Убираем управляющие символы, двойные пробелы, обрывки и заглушки «нет», «<NULL>», «кол-756».
каб ВВГнг-LS 3*2,5 0.66кв чёрн ГОСТ ед:м.п - Раскрытие сокращений и разбор характеристик. «каб» → «Кабель», «чёрн» → «чёрный». Характеристики из названия уходят в отдельные поля: число жил 3, сечение 2,5 мм², напряжение 0,66 кВ, цвет чёрный.
- Единицы измерения. «м.п.», «пм», «метр» — одно и то же: единица Метр, код ОКЕИ 006.
- Классификация. Код присваивается каскадом: справочник → нечёткий поиск → языковая модель-арбитр. Результат: ОКПД2 27.32.13.110 (провода и кабели), КПВЭД 27.32.
- Обогащение. Пробелы дозаполняются из внешних источников — отраслевых справочников, ГИСП, открытых каталогов: материал жилы медь, изоляция ПВХ нг-LS, ГОСТ 31996-2012. У каждого значения сохраняется источник.
- Контроль полноты и дедупликация. Проверяем, что для класса заполнены все обязательные атрибуты, и сливаем разные написания той же позиции в одну эталонную карточку.
| Эталонная карточка на выходе | |
|---|---|
| Наименование | Кабель ВВГнг(А)-LS 3×2,5 0,66 кВ |
| Число жил / сечение | 3 / 2,5 мм² |
| Напряжение | 0,66 кВ |
| Материал жилы / изоляция | медь / ПВХ нг-LS |
| Цвет | чёрный |
| Стандарт | ГОСТ 31996-2012 |
| Единица | Метр (ОКЕИ 006) |
| ОКПД2 / КПВЭД | 27.32.13.110 / 27.32 |
| Полнота | 100% ✓ · дубли слиты |
3. Примеры «было → стало»
Обезличенные строки из реального справочника материалов строительной компании. Обратите внимание на единый порядок: вид изделия → тип/марка → материал → размеры → стандарт.
| # | Было | Стало |
|---|---|---|
| 1 | Лист г/к 8,0х1500х6000 ГОСТ 19903-74 Ст3сп | Лист горячекатаный Ст3сп 8х1500х6000 ГОСТ 19903-74 |
| 2 | Сталь листовая оцинк ГОСТ 14918-80 2кл Ст08пс 1,5x1250x2500 | Лист оцинкованный 2 класс сталь 08пс 1,5х1250х2500 ГОСТ 14918-80 |
| 3 | Кабель контр. 4х1,5 нг(А)-FRLS | Кабель контрольный нг(А)-FRLS 4х1,5 |
| 4 | Труба стальная 89х3,5 ГОСТ 10704-91 В20 ГОСТ 10705-80 | Труба стальная электросварная сталь 20 группа В 89х3,5 ГОСТ 10704-91 ГОСТ 10705-80 |
| 5 | Полоса 5х40 ГОСТ 103-2006 Ст3 пс/сп | Полоса стальная Ст3пс/сп 5х40 ГОСТ 103-2006 |
| 6 | Шайба оц. М6 DIN125 | Шайба М6 оцинкованная DIN 125 |
| 7 | Клапан запорный угл. никелир Ду 15 | Клапан запорный угловой никелированный Ду15 |
| 8 | Профиль монтажный зетовый (97*40*60*2000) УХЛ1 (S=2,0мм) оцинкованный лист | Профиль Z-образный оцинкованный 97х40х60х2000 мм С2,0мм УХЛ1 |
| 9 | Сварочная смесь из аргона и углекислого газа К-20 (80%Ar+20%СО2) | Смесь сварочная К-20 аргон 80% углекислота 20% |
| 10 | Дюбель-гвоздь потайной бортик 6х60 (100 шт) | Дюбель-гвоздь 6х60 с потайным бортиком упаковка 100 шт |
| 11 | Сальник набивной Dy200 L=300 | Сальник набивной Ду200 Л300мм |
| 12 | Ящик для песка 0,5 м.- ЯП-05 | Ящик для песка ЯП-05 0,5 м3 |
| 13 | Р/к фильтра ЦОМ | Ремкомплект фильтра центробежной очистки масла |
| 14 | Изделие закладное МН212-2 1.400-15 вып.1 | Изделие закладное МН 212-2 серия 1.400-15 выпуск 1 |
Что происходит в этих примерах: раскрыты сокращения («г/к», «оцинк», «контр.», «угл.», «Р/к»), латиница в обозначениях заменена на принятые («Dy» → «Ду», «L=» → «Л»), марка стали и стандарт стоят на постоянных местах, диапазоны и размеры записаны единообразно, единица в названии («м.» → «м3») исправлена по смыслу.
4. Единицы измерения по ОКЕИ
Каждое написание единицы приводится к Общероссийскому классификатору единиц измерения — тогда остатки и цены складываются корректно.
| Как записано в справочнике | Единица ОКЕИ | Код |
|---|---|---|
| м.п., пм, м/п, метр, мп | Метр | 006 |
| шт, шт., штук, ед, компл. (поштучно) | Штука | 796 |
| кг, кило, кгр | Килограмм | 166 |
| т, тн, тонн | Тонна | 168 |
| м2, кв.м, м.кв. | Квадратный метр | 055 |
| м3, куб.м, м.куб. | Кубический метр | 113 |
| л, литр, лит. | Литр | 112 |
| уп, упак, пачка | Упаковка | 778 |
5. Коды ОКПД2 и КПВЭД
ОКПД2 — российский классификатор продукции, КПВЭД — его аналог для стран ЕАЭС. Коды нужны для закупочных процедур, подтверждения производства в РФ и корректной аналитики по видам продукции. Код присваивается каскадом:
- точное совпадение по внутренним правилам и справочникам;
- нечёткий поиск по нормализованному наименованию и характеристикам;
- в спорных случаях — языковая модель в роли арбитра, которая выдаёт код вместе с обоснованием.
Каждое решение записывается: по любой позиции можно поднять, почему она получила именно этот код.
6. Склейка дублей
Дубли ищутся не по совпадению текста, а по смыслу — после нормализации у разных написаний совпадают вид изделия, характеристики и стандарт. Дубль не удаляется, а получает ссылку на эталон.
| Исходная запись | После нормализации | Решение |
|---|---|---|
| Лист 2,0 (1,25*2,5) | Лист 2х1250х2500 | эталон |
| Лист оц. 2мм 1250х2500 | дубль → эталон | |
| Изделие закладное МН104-6 L=950 1.400-15 вып.1 | Изделие закладное МН 104-6 Л950мм серия 1.400-15 выпуск 1 | эталон |
| Закладная деталь МН104-6, L=950 1.400-15 вып.1 | дубль → эталон | |
| Хомут силовой 112-121мм | Хомут силовой 112–121 мм | эталон |
| Хомут силовой 112*121 | дубль → эталон |
При слиянии берётся наиболее полный вариант, а в эталоне остаётся история — из какой записи пришло каждое значение. Как дубли схлопываются между несколькими базами, разобрано в статье «Слияние нескольких баз 1С в один справочник».
7. Что уходит на ручную проверку
Конвейер не «додумывает» то, чего нет в данных. Если после очистки характеристик не хватает для однозначной идентификации, позиция помечается «требует уточнения» с указанием, чего именно не хватает. Например:
- Углекислота (б) → «Углекислота баллон» — не указан объём баллона, а аналоги бывают разных типоразмеров;
- Лента перфорированная — нет ширины и толщины, позицию невозможно отличить от соседних.
Такие позиции получают от заказчика недостающие данные. Обычно на ручную доводку уходит не больше 10–15% справочника, и это действительно неполные записи, а не ложные срабатывания.
8. Как принимается результат
Работа принимается по измеримым показателям, согласованным до старта:
| Показатель | Целевое значение |
|---|---|
| Классификация ОКПД2 | ≥ 95% |
| Классификация КПВЭД | ≥ 90% |
| Единицы приведены к ОКЕИ | 100% |
| Средняя полнота атрибутов | ≥ 0,9 |
| Позиции на ручную проверку | ≤ 10%, только реально неполные |
| Дубли | слиты в эталоны |
Заказчик заранее знает, что получит и как это проверить, — приёмка идёт по метрикам, а не «на глаз».
Разберём ваш справочник
Пришлите обезличенную выгрузку на 100–500 позиций — бесплатно покажем «было → стало» и долю дублей на ваших данных. Вопросы по нормализации и 1С:MDM обсуждаем в Telegram.