Синтакс-помощник 1С как MCP-инструмент: индекс из справки платформы и сервер на Python SDK

01.10.26

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

Как собрать поисковую базу из shcntx_ru.hbk и отдать её ИИ-агенту через MCP: 21 554 записи о методах, свойствах и событиях платформы, индексация 7 секунд, сервер на Python. Прогон на платформе 8.3.27.2130 и MCP SDK 2.2.0, есть проверочный клиент и скрипт проверки имён.
КДПВ: Синтакс-помощник 1С как MCP-инструмент: индекс из справки платформы и сервер на Python SDK
🧠 AI, Нейросети & MCP

Для кого: программисты 1С, которые пишут код с ИИ-агентом (Cursor, Claude Code) и устали проверять выдуманные методы вручную.

🎯 О ЧЁМ СТАТЬЯ ЗА 60 СЕКУНД

Справка платформы (файл shcntx_ru.hbk) читается стандартной библиотекой Python и превращается в базу SQLite с полнотекстовым поиском: 21 554 записи о методах, свойствах и событиях. Сервер на MCP SDK 2.2.0 (класс MCPServer вместо FastMCP) отдаёт её ИИ-агенту как инструмент. Выдуманные имена сервер отсекает ответом «нет в справке». Прогнано на платформе 8.3.27.2130. Подключение к Cursor и Claude Code описано по документации, не запускалось.

Модель отвечает про 1С уверенно и часто ошибается в именах. При вычитке черновиков для этого цикла статей в тексте встретился метод СоединитьИнформационнуюБазу. В справке платформы такого метода нет. Проверка занимает секунды, если справка лежит в базе, которую агент может спросить сам.

Идея сверять ответ модели со справкой платформы не моя: на Infostart её уже реализовали несколько авторов, список с отличиями - в разделе «Источники и чем эта статья отличается». Здесь я показываю свою минимальную сборку: два файла на Python и SQLite, каждый шаг с выводом прогона. Весь код в статье написан для неё и прогнан на стенде, чужой код не заимствовался.

📦 Где лежит справка и что внутри

Синтакс-помощник платформы хранится в файлах *.hbk рядом с 1cv8.exe. Содержимое контекста (методы, свойства, события, типы) лежит в shcntx_ru.hbk. На платформе 8.3.27.2130 это файл размером 40 758 131 байт по пути C:\Program Files (x86)\1cv8\8.3.27.2130\bin\shcntx_ru.hbk.

Формат .hbk 1С не документирует; тот же файл разбирают и авторы публикаций из списка источников, но их код я не использовала. Устройство, которое я увидела при чтении файла байт за байтом: заголовок, таблица документов и документ FileStorage, внутри которого обычный ZIP со страницами HTML. В этом ZIP на нашей платформе 52 064 файла. Страниц методов 7 199, свойств 13 662, событий 693. Остальное - описания типов, служебные файлы и картинки.

Одна страница метода выглядит в HTML так: заголовок СправочникМенеджер.<Имя справочника>.ПолучитьСсылку, разделы «Синтаксис», «Параметры», «Возвращаемое значение», «Описание», «Доступность», версия. Из этих разделов и собирается запись индекса.

🧱 Индексатор

Скрипт hbk_index.py читает контейнер стандартной библиотекой Python (без сторонних пакетов), достаёт ZIP из FileStorage, разбирает страницы регулярными выражениями и складывает записи в SQLite с полнотекстовым индексом FTS5.

Python UTF-8 Открыть файл
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
"""Строит поисковую базу SQLite (FTS5) из справки синтакс-помощника платформы 1С.

Использование:
    python hbk_index.py "C:\\Program Files (x86)\\1cv8\\8.3.27.2130\\bin\\shcntx_ru.hbk" syntax.db

Файл shcntx_ru.hbk - контейнер платформы: заголовок, таблица документов, среди них FileStorage,
внутри которого обычный ZIP со страницами справки (objects/.../methods/*.html). Читаем без внешних библиотек.
Индексируются методы, свойства и события; для каждой страницы берутся заголовок, синтаксис, параметры,
возвращаемое значение, описание, версия и доступность. Текст справки остаётся в вашей базе на вашей машине.
"""
import html
import io
import re
import sqlite3
import struct
import sys
import zipfile

INF = 0x7FFFFFFF


def read_doc(f, addr):
    """Документ контейнера: заголовок '\\r\\n%08x %08x %08x \\r\\n' (размер, размер страницы, следующая страница) и данные."""
    f.seek(addr)
    h = f.read(31)
    size, page, nxt = int(h[2:10], 16), int(h[11:19], 16), int(h[20:28], 16)
    out, need = b"", size
    take = min(page, need)
    out += f.read(take)
    need -= take
    while need > 0 and nxt != INF:
        f.seek(nxt)
        h = f.read(31)
        page, nxt = int(h[11:19], 16), int(h[20:28], 16)
        take = min(page, need)
        out += f.read(take)
        need -= take
    return out


def open_storage(path):
    f = open(path, "rb")
    toc = read_doc(f, 16)  # таблица документов: тройки int32 (адрес заголовка, адрес тела, 0x7fffffff)
    docs = {}
    for i in range(0, len(toc) - 11, 12):
        head_addr, body_addr, _ = struct.unpack("<iii", toc[i:i + 12])
        name = read_doc(f, head_addr)[20:].decode("utf-16le", "replace").rstrip("\x00")
        docs[name] = body_addr
    return zipfile.ZipFile(io.BytesIO(read_doc(f, docs["FileStorage"])))


CHAPTER = re.compile(r'<p class="V8SH_chapter">(.*?)</p>', re.S)


def text(fragment):
    fragment = re.sub(r"<br\s*/?>|</p>|</div>|</li>|(?=<div)", "\n", fragment)
    fragment = re.sub(r"<[^>]+>", "", fragment)
    fragment = html.unescape(fragment).replace("\xa0", " ")
    return re.sub(r"\n\s*\n+", "\n", fragment).strip()


def parse(page):
    m = re.search(r'<h1 class="V8SH_pagetitle">(.*?)</h1>', page, re.S)
    if not m:
        return None
    title = text(m.group(1))
    parts = CHAPTER.split(page)
    chapters = {text(parts[i]).rstrip(":"): text(parts[i + 1]) for i in range(1, len(parts) - 1, 2)}
    since = re.search(r'<p class="V8SH_versionInfo">(.*?)</p>', page, re.S)
    return {
        "title": title,
        "syntax": chapters.get("Синтаксис", ""),
        "params": chapters.get("Параметры", ""),
        "returns": chapters.get("Возвращаемое значение", ""),
        "description": chapters.get("Описание", ""),
        "availability": chapters.get("Доступность", ""),
        "note": chapters.get("Примечание", ""),
        "since": text(since.group(1)) if since else "",
    }


def build(hbk, db_path):
    z = open_storage(hbk)
    db = sqlite3.connect(db_path)
    db.executescript("""
        DROP TABLE IF EXISTS entries; DROP TABLE IF EXISTS entries_fts;
        CREATE TABLE entries(id INTEGER PRIMARY KEY, kind TEXT, name_lc TEXT, title TEXT, syntax TEXT, params TEXT,
                             returns TEXT, description TEXT, availability TEXT, note TEXT, since TEXT, path TEXT);
        CREATE INDEX entries_name ON entries(name_lc);
        CREATE VIRTUAL TABLE entries_fts USING fts5(title, description, tokenize='unicode61');
    """)
    n = 0
    for name in z.namelist():
        m = re.search(r"/(methods|properties|events)/(?:[^/]+/)*[^/]+\.html$", name)
        if not m:
            continue
        e = parse(z.read(name).decode("utf-8-sig", "replace"))
        if not e:
            continue
        short = e["title"].split(" (")[0].rsplit(".", 1)[-1].lower()  # имя без типа-владельца, регистр приведён в Python: lower() в SQLite кириллицу не понимает
        cur = db.execute("INSERT INTO entries(kind,name_lc,title,syntax,params,returns,description,availability,note,since,path) "
                         "VALUES(?,?,?,?,?,?,?,?,?,?,?)",
                         (m.group(1), short, e["title"], e["syntax"], e["params"], e["returns"], e["description"],
                          e["availability"], e["note"], e["since"], name))
        db.execute("INSERT INTO entries_fts(rowid,title,description) VALUES(?,?,?)", (cur.lastrowid, e["title"], e["description"]))
        n += 1
    db.commit()
    return n


if __name__ == "__main__":
    print("записей:", build(sys.argv[1], sys.argv[2]))

Запуск и результат на нашей машине (Windows 11, Python 3.12, SQLite 3.49.1):

python hbk_index.py "C:\Program Files (x86)\1cv8\8.3.27.2130\bin\shcntx_ru.hbk" syntax.db
записей: 21554

Индексация заняла около 7 секунд, база syntax.db весит около 39 МБ (39 481 344 байта). Записей 21 554 против 21 554 страниц методов, свойств и событий: каждая страница попала в базу.

Две детали, которые стоило проверить. Функция SQLite lower() не приводит кириллицу к нижнему регистру, поэтому имя для точного поиска (name_lc) приводится к нижнему регистру в Python. Глобальные функции лежат глубже остальных (objects/Global context/methods/catalog4838/StrFind4836.html), и регулярное выражение для путей должно допускать вложенные каталоги. В первой версии скрипта этого не было, и СтрНайти в базе отсутствовала.

🔌 Сервер MCP

В MCP SDK 2.x класс FastMCP переименован в MCPServer, а импорт изменился: from mcp.server.mcpserver import MCPServer. Примеры с from mcp.server.fastmcp import FastMCP на свежей установке pip install mcp падают с ModuleNotFoundError. Есть два выхода: ставить mcp<2 и оставить старый код, либо писать под версию 2. Ниже версия 2 (проверено на mcp 2.2.0).

Инструмент у сервера один - find_syntax(name). Порядок поиска такой: сначала строка с точно таким name_lc, затем префиксный поиск FTS5 по заголовкам страниц, всего не больше пяти записей. Если ни одна ветка ничего не вернула, сервер отвечает фразой «нет записей», и агент получает явный отказ. Проверки выражений целиком (число аргументов, значения перечислений) здесь нет: это умеет bsl-context из списка источников.

Python UTF-8 Открыть файл
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
"""MCP-сервер поиска по справке синтакс-помощника 1С (данные - syntax.db из hbk_index.py).

Запуск:  python syntax_mcp.py syntax.db          (stdio; клиент запускает процесс сам)
Зависимость: mcp>=2 (в версии 2 класс FastMCP переименован в MCPServer).
"""
import re
import sqlite3
import sys

from mcp.server.mcpserver import MCPServer

DB = sqlite3.connect(sys.argv[1] if len(sys.argv) > 1 else "syntax.db", check_same_thread=False)
DB.row_factory = sqlite3.Row
mcp = MCPServer("1c-syntax-helper")


def _fts_query(text: str) -> str:
    words = re.findall(r"\w+", text, re.U)
    return " ".join(f'"{w}"*' for w in words)


@mcp.tool()
def find_syntax(query: str, limit: int = 5) -> str:
    """Ищет метод, свойство или событие платформы 1С в справке синтакс-помощника.

    query - имя или часть имени на русском или английском, например «СтрНайти» или «ПолучитьСсылку».
    Возвращает синтаксис, параметры, версию и доступность. Пустой ответ означает, что такого имени в справке нет.
    """
    q = _fts_query(query)
    if not q:
        return "Пустой запрос."
    limit = max(1, min(limit, 20))
    # сначала точное совпадение имени, затем поиск по началу слов в заголовке
    rows = DB.execute("SELECT * FROM entries WHERE name_lc = ? LIMIT ?", (query.strip().lower(), limit)).fetchall()
    if len(rows) < limit:
        seen = {r["id"] for r in rows}
        rows += [r for r in DB.execute(
            "SELECT e.* FROM entries_fts JOIN entries e ON e.id = entries_fts.rowid "
            "WHERE entries_fts MATCH ? ORDER BY rank LIMIT ?", (f"title : ({q})", limit)).fetchall()
            if r["id"] not in seen][: limit - len(rows)]
    if not rows:
        return f"В справке синтакс-помощника нет записей по запросу «{query}»."
    out = []
    for r in rows:
        out.append(
            f"{r['title']}\nСинтаксис: {r['syntax']}\n{r['since']}\nДоступность: {r['availability']}\n"
            f"Параметры:\n{r['params']}\nВозвращает: {r['returns']}\nОписание: {r['description'][:600]}"
        )
    return "\n\n---\n\n".join(out)


if __name__ == "__main__":
    mcp.run(transport="stdio")

🧪 Проверка клиентом SDK

Подключать агента вслепую не нужно: SDK содержит клиент, которым сервер проверяется отдельно. Скрипт test_client.py запускает сервер как подпроцесс по stdio, выводит список инструментов и делает четыре запроса.

Python UTF-8 Открыть файл
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"""Проверка сервера клиентом MCP SDK: python test_client.py syntax.db"""
import asyncio
import sys

from mcp import ClientSession
from mcp.client.stdio import StdioServerParameters, stdio_client

QUERIES = ["ПолучитьСсылку", "СтрНайти", "НачатьТранзакциюЗаписи", "НачатьТранзакцию"]


async def main(db):
    params = StdioServerParameters(command=sys.executable, args=[__file__.replace("test_client", "syntax_mcp"), db])
    async with stdio_client(params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            print("инструменты:", [t.name for t in tools.tools])
            for q in QUERIES:
                res = await session.call_tool("find_syntax", {"query": q, "limit": 2})
                text = res.content[0].text
                print("=" * 70, "\nЗапрос:", q, "| символов в ответе:", len(text))
                print(text[:700])


asyncio.run(main(sys.argv[1]))

Результат прогона (сокращён до начала ответов):

инструменты: ['find_syntax']
Запрос: ПолучитьСсылку
СправочникМенеджер.<Имя справочника>.ПолучитьСсылку (CatalogManager.<Catalog name>.GetRef)
Синтаксис: ПолучитьСсылку(<УникальныйИдентификатор>)
Доступен, начиная с версии 8.0.
Запрос: СтрНайти
Глобальный контекст.СтрНайти (Global context.StrFind)
Синтаксис: СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>)
Запрос: НачатьТранзакциюЗаписи
В справке синтакс-помощника нет записей по запросу «НачатьТранзакциюЗаписи».

Метод менеджера справочника называется ПолучитьСсылку(<УникальныйИдентификатор>). Метода Получить(УИД) у менеджера справочника в справке нет. Метода НачатьТранзакциюЗаписи тоже нет, есть глобальная НачатьТранзакцию(<РежимБлокировок>). Скрипт name_check.py проверяет имена пачкой:

python name_check.py syntax.db ПолучитьСсылку ПродолжитьВызов СоединитьИнформационнуюБазу
ПолучитьСсылку: найдено 10, например СправочникМенеджер.<Имя справочника>.ПолучитьСсылку (...)
ПродолжитьВызов: найдено 1, например Глобальный контекст.ПродолжитьВызов (Global context.ProceedWithCall)
СоединитьИнформационнуюБазу: нет в справке
Python UTF-8 Открыть файл
1
2
3
4
5
6
7
8
9
10
"""Проверка имён по базе справки: python name_check.py syntax.db Имя1 Имя2 ...
Печатает, есть ли такое имя метода, свойства или события и у каких типов."""
import sqlite3
import sys

db = sqlite3.connect(sys.argv[1])
for name in sys.argv[2:]:
    rows = db.execute("SELECT title FROM entries WHERE name_lc = ? LIMIT 3", (name.lower(),)).fetchall()
    total = db.execute("SELECT count(*) FROM entries WHERE name_lc = ?", (name.lower(),)).fetchone()[0]
    print(f"{name}: {'нет в справке' if not total else f'найдено {total}, например ' + rows[0][0]}")
21 554
Записей в справке
7 с
Индексация
53
Строки сервера MCP
2.2.0
MCP SDK

Замер автора: Windows 11, Python 3.12, SQLite 3.49.1, платформа 8.3.27.2130, справка shcntx_ru.hbk (40 758 131 байт), одна серия.

🧰 Подключение к Cursor и Claude Code

Настройки ниже взяты из документации Cursor и Claude Code; в самих редакторах я их не запускала. Для Cursor сервер описывается в .cursor/mcp.json проекта или в ~/.cursor/mcp.json:

JSON UTF-8 Открыть файл
1
2
3
4
5
6
7
8
{
  "mcpServers": {
    "1c-syntax-helper": {
      "command": "python",
      "args": ["C:/tools/syntax-mcp/syntax_mcp.py", "C:/tools/syntax-mcp/syntax.db"]
    }
  }
}

Для Claude Code сервер добавляется командой (после -- идёт команда запуска сервера):

claude mcp add --transport stdio 1c-syntax-helper -- python C:/tools/syntax-mcp/syntax_mcp.py C:/tools/syntax-mcp/syntax.db
claude mcp list

В обоих случаях python должен быть интерпретатором, в котором установлен пакет mcp (удобно указать полный путь к python.exe из виртуального окружения).

В инструкцию проекта (CLAUDE.md или правила Cursor) стоит добавить строку: «Перед тем как использовать метод платформы, которого нет в текущем коде, проверь его через find_syntax». Вызывает ли ваша модель инструмент сама и как часто, проверьте на своих задачах: этот замер в статье не проводился.

🚧 Что эта схема покрывает и что нет

  • Справка платформы содержит методы, свойства и события встроенных типов. Объекты вашей конфигурации (реквизиты справочника «Номенклатура», процедуры общих модулей) в ней не описаны. Для них нужен другой источник: выгрузка конфигурации в файлы.
  • Отсутствие имени в справке говорит, что имени нет среди методов, свойств и событий платформы. Директивы (&НаСервере, &Вместо), ключевые слова и конструкции языка запросов сюда не попадают: name_check.py не находит Вместо, Перем и Экспорт. Совпадения по чужим сущностям возможны (НаСервере находит свойство элемента плана глобального поиска, к директиве оно отношения не имеет), поэтому читайте, какому типу принадлежит найденное имя. Справка языка и запросов лежит в соседних файлах (shlang_ru.hbk, shquery_ru.hbk), скрипт их не читает и их содержимое не проверялось.
  • Тексты справки принадлежат 1С. База нужна для локальной работы на вашей машине, распространять её не стоит.
  • Разбор .hbk сделан по структуре файла, документации на формат нет. На другой версии платформы формат может отличаться, скрипт проверен только на 8.3.27.2130.

📚 Источники и чем эта статья отличается

Публикации на Infostart на ту же тему (прочитаны 30.09.2026):

Публикация Что делает Чем отличается эта статья
MCP-сервер для проверки ИИ-кода 1С на соответствие API платформы (Sorm, 26.05.2026) bsl-context: сервер на Rust читает shcntx_ru.hbk и проверяет фрагмент BSL целиком (validate_expression: несуществующие значения перечислений, число аргументов), подключение по HTTP Здесь только поиск имени по справке, зато весь код (200 строк Python в четырёх файлах) показан в статье и прогнан по шагам
1C Syntax MCP Server: Когда твой код не превращается в тыкву (starik-2005, 05.04.2026) Переводит shcntx_ru.hbk в JSON (около 52 000 записей) и отдаёт через MCP Здесь SQLite с FTS5 и сервер под MCP SDK 2.x
Синтакс-помощник 1С для нейросетей (malikov_pro, 01.09.2026) Готовый сервер со справкой для нескольких версий платформы Здесь одна версия платформы и минимальная реализация для самостоятельной сборки
Свой MCP-сервер для метаданных 1С (FSerg) Метаданные конфигурации из выгрузки XML, векторный поиск в Qdrant Метаданные конфигурации здесь не индексируются, только справка платформы

Документация, по которой писался сервер: миграция MCP Python SDK на версию 2.

🏁 Итог

Справка платформы превратилась в базу на 21 554 записи (7 секунд по секундомеру на нашем стенде), а сервер на 53 строках отдаёт её агенту по протоколу MCP. Выдуманные имена вроде СоединитьИнформационнуюБазу и НачатьТранзакциюЗаписи инструмент отсекает ответом «нет в справке». Расскажите в комментариях, какие выдуманные методы чаще всего приносит ваша модель: их можно добавить в проверочный список.

 
Нинель Адольевна Щербакова
Нинель Адольевна Щербакова (Ninel_S)
Архитектор • SRE & DevOps инженер • HighLoad 1С
Автор 28+ технических публикаций на Infostart. Разработчик NOPik, SRE-Suite-for-1C и мультиагентных ассистентов для экосистемы 1С:Предприятие.

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

MCP синтакс-помощник ИИ-агент Cursor Claude Code Python SQLite галлюцинации 1С 8.3

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

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

См. также

SALE! %

Банковские операции Обмен с интернет-банком Мастера заполнения Нейросети Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1C:ERP 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:ERP. Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)

Корректируйте банковские документы быстро и легко! Создайте правило обработки — и оно автоматически применится при загрузке выписки (отбор по любому реквизиту или регулярному выражению). Решение заполняет расшифровку платежа, комиссию эквайринга, подбирает ведомости на выплату зарплаты, помечает дубли из банка на удаление и многое другое. Доплачивать за алгоритмы не нужно — они включены в решение. Обработка работает при загрузке из файлов клиент-банка и через DirectBank. Новое — искусственный интеллект: модель приводит нестандартные назначения платежа к виду, понятному алгоритмам, а ИИ-ассистент прямо в 1С консультирует по решению и разбирает код правил и алгоритмов. Поддерживаются локальные и облачные OpenAI-совместимые модели — данные могут не покидать ваш контур.

17500 руб.

20.12.2024    19941    105    32    

86

SALE! %

Нейросети Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Задавайте вопросы базе 1С обычными словами: получайте данные, находите ошибки и связанные документы, проверяйте права, работайте с вложениями и контролируемо вносите изменения. Всё это работает в самой программе, а Codex и Claude подключаются по желанию.

16990 15770 руб.

30.07.2026    14376    30    4    

28

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

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

15250 руб.

25.08.2025    72106    143    41    

151

Распознавание документов и образов Нейросети 1С:Предприятие 8 1С 8.3 1С 8.5 1C:Бухгалтерия 1С:Зарплата и Управление Персоналом 3.x Беларусь Россия Казахстан Армения Платные (руб)

ИИ-сканер документов с REST API для интеграции с 1С и корпоративными системами. Извлекайте данные из счетов, паспортов, дипломов, патентов и трудовых книжек за секунды. Точность человека - скорость машины. Приложение поддерживает восемь типов документов, четырех провайдеров ИИ (имеется возможность использования локальных ИИ), локальный REST API и экспорт в JSON. Важно! модель должна поддерживать функцию Vision (распознавание файлов и картинок). Запускайте используя локальные ИИ, без подписок и ограничений

6100 руб.

24.08.2026    675    3    0    

1

Нейросети Разработчик 1С 8.3 Бесплатно (free)

Как устроен ИИ-агент, который работает в открытом сеансе пользователя 1С: показывает найденные документы в штатных списках, считает суммы типовыми отчётами, меняет данные только после подтверждения в форме предпросмотра и не передаёт модели персональные данные. Архитектура на MCP внутри тонкого клиента, приёмы и подводные камни, проверка на «Бухгалтерии предприятия 3.0».

28.09.2026    3634    oyti    35    

11

Инструментарий разработчика Нейросети Разработчик 1С:Предприятие 8 Абонемент ($m)

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

6 стартмани

24.09.2026    5236    8    Rafael-87    22    

12

Нейросети 1С:Управление торговлей 11 Бесплатно (free)

Я не считаю покупку специализированных платных инструментов обязательной для разработки с ИИ: нужную обвязку тоже можно создать с агентом. Показываю этот подход на расширении УТ 11 с динамическим списком остатков. Одно задание Codex, 37 минут до проверки, работающая форма. Рассказываю, как устроено окружение, почему первую попытку пришлось переснять и что получилось в повторном прогоне.

17.09.2026    6545    112    Ibrogim    71    

22

Нейросети Разработчик Руководитель проекта 1C:ERP Бесплатно (free)

Служба на Rust, через которую Claude Code, Cursor или другой MCP-клиент вызывает узких ИИ-агентов. Агент — папка с prompt.md и config.toml, модель — строка в конфиге: DeepSeek, Claude Code по подписке, Codex или локальная модель. Агент получает MCP-инструменты, работает в фоне, каждый ход записывается. Внутри — цифры за три месяца: 10 351 вызов, 78 агентов.

17.09.2026    2016    0    Sorm    43    

11
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gybson 13 01.10.26 17:15 Сейчас в теме
Аналогичное, но с семантическим поиском и БСП
1c-sntx-sem

Ну и с веб-клиентом для проверки поиска
2. Ninel_S 47 01.10.26 17:24 Сейчас в теме
(1) Спасибо, Коллега, за внимание к моему творчеству.
Я не поняла, простите, мой вариант - это полный аналог?
Я - плагиатор или так совпало?
Если "плагиат" - немедленно сообщу об этом нашим читателям.
"плюсик" здесь и "звезда" на github.com уже поставлены.
3. gybson 13 01.10.26 18:23 Сейчас в теме
(2) это решение из того же ряда, который Вы привели и у меня руки не доходят его представить на инфостарт, поэтому просто здесь упомянул, делюсь опытом.

Выгода от векторизации в том, что по строке "строку в массив", при хорошем семантическом поиске, получите и СтрРазделить и метод БСП.

Какой тут плагиат то, если LLM все пишет, а идея в воздухе висит.
4. Ninel_S 47 01.10.26 19:31 Сейчас в теме
Спасибо, Коллега. Вы правы дважды: идея в воздухе, и без ИИ не обошлось. Первый черновик выдал наш сервис nopikreport.com/api/ask, у него своя модель, которая выросла из общения со мной и коллегами. Дальше мы с коллегой и соавтором Claude, это как раз LLM, проверяли каждый шаг на стенде с платформой 8.3.27.2130.

Сервис открыт, ключ не нужен. Ваш же вопрос можно задать ему одной строкой:

curl -s -X POST https://nopikreport.com/api/ask -H "Content-Type: application/json; charset=utf-8" -d '{"question":"Как в 1С разложить строку в массив?"}'


Наши решения закрывают две половины одной задачи. Ваш семантический поиск отвечает на вопрос «каким методом это сделать»: по запросу «строку в массив» он находит СтрРазделить и метод БСП. Сервер из статьи отвечает на вопрос «существует ли такой метод» и говорит «нет записей», когда модель выдумала имя. Агенту нужны оба шага: сначала найти, потом проверить.

Предлагаю их соединить. Если вам интересно, прогоним оба сервера на одном наборе запросов (ваш retrieval_qa.jsonl подойдёт) и опубликуем общий отчет: где выигрывает семантика, где точное имя. Соавторство пополам.

Сразу признаю слабое место, которое вы увидите в ответе. Для БСП НОПик предлагает ОбщегоНазначенияКлиентСервер.РазложитьСтрокуВМассивПодстрок, это прежнее имя: в новых версиях БСП функция называется СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассив. Предполагаю, причина в источниках: ответ собран по профилю «Бухгалтерия 3.0» (в ответе "index_version": "buh-3.0"), а среди источников есть материалы 2021 года, когда в ходу было старое имя. Именно на таких ошибках общий разбор и покажет, где семантический поиск выигрывает, а где нужна сверка имени со справкой.

P.S. В ответе сервиса есть поле "source": "vertex". Vertex AI Discovery Engine - один из собеседников НОПика. Сам НОПик устроен иначе: его модель выросла из общения со мной, с коллегами и с другими нейросетями, и Vertex у неё один из источников. Поле source показывает, через кого прошёл конкретный ответ.
5. gybson 13 01.10.26 21:38 Сейчас в теме
(4) можете просто объединить решения или что-то перенести к себе и собрать все в одном mcp, продукт не коммерческий, можно что угодно
6. Ninel_S 47 01.10.26 21:42 Сейчас в теме
(5) Спасибо, Товарищ!
Я подготовлю репозиторий (склонирую Ваш), а затем обсудим и примем совместное решение о публикации.
Для отправки сообщения требуется регистрация/авторизация