Как подключить sku-search к 1С за 10 минут

Никакой установки Java, Python или Docker: скачали архив, распаковали, запустили бинарник — и сервис ищет. На подключение к 1С уходит 10–15 минут: либо готовое расширение, либо один HTTP-запрос на BSL.

Шаг 1. Запустить сервис

Скачайте архив Free-версии и распакуйте в любую папку. Дальше:

# Linux / macOS
unzip sku-search-free-*.zip -d sku-search-free
cd sku-search-free
./setup.sh
./bin/linux/sku-service
# Windows (PowerShell)
Expand-Archive -Path sku-search-free-*.zip -DestinationPath sku-search-free
cd sku-search-free
.\setup.cmd
.\bin\windows\sku-service.exe

Откройте http://localhost:8080 — увидите веб-интерфейс с поиском и метриками.

Шаг 2. Загрузить данные

В архиве есть демо-каталог — начните с него:

./bin/linux/sku-cli import --csv data/demo-data.csv

Для своих данных подготовьте CSV с колонками id,name,art,barcode,code и любыми дополнительными полями (бренд, размер, ГОСТ). Импорт: sku-cli import --csv catalog.csv.

Дальше данные можно держать в актуальном состоянии: при создании или изменении номенклатуры в 1С отправляйте POST /add, при удалении — POST /delete. Или раз в ночь перезагружайте каталог целиком.

Шаг 3. Подключить к 1С

Вариант А — расширение. В архиве лежит 1c-extension/СКУПоиск.cfe. Подключается к УТ 11, ERP, БП и КА, умеет искать и добавлять товары в индекс. Тестировалось на платформе 8.3.27 (УТ 11); для других конфигураций может понадобиться доработка.

Вариант Б — свой вызов. Сервис общается по HTTP/JSON:

&НаСервере
Функция НайтиПохожиеТовары(Название)
    Соединение = Новый HTTPСоединение("localhost", 8080);
    Запрос = Новый HTTPЗапрос("/find");
    Запрос.Заголовки.Вставить("Content-Type", "application/json");
    Запрос.УстановитьТелоИзСтроки(
        "{ ""items"": [ { ""name"": """ + Название + """ } ] }");
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    Возврат Ответ.ПолучитьТелоКакСтроку();
КонецФункции

Шаг 4. Разобрать ответ

{
  "request_id": "550e8400-e29b-41d4-a716-446655440000",
  "search_time_ms": 4,
  "results": [
    { "query": { "name": "болт м16 цинк" },
      "matches": [
        { "original": {
            "name_out": "Болт М16х60 оцинк. ГОСТ 7798-70",
            "id_out": "DEMO-00002",
            "art": "ART-000002",
            "score": 0.91,
            "matched_by": "fuzzy_text"
        } } ] } ]
}

score — степень совпадения (1.0 — идеал, 0 — не похоже), matched_by — по чему нашлось: exact_art, fuzzy_text и т. д. Никакого черного ящика: если результат неверный, оператор нажимает «не то», сервис пишет reject в лог обратной связи, на основе которого добавляются синонимы.

Шаг 5. Подстроить под свои данные

Основные параметры в config.toml:

  • fuzzy_max_distance — сколько ошибок в слове допускается. Для кириллицы рекомендуем 2: покрывает «краскаа», «крска», «телефоон».
  • auto_match_threshold — порог надежности результатов, начните с 0.85.
  • enable_attrs_indexing — индексировать дополнительные реквизиты (в поставляемом конфиге включено).
  • case_sensitive_fields — поля, где важен регистр (артикулы, марки, серийники).

Что дальше

  • Добавьте синонимы под свою отрасль: «цинк» = «оцинкованный», «нерж» = «нержавеющий».
  • Настройте пакетную сверку прайсов и накладных — один POST /find на несколько сотен строк.
  • Смотрите /health и логи в data/logs/, чтобы контролировать индексацию и скорость.

Подробности — в документации, готовые вопросы разобраны в первой статье раздела: поиск дублей номенклатуры в 1С.