MCP:RSV Data — пользовательское описание
Что это. Бесплатный MCP-сервер, который даёт ИИ-агенту (Claude, Cursor и др.) читать данные рабочей базы 1С простыми словами: остатки, документы, справочники, регистры. Агенту не нужно знать язык запросов 1С — он описывает, что хочет, а сервер сам строит запрос. Работает на любой конфигурации и отдаёт только то, что доступно текущему пользователю на чтение.
Содержание
- •1. Что это и зачем
- •2. Скачать, установить и подключить
- •3. Как агент понимает, что доступно (три уровня подсказок)
- •4. Инструменты — простым языком
- •5. Типовой порядок работы
- •6. Примеры «запрос пользователя -> как решает агент»
- •7. Что приходит в ответе
- •8. Анонимизация персональных данных
- •9. query или execute_query — что выбрать
- •10. Безопасность и ограничения
- •11. Частые вопросы
- •P.S. Это расширение целиком создано искусственным интеллектом
Это руководство объясняет, как всё устроено и как агент получает данные, на простом языке и с примерами. Оно описывает то, что есть в продукте сейчас.
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
- •Репозиторий на GitHub (исходники моста, лицензия MIT): github.com/prepod2003/mcp-rsv-data
В архиве 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 не распознаются. Контактные данные (телефон/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-сервисов, модулей и целого расширения — сегодня реально вести полностью силами ИИ-агента.
Вступайте в нашу телеграмм-группу Инфостарт