Бесплатный MCP-сервер для 1С: ИИ читает данные базы и структуру метаданных (MCP:RSV Data)

22.06.26

Интеграция - Нейросети

Бесплатный MCP-сервер, который даёт ИИ-ассистенту (Claude, Cursor и др.) читать данные рабочей базы 1С простыми словами — остатки, документы, справочники, регистры. Агенту не нужно знать язык запросов 1С: он описывает, что хочет, а сервер строит запрос сам. Работает на любой конфигурации (УТ, ERP, БП, самописная), только чтение, отдаёт лишь то, что доступно текущему пользователю. Вторая функция — отдаёт актуальную структуру метаданных любой конфигурации (таблицы, поля, типы), что полезно и при разработке как контекст для ИИ-агента. Реализован как расширение конфигурации.

MCP:RSV Data — пользовательское описание

Что это. Бесплатный MCP-сервер, который даёт ИИ-агенту (Claude, Cursor и др.) читать данные рабочей базы 1С простыми словами: остатки, документы, справочники, регистры. Агенту не нужно знать язык запросов 1С — он описывает, что хочет, а сервер сам строит запрос. Работает на любой конфигурации и отдаёт только то, что доступно текущему пользователю на чтение.

Это руководство объясняет, как всё устроено и как агент получает данные, на простом языке и с примерами. Оно описывает то, что есть в продукте сейчас.


1. Что это и зачем

MCP:RSV Data — это «мост» между ИИ-агентом и данными вашей рабочей базы 1С. Программист 1С (или аналитик) пишет своему агенту простыми словами: «покажи остатки по складам», «найди контрагента», «сколько продали такого-то товара» — а агент через MCP:RSV Data получает реальные данные из базы.

Ключевые идеи:

  • Простота. Агенту не нужно знать внутреннее устройство конкретной конфигурации или язык запросов 1С. Он спрашивает структуру и описывает, что хочет.
  • Универсальность. Работает на любой конфигурации (УТ, ERP, БП, самописная) — потому что опирается на метаданные самой базы, а не на жёстко прописанные имена.
  • Только чтение. Инструменты читают данные и не меняют базу. Видно только то, что доступно текущему пользователю на чтение.
  • Полезно и при разработке (вторая функция). Кроме чтения данных, инструменты осмотра (describe, get_structure) отдают актуальную структуру метаданных любой конфигурации — точные имена таблиц и полей, типы, значения перечислений, табличные части. Это удобный контекст для ИИ-агента и в задачах разработки: агент видит реальную структуру базы и не выдумывает имена.
  • Это про ДАННЫЕ, не про разработку. Сам код, метаданные и формы MCP:RSV Data не меняет — только читает данные и структуру. Если нужно их создавать и редактировать (BSL, объекты, формы, СКД, отладка) — это другой, платный продукт для разработки в 1С:EDT: MCP:RSV Server.

2. Скачать, установить и подключить

Где скачать

Последняя версия — всегда по одной постоянной ссылке (не меняется от релиза к релизу):

В архиве MCP-RSV-Data.zip: расширение RSVData.cfe, программа-мост rsvdata-bridge.exe (Windows) и это руководство.

Из чего состоит продукт

  • Расширение MCP:RSV Data (файл RSVData.cfe) — устанавливается в базу 1С. В нём вся логика: инструменты и чтение данных.
  • К расширению подключается ИИ-клиент (Claude, Cursor и др.) по протоколу MCP. Клиент видит набор инструментов (tools); когда агент вызывает инструмент, расширение читает данные и возвращает результат.
  • Программа rsvdata-bridge.exe (Windows) — у неё две роли, они зависят от способа подключения:
    • для HTTP-сервиса она необязательна — это просто помощник, который формирует готовый блок настроек; тот же блок можно написать вручную (см. ниже), и на Linux/macOS так и делают;
    • для локального моста она обязательна — именно она и есть мост между клиентом и базой.

Подключить ИИ-клиент к данным можно двумя способами: через HTTP-сервис 1С или через локальный мост. Расширение в базу ставится в любом случае.

Шаг 1. Установить расширение в базу (нужно для обоих способов)

Подключите RSVData.cfe к базе — стандартная одноразовая операция:

  • Из 1С:Предприятия: функции технического специалиста -> «Управление расширениями конфигурации» -> «Добавить» -> выберите файл RSVData.cfe -> перезапустите программу.
  • Или из Конфигуратора: Конфигурация -> Расширения -> добавить расширение и загрузить из файла RSVData.cfe -> обновить конфигурацию базы данных (F7).

Способ 1. Через HTTP-сервис 1С

Подходит, если база опубликована на веб-сервере (IIS/Apache) с включёнными HTTP-сервисами расширения и включённой аутентификацией 1С. Адрес сервиса после публикации имеет вид http://<сервер>/<имя_публикации>/hs/rsvdata/mcp.

Конфиг клиента для этого способа (пример для Claude Code):

{
  "mcpServers": {
    "rsv-data": {
      "type": "http",
      "url": "http://localhost/UT_Demo/hs/rsvdata/mcp",
      "headers": {
        "Authorization": "Basic <строка_Base64>"
      }
    }
  }
}

Важно: значение type у разных клиентов разное — если поставить не то, клиент выдаёт ошибку схемы и не подключается:

Клиент значение type
Claude Code, VS Code http
Cursor streamable-http
Cline streamableHttp

Здесь <строка_Base64> — это логин:пароль пользователя 1С (через двоеточие), закодированные в Base64 (UTF-8). Для этого способа программа rsvdata-bridge.exe необязательна — блок можно получить двумя путями:

  • Путь А — с помощником (Windows). Дважды щёлкните по rsvdata-bridge.exe, выберите «[1] HTTP», укажите ваш клиент (Claude Code / Cursor / Cline), введите адрес, логин и пароль. Программа сама посчитает Base64, поставит правильный type для вашего клиента, проверит связь и выдаст готовый блок (сохранит в файл и в буфер обмена), а может сразу дописать его в конфиг клиента.
  • Путь Б — вручную, без программы (любая ОС, в т. ч. Linux/macOS). Возьмите блок выше и подставьте свою строку Base64. По HTTP клиент обращается к 1С напрямую, поэтому rsvdata-bridge.exe тут не нужен (а на Linux/macOS он и не работает). Строку Base64 из логин:пароль можно получить так:

Windows (PowerShell):

[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("Администратор:пароль"))

Linux/macOS (терминал):

printf '%s' 'Администратор:пароль' | base64

Полученную строку подставьте после слова Basic (через пробел) в заголовок Authorization.


Способ 2. Через локальный мост

Подходит, если база не опубликована на веб-сервере. Подключение идёт напрямую к базе через COM. Для этого способа rsvdata-bridge.exe обязателен — он и есть мост (именно через него идёт связь с базой). Работает на Windows (нужна установленная платформа 1С).

Дважды щёлкните по rsvdata-bridge.exe, выберите «[2] локальный мост», задайте имя подключения (по умолчанию rsv-data), укажите тип базы (файловая/серверная), путь или сервер+имя, логин и пароль. Программа проверит связь и выдаст готовый блок (сохранит в файл и в буфер обмена):

{
  "mcpServers": {
    "rsv-data": {
      "type": "stdio",
      "command": "C:\\MCP-RSV-Data\\rsvdata-bridge.exe",
      "args": [
        "serve",
        "--config",
        "C:\\Users\\<вы>\\AppData\\Roaming\\MCP-RSV-Data\\rsv-data.json"
      ]
    }
  }
}

Где хранятся параметры подключения. В отличие от HTTP-способа, здесь логин/пароль и адрес базы НЕ попадают в конфиг клиента — мастер сохраняет их в отдельный файл настроек: %APPDATA%\MCP-RSV-Data\<имя подключения>.json (например …\rsv-data.json). Файл хранится в вашем профиле Windows и доступен только вам; параметры в нём лежат в открытом виде (как и логин/пароль в любом локальном конфиге). При работе мост (serve --config <этот файл>) читает оттуда параметры и подключается к базе. Поэтому в блоке клиента указан именно путь к этому файлу, а не сами логин/пароль.

Несколько баз через мост. Каждой базе — своё имя подключения: просто запустите мастер ещё раз и задайте другое имя (например rsv-data-erp). Мастер создаст отдельный файл настроек (…\rsv-data-erp.json) и выдаст отдельный блок с этим именем и своим --config. Добавьте оба блока в .mcp.json — получится несколько серверов под разными именами, и каждый работает со своей базой:

{
  "mcpServers": {
    "rsv-data": {
      "type": "stdio",
      "command": "C:\\MCP-RSV-Data\\rsvdata-bridge.exe",
      "args": ["serve", "--config", "C:\\Users\\<вы>\\AppData\\Roaming\\MCP-RSV-Data\\rsv-data.json"]
    },
    "rsv-data-erp": {
      "type": "stdio",
      "command": "C:\\MCP-RSV-Data\\rsvdata-bridge.exe",
      "args": ["serve", "--config", "C:\\Users\\<вы>\\AppData\\Roaming\\MCP-RSV-Data\\rsv-data-erp.json"]
    }
  }
}

(Один и тот же rsvdata-bridge.exe обслуживает все базы — он определяет нужную по файлу из --config.)

Вставить блок в конфиг клиента

Проще всего — дать мастеру вписать сервер самому: в конце он спросит «Дописать сервер в конфиг клиента автоматически?» — ответьте «да» и укажите путь к файлу конфигурации клиента (.mcp.json, cline_mcp_settings.json и т. п.). Мастер аккуратно добавит запись в раздел mcpServers, сохранив все прочие серверы и не сломав JSON (запятые/скобки расставит сам; если файла нет — создаст). Так не нужно вручную копировать кусок JSON — это и есть самый частый источник ошибок (забытая запятая).

Если ответить «нет» — действуйте как обычно: готовый блок уже в буфере обмена и сохранён в файл, вставьте его в .mcp.json вашего клиента (раздел mcpServers) сами.

После добавления перезапустите клиент.

Подсказка для ручной вставки: запись нового сервера отделяется от соседних запятой, а сам блок должен лежать внутри "mcpServers": { … }. Пропущенная после } запятая — типичная причина ошибки подключения. Авто-запись избавляет от этого.

Проверка

После подключения (любым способом) в клиенте появится сервер rsv-data с инструментами. Попросите агента простыми словами, например: «покажи, что есть в этой базе 1С» — он вызовет describe и покажет состав.

Если что-то не так

  • HTTP, ответ 401 / отказ в доступе — неверный логин или пароль; если строку Base64 делали вручную, проверьте, что закодировали именно логин:пароль в UTF-8 и подставили её после слова Basic.
  • Мост, «нет общего модуля RSVData_Сервер … Неизвестное имя» — расширение MCP:RSV Data не установлено или не активно в этой базе (это разные базы — расширение нужно установить в каждую, где будете работать). Вернитесь к Шагу 1 и установите RSVData.cfe в нужную базу. Чтобы увидеть, какие расширения есть в базе, запустите rsvdata-bridge.exe diag — он покажет список расширений и доступность модулей RSVData.
  • Повтор без повторного ввода. Если мост не подключился, он не закрывается, а спрашивает, что делать: [1] повторить с теми же данными, [2] ввести заново, [3] выход. Установили расширение в базу — нажмите 1, и мост повторит попытку с уже введёнными путём/логином/паролем.
  • Мост, «не удалось создать V83.COMConnector» — на компьютере не зарегистрирован COM-компонент платформы. Выполните один раз от имени администратора (путь и версия — ваши): regsvr32 "C:\Program Files\1cv8\<версия>\bin\comcntr.dll"
  • Мост, проверить связь отдельно: rsvdata-bridge.exe ping — должен вернуть ответ с result.

3. Как агент понимает, что доступно (три уровня подсказок)

Агент не обязан ничего знать заранее — продукт сам ведёт его за руку. Подсказки идут тремя уровнями, каждый ведёт к следующему:

  • 1.Список инструментов (tools/list). У каждого инструмента — короткое описание: что он делает и подсказка «подробности: help topic=<имя>».
  • 2.Схема параметров (inputSchema). У каждого параметра — пояснение: что в нём передавать, какие значения допустимы, формат.
  • 3.Инструмент help — подробные руководства с готовыми примерами. help без параметра даёт обзор и список инструментов; help topic=query (или другого инструмента) — развёрнутую справку с примерами; help topic=workflow — типовые сценарии «хочу X — делай так».

Поэтому правильный первый шаг агента — заглянуть в help (обзор) и при необходимости в help topic=<инструмент>. Дальше — узнать структуру объекта (describe/get_structure) и только потом запрашивать данные.


4. Инструменты — простым языком

Инструментов немного, у каждого одна понятная задача.

help — справка

Зачем: разобраться, что умеет сервер и как пользоваться инструментами.

  • без параметров -> обзор продукта + список инструментов;
  • topic=<имя инструмента> (config, describe, get_structure, query, execute_query, reveal) -> подробное руководство с примерами;
  • topic=anonymization -> как устроена анонимизация ПДн и как с ней работать;
  • topic=workflow -> типовые сценарии;
  • topic=about -> что это за продукт.

config — паспорт базы

Зачем: за один вызов (без параметров) понять, с какой базой работаем. Полезно вызвать первым.

Возвращает:

  • Конфигурация — имя, синоним, версия, поставщик, режим совместимости (видно сразу: ERP, УТ или самописная);
  • Расширения — какие подключены и активны (имя, версия, назначение);
  • Подсистемы — бизнес-разделы верхнего уровня (Продажи, Закупки, Склад…) с количеством объектов.

describe — что есть в базе

Зачем: найти нужный объект и осмотреться, когда точные имена ещё не известны. Режимы зависят от переданных параметров:

Параметры Что вернёт
(без параметров) категории объектов с количеством (Справочники, Документы, Регистры, …)
find=контрагент глобальный поиск по подстроке сразу по ВСЕМ категориям (объекты с их типами)
subsystem=Продажи объекты бизнес-раздела и вложенные подсистемы (разделы смотрите в config)
type=Справочник объекты этой категории (имя, полное имя, синоним)
type=Документ, filter=реализ то же, но сужено по подстроке в одной категории
object=Справочник.Номенклатура таблицы объекта (основная, табличные части, виртуальные таблицы регистров)
table=Справочник.Номенклатура поля таблицы с типами и видами

Пример: {"find":"контрагент"} -> найдёт все объекты, в имени/синониме которых есть «контрагент», по всем категориям сразу.

get_structure — полная структура объекта

Зачем: за один вызов получить всё, что нужно для построения запроса к незнакомому объекту: точные имена таблиц и полей, типы, значения перечислений, табличные части, владельцев. Это главный инструмент «разведки» перед запросом.

  • Параметр object (обязательный) — полное имя объекта: Справочник.Контрагенты, Документ.РеализацияТоваровУслуг, РегистрНакопления.ТоварыНаСкладах.

Что в ответе: имя и синоним объекта, его категория, список таблиц (у каждой — готовое имя для запроса и список полей), а для подчинённых справочников — владельцы. У каждого поля: имя, тип, вид (Реквизит / Измерение / Ресурс / Стандартный реквизит), синоним, а для перечислений — список значений (имя + понятный синоним).

Важно: для виртуальных таблиц регистров имена полей тоже раскрыты. Например, у таблицы остатков ресурс называется <Ресурс>Остаток (скажем, ВНаличииОстаток), у оборотов — <Ресурс>Оборот. Агенту не нужно это угадывать.

Пример: {"object":"Документ.РеализацияТоваровУслуг"}.

query — чтение данных без языка запросов

Зачем: прочитать данные одной таблицы по простому описанию. Язык запросов знать не нужно — запрос строит сервер.

Параметры:

  • table (обязательный) — что читаем. Это может быть:
    • справочник: Справочник.Номенклатура
    • документ: Документ.РеализацияТоваровУслуг
    • табличная часть: Документ.РеализацияТоваровУслуг.Товары
    • виртуальная таблица регистра: РегистрНакопления.ТоварыНаСкладах.Остатки
  • fields — какие поля вернуть (массив имён). Пусто = все поля. Точные имена даёт get_structure.
  • filters — отборы: массив {field, comparison, value} (соединяются по «И»). Виды сравнения (comparison): equal, notEqual, greater, greaterOrEqual, less, lessOrEqual, contains, notContains, inList, notInList, filled, notFilled. По умолчанию equal. contains/ notContains ищут подстроку без учёта регистра; для inList/notInList в value — массив.
  • order — сортировка: "Поле" по возрастанию, "-Поле" по убыванию.
  • period — дата для виртуальных таблиц (Остатки/СрезПоследних/СрезПервых), формат ГГГГ-ММ-ДД.
  • limit — максимум строк (по умолчанию 100, максимум 1000); offset — пропустить строк (постранично).

Чего query не делает: группировок, итогов и соединений таблиц — для этого есть execute_query.

Пример (10 номенклатур со словом «молоко», только наименование и артикул):

{"table":"Справочник.Номенклатура",
 "fields":["Наименование","Артикул"],
 "filters":[{"field":"Наименование","comparison":"contains","value":"молоко"}],
 "limit":10}

Пример (остатки на складах на дату):

{"table":"РегистрНакопления.ТоварыНаСкладах.Остатки","period":"2026-01-01"}
Подсказка: у иерархических справочников добавьте отбор {"field":"ЭтоГруппа","comparison":"equal","value":false}, чтобы в выдачу не попадали папки-группы.

execute_query — готовый запрос на языке запросов 1С

Зачем: мощный путь, когда query мало. Принимает готовый текст запроса на языке запросов 1С и поддерживает соединения, группировки (СГРУППИРОВАТЬ ПО), агрегаты (СУММА, КОЛИЧЕСТВО, …), сортировку (УПОРЯДОЧИТЬ ПО … УБЫВ), вложенные запросы, разыменование через точку (Товары.Номенклатура.Наименование).

Параметры:

  • query (обязательный) — текст запроса (только чтение — язык запросов 1С не меняет данные).
  • parameters — значения параметров запроса (имя -> значение для &Имя в тексте). Даты передавайте строкой ГГГГ-ММ-ДД; для списков (В (&П)) — массив.
  • limit — максимум строк (по умолчанию 100, максимум 1000).

Пример (топ-5 товаров по сумме продаж — группировка + агрегат + сортировка):

{"query":"ВЫБРАТЬ ПЕРВЫЕ 5 Товары.Номенклатура.Наименование КАК Товар, СУММА(Товары.Сумма) КАК Сумма ИЗ Документ.РеализацияТоваровУслуг.Товары КАК Товары СГРУППИРОВАТЬ ПО Товары.Номенклатура.Наименование УПОРЯДОЧИТЬ ПО Сумма УБЫВ"}

Пример (с параметром-датой):

{"query":"ВЫБРАТЬ ПЕРВЫЕ 20 Ссылка, Дата ИЗ Документ.РеализацияТоваровУслуг ГДЕ Дата >= &Начало",
 "parameters":{"Начало":"2026-01-01"}}

reveal — расшифровка обезличенных данных

Зачем: показать пользователю реальные значения вместо токенов анонимизации. Персональные данные в ответах query/execute_query по умолчанию обезличены токенами вида [ОРГ-00001] (см. раздел Анонимизация персональных данных). Когда агент готов отдать итоговый ответ человеку, он прогоняет текст через reveal — и токены меняются на реальные имена/реквизиты.

  • Параметр text (обязательный) — текст с токенами (обычно это финальный ответ для пользователя).
  • В ответе — тот же текст, где известные токены заменены реальными значениями (неизвестные остаются как есть).

Пример: {"text":"Больше всего продаж у [ОРГ-00007] — 1 200 000 руб."} -> "Больше всего продаж у ООО \"Ромашка\" — 1 200 000 руб.".

ping — проверка связи

Зачем: убедиться, что сервер на связи. Без параметров, возвращает «pong».


5. Типовой порядок работы

Самый надёжный маршрут для агента (особенно если конфигурация незнакома):

config (что за база: конфигурация, версия, расширения, бизнес-разделы)
  -> describe (найти объект: find по всей базе / subsystem по разделу / type+filter)
    -> get_structure (получить точные имена таблиц/полей и значения перечислений)
      -> query (простое чтение) ИЛИ execute_query (сложная выборка)
        -> reveal (по итогу — показать пользователю реальные значения вместо токенов)

Принцип: сначала узнать структуру, потом запрашивать — не выдумывать имена полей, а брать их из get_structure. Последний шаг reveal нужен, только если в данных были персональные значения (токены) и их надо показать человеку в открытом виде.


6. Примеры «запрос пользователя -> как решает агент»

Ниже — реальные простые формулировки и как их закрывает агент.

«Покажи 10 товаров, у которых в названии есть “масло”. Наименование и артикул.» -> get_structure object=Справочник.Номенклатура (узнать имена полей) -> query со filters: contains по «Наименование». Результат — список товаров.

«Сколько у нас товаров на складах сейчас? Товар, склад, количество — 15 строк.» -> get_structure object=РегистрНакопления.ТоварыНаСкладах (увидеть виртуальную таблицу .Остатки и поле ВНаличииОстаток) -> query table=…Остатки, поля Номенклатура/Склад/ВНаличииОстаток, limit:15.

«Какие бывают значения у поля “налогообложение НДС” в реализации, и сколько документов по каждому?» -> get_structure object=Документ.РеализацияТоваровУслуг (поле НалогообложениеНДС со списком значений и понятными синонимами) -> execute_query с СГРУППИРОВАТЬ ПО этому полю и КОЛИЧЕСТВО(*).

«Какие 5 товаров продали на самую большую сумму?» -> get_structure object=Документ.РеализацияТоваровУслуг (узнать табличную часть «Товары» и поле «Сумма») -> execute_query с СУММА(...), СГРУППИРОВАТЬ ПО, УПОРЯДОЧИТЬ ПО … УБЫВ, ВЫБРАТЬ ПЕРВЫЕ 5.

«Покажи последние 20 строк проданных товаров: товар, количество, цена, сумма.» -> query table=Документ.РеализацияТоваровУслуг.Товары (или execute_query, если нужно отобрать только проведённые и отсортировать по дате документа).


7. Что приходит в ответе

Инструменты чтения (query, execute_query) возвращают единый, удобный для агента формат:

  • Таблица — какую таблицу читали (для execute_query пусто).
  • Колонки — список колонок с типами (имя + тип, ссылки показаны полным именем типа).
  • Строки — сами данные (значение по каждому полю; ссылки на объекты показаны представлением). Персональные данные при этом обезличены токенами ([ОРГ-00001] и т. п.) — подробнее в разделе Анонимизация персональных данных.
  • КоличествоСтрок — сколько строк вернулось.
  • Лимит — действующий лимит.
  • ЕстьЕщёtrue, если в базе есть ещё строки сверх показанных (можно дочитать через offset).

Инструменты осмотра (describe, get_structure) возвращают структуру: категории/объекты/таблицы/поля с типами, видами и синонимами (а для перечислений — значения с синонимами).

Если что-то пошло не так (неверное поле, битый запрос, нет объекта) — приходит понятное сообщение об ошибке с подсказкой, а не пустой/битый результат.


8. Анонимизация персональных данных

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

Как это выглядит

Вместо реального значения в ответе стоит токен вида [КАТЕГОРИЯ-НОМЕР]:

Категория Что обезличивает Пример токена
ФЛ физлица, сотрудники, пользователи, ФИО [ФЛ-00001]
ОРГ контрагенты, организации [ОРГ-00007]
ИНН, КПП, СНИЛС, ПАСПОРТ соответствующие реквизиты [ИНН-00003]
ТЕЛ, ПОЧТА, АДРЕС телефон, email, адрес [ТЕЛ-00002]

Принципы:

  • Стабильность. Одно и то же значение всегда получает один и тот же токен. Если контрагент «ООО Ромашка» — это [ОРГ-00007], то он будет [ОРГ-00007] и в списке продаж, и в остатках, и завтра. Агент может сравнивать, группировать, сопоставлять строки — связи между данными сохраняются.
  • Суммы и числа не трогаем. Обезличиваются только персональные данные. Деньги, количества, даты остаются как есть — иначе аналитика стала бы бесполезной.
  • Карта соответствий — внутри вашей базы. Связка «токен U96; реальное значение» хранится в самой базе 1С (там, где данные и так лежат). Наружу, в ИИ-модель, уходят только токены.
  • Карта заполняется сама. Это служебный регистр сведений «MCP:RSV Data — карта анонимизации». На чистой базе он пустой и наполняется автоматически по мере чтения данных: встретилось новое персональное значение — для него завели токен. Вручную туда ничего вносить не нужно и чистить не требуется — это внутренний кэш, поэтому в инструментах/справке агента он и не фигурирует.

Что это значит на практике: увижу ли я реальное название?

Допустим, вы просите агента: «по каким контрагентам у нас было больше всего продаж».

  • 1.Агент строит запрос (группировка по контрагенту + сумма) и получает из базы строки уже с токенами: [ОРГ-00007] — 1 200 000, [ОРГ-00012] — 950 000. Реального названия агент не видит вообще — оно не покинуло вашу базу.
  • 2.Поэтому в первый момент агент может ответить только в токенах: «больше всего у [ОРГ-00007]».
  • 3.Чтобы показать вам реальное имя, агент прогоняет свой итоговый ответ через инструмент reveal. Тот локально в базе меняет [ОРГ-00007] -> «ООО Ромашка» и возвращает уже расшифрованный текст. После этого агент пишет: «больше всего продаж у ООО Ромашка — 1 200 000 руб.».

Главная идея: весь анализ ИИ-модель делает на обезличенных данных (вся выборка — токены, в облако ИИ реальные ПДн не утекают). Реальные значения появляются только на самом последнем шаге — reveal — и только для тех значений, которые вы действительно захотели увидеть.

Честная оговорка. На шаге reveal расшифрованное имя попадает в ответ агента, то есть на этом последнем шаге модель его всё-таки видит. reveal снижает утечку до минимума (несколько имён в финале вместо всей выгрузки), но не делает её абсолютным нулём, если вы сами попросили показать имена. Нужна полная слепота модели — не используйте reveal и работайте с токенами.

Drill-down: уточнение по токену

Токен можно вернуть серверу обратно как значение отбора или параметра запроса — сервер сам подставит реальное значение. Это позволяет агенту углубляться в данные, не зная реальных имён. Например, агент увидел [ОРГ-00007] в сводке и хочет его документы:

{"table":"Документ.РеализацияТоваровУслуг",
 "filters":[{"field":"Контрагент","comparison":"equal","value":"[ОРГ-00007]"}]}

Сервер распознает токен, подставит реального контрагента и вернёт его документы (тоже обезличенные).

Как это настраивается

  • Включено по умолчанию. Делать ничего не нужно — защита работает сразу после установки расширения.
  • Глобальное выключение. Если для конкретной базы анонимизация не нужна (например, закрытый контур без передачи данных наружу), её можно отключить — установить значение «Истина» у константы «MCP:RSV Data — анонимизация отключена» (RSVData_АнонимизацияОтключена). Тогда инструменты отдают реальные значения как есть. По умолчанию константа выключена — то есть анонимизация работает.
  • Что считается персональными данными — определяется встроенным словарём (см. ниже). Он подобран под типовые конфигурации и работает «из коробки», менять ничего не требуется.

Что считается персональными данными (встроенный словарь)

Распознавание идёт по трём правилам, по порядку — от самого надёжного к запасному:

  • 1.По типу ссылки. Если значение — ссылка на объект, сервер смотрит, на какой это справочник, и сверяет со встроенным списком:
    • ФЛ (физлица): ФизическиеЛица, ФизЛица, Сотрудники, Пользователи, ВнешниеПользователи, Кандидаты, КонтактныеЛица;
    • ОРГ (организации): Контрагенты, Организации, Партнёры.

Это самый точный способ: платформа сама сообщает, на какой справочник ссылка, — угадывать не нужно.

  • 2.По имени реквизита. Для не-ссылочных полей смотрится имя колонки: ИНН, КПП, СНИЛС, паспорт, телефон/phone, email/почта, адрес/address, ФИО/фамилия/имя/отчество.
  • 3.По самому значению (запасное, только для строк). Если строка целиком похожа на email (…@…), ИНН (10/12 цифр) или телефон (с +, скобками или 11 цифр на 7/8) — она маскируется, даже если колонка названа нейтрально.

Если ни одно правило не сработало — значение отдаётся как есть (поэтому номенклатура, суммы, артикулы, коды и номера не обезличиваются).

Ограничение текущей версии. Словарь справочников (правило 1) подобран под типовые конфигурации. Если в вашей базе самописный справочник людей или контрагентов с нестандартным именем (например, СотрудникиФилиала), его ссылки правилом 1 не распознаются. Контактные данные (телефон/email/ИНН и т. п.) при этом всё равно ловятся правилами 2–3 — независимо от конфигурации. В следующем релизе появится интерактивное редактирование словаря: администратор сможет прямо в базе добавлять свои справочники и реквизиты в список персональных данных (и убирать лишние) — без правки кода. Встроенные значения останутся как разумные значения по умолчанию.

Чем это лучше других решений

Многие аналоги обезличивают данные «угадыванием по тексту» (распознавание сущностей в строках), для чего нужен внешний модуль на Python. MCP:RSV Data поступает иначе: он знает тип каждого поля (потому что читает данные через систему компоновки), и определяет персональные данные по структуре, а не по догадке. Это надёжнее, не требует ничего внешнего и одинаково работает на любой конфигурации.


9. query или execute_query — что выбрать

Хочу… Инструмент
Прочитать одну таблицу с отбором/сортировкой, без знания языка запросов query
Остатки/обороты регистра на дату query (виртуальная таблица + period)
Сгруппировать, посчитать итоги (СУММА/КОЛИЧЕСТВО), соединить таблицы, топ-N execute_query
Сложная аналитика, вложенные запросы, разыменование через точку execute_query

Простое правило: обычное чтение — query; аналитика и соединения — execute_query.


10. Безопасность и ограничения

  • Только чтение. Все инструменты читают данные и не изменяют базу.
  • Анонимизация ПДн из коробки. Персональные данные по умолчанию обезличены токенами и не уходят в ИИ-модель в открытом виде (см. раздел Анонимизация персональных данных).
  • Права пользователя. Возвращается только то, что доступно текущему пользователю на чтение — объект без права чтения не отдаётся.
  • Ограничение объёма. У выборок есть лимит строк (по умолчанию 100, максимум 1000), чтобы случайно не выгрузить всю базу. Постранично — через offset.
  • Понятные отказы. Неверное имя поля/объекта или синтаксически неверный запрос дают объяснимую ошибку, а не молчаливый сбой.

11. Частые вопросы

Агент покажет мне реальное название контрагента или только токен? По умолчанию из базы приходят токены ([ОРГ-00007]) — реальное имя в ИИ-модель не уходит. Чтобы увидеть настоящее название, агент прогоняет итоговый ответ через инструмент reveal, и токены меняются на реальные значения. То есть да, увидите — но реальные имена появляются только на финальном шаге, а не во время анализа. Подробно — в разделе Анонимизация персональных данных.

Можно ли отключить анонимизацию? Да, для конкретной базы — через константу «MCP:RSV Data — анонимизация отключена». По умолчанию она работает (это стандарт защиты).

Нужно ли агенту знать язык запросов 1С? Для query — нет, он описывает данные параметрами. Для execute_query — да, туда передаётся готовый текст запроса (это «мощный путь» для сложных выборок).

Откуда агент берёт точные имена таблиц и полей? Из get_structure (весь объект за один вызов) или из describe (по шагам). Угадывать не нужно.

Будет ли работать на моей конфигурации? Да. Сервер опирается на метаданные конкретной базы, а не на заранее прописанные имена, поэтому работает на любой конфигурации.

А поменять данные / код / форму можно? Нет — это инструмент чтения данных и структуры. Для разработки в 1С:EDT (создание и редактирование кода, метаданных, форм, отладка) есть отдельный платный продукт — MCP:RSV Server.


P.S. Это расширение целиком создано искусственным интеллектом

Небольшая ремарка по теме ИИ-разработки. Расширение MCP:RSV Data — и серверную логику, и эту поставку — от начала до конца создал ИИ-агент. Программист-человек не написал вручную ни строчки кода и не создал руками ни одного объекта метаданных. ИИ-агент сам:

  • создал само расширение конфигурации и его объекты — HTTP-сервис, общие модули, подсистему;
  • написал весь код на встроенном языке 1С;
  • проверил написанный код через инструмент код-ревью.

Для всей этой работы — от создания объектов метаданных до написания и проверки BSL-кода — использовался MCP:RSV Server — специальный MCP-сервер для разработки в 1С:EDT (отдельный платный продукт). Иными словами, сложную разработку в 1С — вплоть до создания метаданных, HTTP-сервисов, модулей и целого расширения — сегодня реально вести полностью силами ИИ-агента.

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

MCP сервер AI 1С искусственный интеллект 1С данные 1С чтение данных 1С Claude 1С Cursor 1С MCP протокол AI ассистент для 1С запросы к базе 1С остатки 1С отчёты 1С расширение конфигурации 1С язык запросов 1С аналитика 1С бесплатный инструмент 1С AI агент 1С интеграция 1С с AI выгрузка данных 1С чтение базы 1С

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

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

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

15250 руб.

25.08.2025    59313    121    36    

130

Нейросети Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

Расширение "Искусственный интеллект и нейросети в 1С: Работа с отзывами маркетплейсов" предназначено для применения искусственного интеллекта в повседневной деятельности селлеров на маркетплейсах. Среди функций - работа с отзывами, вопросами и чатами покупателей, диалог с нейросетями, генерация картинок, заполнение описаний номенклатуры и другое.

6100 руб.

03.04.2024    15864    8    0    

12

Нейросети Бесплатно (free)

ИИ-агенты в корпоративной разработке 1С: почему инициатива исходит снизу, а не сверху.

17.06.2026    3140    Junior_1C    31    

10

Нейросети Программист Бесплатно (free)

Как мы пришли к ИИ для 1С и что из этого вышло. Расскажу, как мы собираем ИИ-платформу для работы с учетными данными. Зачем нам понадобился MCP, как мы связали его с 1С:Шина, почему уперлись в права доступа и как в итоге устроили агента внутри 1С. Также покажу, где видим место для skills, RAG и OCR, и что пока не стали отдавать модели на самостоятельное выполнение.

15.06.2026    5971    romansun    30    

19

Нейросети Бесплатно (free)

Разбираемся, почему ИИ-агенты теряют контекст, путаются в инструментах и возвращают неполный результат, если всю задачу пытаться решить одним большим промптом. Показываем, как цепочки пошаговых промптов помогают сделать работу агента повторяемой: каждый шаг выполняет одно действие, имеет понятный вход и выход, отдельно проверяется и при необходимости исправляется. Объясняем, как применять этот подход в задачах 1С: анализировать действия пользователя, подбирать инструкции через RAG, работать с журналом регистрации, MCP-инструментами и локальными моделями. На примерах показываем, как снизить непредсказуемость ИИ-агента и превратить его из «угадывающего помощника» в надежный инструмент для бизнес-процессов.

11.06.2026    817    Exalter    1    

6

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

Кажется, что code-review с помощью искусственного интеллекта устроено просто: достаточно отправить код в LLM, задать промт и получить список замечаний. На практике такой подход быстро упирается в недетерминированность результата, неверную оценку критичности ошибок в 1С-коде и рекомендации, которые сложно отличить от полезных замечаний. Описываем гибридный подход к автокод-ревью: статический анализатор работает вместе с LLM, а база знаний из стандартов 1С превращается в набор машиночитаемых норм. Такая архитектура помогает снизить количество галлюцинаций, точнее определять критичность нарушений и постепенно развивать качество ревью через итеративное пополнение правил.

09.06.2026    1216    Repich    5    

9

Нейросети Программист Бесплатно (free)

За десять дней после релиза OneBase получила полноценные управляемые формы, локализацию интерфейса на 14 языков, точную денежную арифметику на decimal, систему ролей и прав, новый REST API и набор CLI-инструментов для разработки совместно с ИИ. Разбираю ключевые изменения платформы, показываю новые возможности и делюсь результатами одной из самых насыщенных недель развития проекта.

05.06.2026    2072    Ibrogim    51    

20

Нейросети Обновление 1С Бесплатно (free)

Когда доработанную 1С не обновляли годами, начинать приходится не с переноса кода, а с разбора того, что вообще накопилось в базе. Там могут быть десятки обработок, расширения, правки типовых объектов, а документации либо нет, либо она давно не актуальна. На примере реального обновления разбираем, как кодовые агенты, MCP-серверы и языковые модели помогают навести порядок в доработках, собрать план миграции, понять, где при переносе будут проблемы, и автоматизировать часть исправлений.

05.06.2026    4044    wonderboy    6    

25
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Salimbek 13 22.06.26 12:39 Сейчас в теме
А как пройдет анонимизация для запроса вида: "Покажи Телефонные номера сотрудников, ФИО которых начинается с Иванов"? (т.е. в запросе должно превратиться в ПОДОБНО "Иванов%") "Иванов" - превратится в токен?
2. Prepod2003 339 22.06.26 13:28 Сейчас в теме
(1)
А как пройдет анонимизация для запроса вида: "Покажи Телефонные номера сотрудников, ФИО которых начинается с Иванов"? (т.е. в запросе должно превратиться в ПОДОБНО "Иванов%") "Иванов" - превратится в токен?


Нет, «Иванов» в токен не превращается — поиск работает как обычно.

На вашем примере «покажи телефоны сотрудников, чьё ФИО начинается с Иванов» происходит вот что:

1. «Иванов» — это ваше поисковое слово. Оно уходит в базу как есть и находит нужных людей (обычный отбор «начинается с Иванов»). Ничем не заменяется.

2. Обезличиваются только найденные данные. ИИ-агент получает в ответ не реальные ФИО и телефоны, а метки-заглушки, например:
[ФЛ-00020] — [ТЕЛ-00004]
[ФЛ-00021] — [ТЕЛ-00005]
То есть сама нейросеть реальных номеров и фамилий не видит.

3. Реальные значения можно подставить в самом конце — это отдельный шаг (инструмент reveal), когда ответ показывается вам:
Иванов Иван Иванович — +7 (111) 111-11-11
Иванова Мария Петровна — +7 (111) 222-33-44

При этом шаг 3 — необязательный. Если reveal не вызывать, вы просто получите данные с метками ([ФЛ-…] — [ТЕЛ-…]), и реальные ФИО с телефонами вообще нигде не всплывут. reveal нужен только тогда, когда вы сами хотите увидеть настоящие значения.

Итог: вы ищете по тому, что и так знаете (фамилия «Иванов»), а всё, что выгружается из базы (чужие ФИО, телефоны, СНИЛС и т. п.), уходит к ИИ обезличенным. Хотите — оставляете метки, хотите — одним шагом разворачиваете их в реальные данные. Решаете вы.
3. gybson 13 22.06.26 21:18 Сейчас в теме
Было бы очень полезно приложить скилл для использования данного mpc.
Defender ругается на архив, не дает распаковать. Если продукт все-равно бесплатный, выложите исходники расширения в гит
7. pro100_Cooler 23.06.26 09:17 Сейчас в теме
Интересно было бы внедрить данный инструмент в локальную закрытую сеть для поиска данных в базе , второй день бьюсь и не могу заставить нормально работать LibreChat Qwen 3.32b Ollama, качество ответов в разы ниже чем у Cursor (оно и понятно и очевидно) , но вроде бы простой инструмент а LLM все равно как то некорректно работает с ним. (Не эксперт в ИИ просто учусь экспериментирую)
8. Prepod2003 339 23.06.26 09:32 Сейчас в теме
(7) Локальные модели не подходят для таких задач - слишком слабые.
Для отправки сообщения требуется регистрация/авторизация