Семантический поиск по смыслу
Глобальный поиск 1С — тот, что в Конфигураторе, — ищет подстроку. Помните точное имя объекта: найдёт. Не помните: не найдёт ничего, зато обойдёт всю конфигурацию целиком и заставит ждать — не случайно рядом с ним ищут и то, как его прервать.
Поиск по коду и метаданным в one-s-mcp устроен иначе. Когда ИИ-ассистент подключается к вашей конфигурации 1С, ему мало знать 1С «вообще» — ему нужно найти конкретную процедуру, конкретный регистр, конкретное поле именно в вашей базе. Вы — или сам ассистент — описываете нужное обычными словами, например «процедура, которая проверяет заполнение реквизитов перед записью документа», и система находит подходящий код и объекты метаданных, даже если в их названии нет ни одного слова из запроса.
При этом это не замена точному поиску, а его усиление: движок one-s-mcp ищет одновременно и по смыслу запроса, и по точным словам в нём, а результаты обеих «дорожек» сливаются в одну выдачу. И построение указателя, и сам поиск происходят на машине, где установлен one-s-mcp: выгрузка конфигурации никуда не отправляется, поисковые отпечатки считаются и хранятся локально.
Какую боль решает
Без знания вашей конкретной конфигурации ИИ-ассистент склонен на голубом глазу ссылаться на справочники, регистры и процедуры, которых у вас попросту нет — придумывает то, что звучит правдоподобно для типовой 1С, но не существует в вашей базе. Мы отдельно разбирали эту проблему — почему ИИ выдумывает несуществующие методы 1С — и семантический поиск закрывает её в первую очередь: ассистент перестаёт гадать и отвечает из реального указателя вашей конфигурации.
С этим же связаны более житейские боли:
- Долгий вход в чужую или сильно доработанную конфигурацию. Новому разработчику или подрядчику, чтобы понять, «как это устроено», обычно нужны дни ручного обхода дерева метаданных и модулей. Здесь ответ приходит за секунды.
- «Где это считается? Откуда эта цифра?» Найти нужную процедуру среди тысяч модулей, не помня её точного имени, тяжело. Глобальный поиск по конфигурации в этой ситуации бесполезен — он ищет ровно ту подстроку, которую вы ввели, и ни буквой больше.
- Путаница с «однофамильцами». В типовых конфигурациях полно одноимённых или похожих по названию процедур в разных модулях. Голый текстовый поиск по подстроке вываливает их все вперемешку, не различая смысл.
- Нужно искать сразу и код, и метаданные. Вопрос вроде «какой документ списывает товар со склада» касается не только процедур, но и объектов конфигурации — документов, регистров. Держать для этого два разных инструмента неудобно.
Как это работает
При индексации выгрузки каждый объект конфигурации и каждая процедура превращаются в «вектор смысла» — числовой отпечаток содержания. За это отвечает многоязычная нейросеть bge-m3, которая работает на видеокарте клиента (если подходящей видеокарты нет, расчёт уходит на процессор — медленнее, но без потери качества поиска). Запрос на естественном языке превращается в такой же отпечаток, и система ищет ближайшие по смыслу объекты. Поэтому запрос «приём денег от покупателя» находит документ «Приходный кассовый ордер», хотя дословного совпадения слов там нет.
Для процедур в отпечаток смысла попадает не только имя, но и «умная подпись»: форма вызова (например, «ОбщегоНазначения.ИмяФункции(Параметр1, Параметр2)»), описание из документирующего комментария, параметры и возвращаемое значение. Такой связный текст описывает не просто тему функции, а то, как её правильно позвать, — это напрямую снижает число ошибок в коде, который потом генерирует ассистент.
Дальше вступает гибридная часть. Поиск ведут две независимые дорожки одновременно: одна — по смыслу (описано выше), вторая — по точным словам запроса, как привычный текстовый поиск. Результаты обеих дорожек сливаются в один список, причём с ощутимым перевесом в пользу смысловой дорожки — она главный голос, а точная лишь подстраховывает, когда смысловая «промахнулась» мимо редкого термина или специфичного имени. Этот перевес не выбран на глаз: он выверен замерами на эталонном наборе вопросов. Итог — один запрос закрывает сразу два сценария: «найди что-то похожее по сути» и «найди вот это конкретное слово».
Ищет всё это не только по коду. В том же указателе и с тем же смысловым поиском лежат объекты метаданных — документы, справочники, регистры всех видов, планы счетов, обработки, отчёты. Поэтому вопрос «какой документ пишет в регистр остатков товаров» и вопрос «где считается сумма НДС в документе» обрабатываются одним и тем же поиском, просто попадают в разные типы результатов.
Отдельно система учитывает, насколько процедура востребована: если на неё ссылаются из многих мест конфигурации, скорее всего, она ключевая, и такие процедуры поднимаются в выдаче выше случайных одноразовых — тоже по замерам, а не «на глазок».
Когда нужен не смысл, а буквальное вхождение — конкретное имя метода, кусок текста запроса на языке запросов, строка сообщения пользователю, — в one-s-mcp есть отдельный быстрый точный поиск по коду 1С прямо в файлах выгрузки (на основе ripgrep). Он работает по живым файлам, поэтому доступен даже до завершения полной индексации, и его можно сузить по типу файлов и по источнику — основной конфигурации или конкретному расширению. Это не конкурент семантическому поиску, а его дополнение для случаев, где нужна дословная точность.
Найденный объект метаданных — не тупик поиска, а вход в его подробную карточку. По документу, справочнику или регистру, на который вывел поиск, ассистент может сразу получить развёрнутое описание: реквизиты и табличные части, обязательность заполнения, тип иерархии справочника, владельцев для подчинённых справочников, а для документов и регистров — связи «документ ↔ регистр» в обе стороны (по каким регистрам документ делает движения и какие документы, наоборот, пишут в этот регистр). То есть поиск не просто называет объект, а сразу открывает его полную анатомию — без ручного лазания по дереву конфигурации.
В той же карточке приходят ещё две вещи, важные именно для доработки типовых. Первая — статус поддержки объекта: снят с поддержки, изменён с сохранением поддержки или не редактируется; ассистент сразу понимает, можно ли править объект напрямую или нужно расширение. Вторая — объект показывается с уже наложенными правками расширений: изменения в заимствованные реквизиты, табличные части и команды видны как часть объекта, а не теряются за типовой версией.
Указатель, по которому всё это ищется, не считается заново с нуля при каждой правке конфигурации. Для каждого файла выгрузки хранится контрольная сумма, и при обновлении система переобрабатывает только реально изменившиеся файлы — сразу по всем источникам: и по основной конфигурации, и по подключённым расширениям. На практике это значит, что обновление указателя после правок занимает секунды, а не часы, и расширения не «теряются» при переиндексации. При этом сама индексация устойчива к сбоям: отметка «указатель готов» ставится только в самом конце, после того как система сверила, сколько объектов должно быть проиндексировано и сколько реально загружено. Если числа не сошлись — отметка не ставится, показывается предупреждение, а следующий запуск дообработает недостающее. Иначе говоря, «проиндексировано» здесь никогда не означает «недозагружено», и поиску, по которому ассистент отвечает, можно доверять.
Что это даёт
- Ассистент отвечает из вашей реальной конфигурации, а не сочиняет по общим представлениям о 1С — с именами объектов, сигнатурами методов, реальными связями.
- Спрашивать можно по-человечески. Не нужно помнить точное название справочника или процедуры — достаточно описать, что она делает.
- Один поиск — оба сценария. Гибридный режим одновременно ловит и близкие по смыслу результаты, и точные текстовые совпадения, так что вы не теряете ни то, ни другое.
- Ответ за секунды, а не проход по всей конфигурации. Поиск идёт по заранее построенному указателю, поэтому его не нужно прерывать на середине и ждать, пока он доберётся до конца дерева.
- Видно доработанную базу, а не типовую. Найденный объект приходит со статусом поддержки и с наложенными правками расширений — ассистент не предлагает править то, что стоит на поддержке, и не «теряет» ваши доработки.
- Меньше путаницы с одноимёнными методами. Смысловой отпечаток строится по содержанию, а не только по имени, поэтому «однофамильцы» из разных модулей не сливаются в один нерелевантный ком.
- Код и метаданные — в одном запросе. Не нужно переключаться между поиском по коду и лазаньем по дереву конфигурации: документы, регистры, справочники и процедуры находятся тем же поиском, а из результата сразу доступна полная карточка объекта.
- Указатель не устаревает и не врёт о своей полноте. После правок конфигурации переиндексируется только изменившееся, а не устраивает сюрпризов после сбоя посередине обновления.
- Ничего не покидает вашу машину. Указатель строится и хранится локально, смысловые отпечатки считаются на вашей видеокарте. Для бизнес-логики в 1С, которая часто содержит чувствительные данные, это принципиально — особенно на фоне облачных инструментов, отправляющих код во внешний сервис.
Честно об ограничениях
Качество поиска мы измеряем, а не декларируем: есть собственный стенд с эталонным набором вопросов и метриками, каждое изменение ранжирования проверяется сравнением «до/после». На этом наборе поиск доведён до измеренного потолка, и дальнейшие попытки просто переформулировать запросы прироста не дали. Поэтому мы говорим честно: поиск находит очень многое, но не обещаем, что он находит вообще всё.
Если прочитать источник не удалось — например, папка расширения не на месте, — поиск говорит об этом прямо, а не отдаёт молча неполную выдачу за полную. Пустой ответ и «нечего показать» — разные вещи, и мы их различаем: вывод «на это никто не ссылается, можно менять» не должен быть ловушкой.
Одна возможность, которая усилила бы поиск по слабо документированным конфигурациям, пока не готова: сейчас, если у процедуры нет документирующего комментария, в её смысловой отпечаток идёт только сигнатура — без описания, что процедура делает. В планах — автоматически генерировать короткие нейро-описания для таких функций, чтобы находить по смыслу и их тоже. Это в разработке, не текущая возможность; следить за статусом можно на странице планов.
Что дальше
Хотите, чтобы ассистент искал по вашей реальной конфигурации, а не выдумывал по памяти о типовых, — скачайте one-s-mcp и подключите его к своей базе. Посмотреть, что ещё умеет ассистент помимо поиска, можно на странице всех возможностей.