Здравствуйте, коллеги! Набирает обороты вайбкодинг: все больше рутину мы доверяем машине. Прогресс не остановить, и это правда.
Соглашусь, что продуктов такого типа на Инфостарте появилось уже много. Как обычно, нужда родила желание написать своё — проверенное и удобное. Так родился мой 1С MCP-сервер.
Перед этим пришлось проанализировать огромное количество имеющихся решений, и скажу так: среди них есть действительно хорошие продукты, которые умеют подружить 1С с искусственным интеллектом.
Сразу скажу и другое. Настроив MCP в несколько кликов и купив подписку, не получится закинуть ноги на стол и наблюдать, как за тебя работают. Но ускорение в своей работе я уже получил, и немалое.
С чего всё началось
Мы вдвоём с коллегой работаем через хранилище конфигурации. Преимущества хранилища для командной работы вы и сами знаете. Почти три года оно верно выполняет свою функцию — пусть и с многими неудобствами.
Сломалось это, когда я подключил к базе свой MCP-сервер. Он правит не конфигурацию в Конфигураторе, а файлы выгрузки. Выгрузка — слепок, сделанный когда-то раньше. Обновиться из хранилища перед работой я не догадался. Модель аккуратно поправила устаревший слепок, загрузка так же аккуратно положила его в базу. Правки коллеги, помещённые часом раньше, исчезли молча — ни ошибки, ни предупреждения.
Свой сервер я начинал не как продукт, а чтобы закрыть свои же дыры. Сначала надоело объяснять модели, где что лежит. Потом добавилось хранилище. Потом перенос данных между базами. Через полгода это перестало помещаться в «скрипт для себя».
«Веб-интерфейс сервера: слева разделы в том порядке, в каком настраивают, сверху — состояние базы: выгрузка 54 430 файлов и поисковый индекс BM25 + векторы.»Три вещи, ради которых всё писалось
|
01
Хранилище конфигурации
Сервер не даёт править и грузить, пока не обновился из хранилища. Отказ вместо тихой потери чужой работы.
|
02
Перенос данных между базами
Сопоставление объектов разных конфигураций, предпросмотр, план без записи, сверка остатков.
|
03
Правка и загрузка вне EDT
Полный цикл в обычном Конфигураторе — через файлы выгрузки, а не эмуляцией клавиатуры в окне.
|
+Почему нейросеть врёт про 1Считать
Претензии в обсуждениях повторяются почти дословно. Модель выдумывает методы стандартных объектов. Не знает метаданных вашей конфигурации. Упирается в размер контекста. Отдельная тревога — пускать ИИ к рабочей базе. Всё это надо учесть.
Корень один. Модель не видит вашу конфигурацию. Она видит текст, который вы успели скопировать в чат, и достраивает остальное из общего знания о языках. Отсюда Ключи() у Структуры и КонецТранзакции вместо ЗафиксироватьТранзакцию.
MCP решает это: модель получает не текст, а инструменты. Сама смотрит структуру документа, находит вызывающие методы, читает модуль, проверяет запрос. Так делают многие. Дальше — про то, что сделано иначе.
Пять сценариев
+1. Хранилище: сервер не даёт затереть чужую работучитать
Та самая дыра из начала статьи. Закрывается она там же, где была открыта: перед правкой выгрузки и загрузкой в базу.
В настройках базы есть требование свежего обновления. У него две оси, обе опциональные. Область: не требовать / только перед загрузкой / перед правкой и загрузкой. Поведение: отказать и попросить обновиться либо обновиться самому и продолжить.
Пока обновление не выполнено, ИИ не получает разрешения. Не «не советую», а отказ с объяснением.
Деталь, которая далась дорого. Обновление из хранилища перезаписывает выгрузку. Лежат там ваши незагруженные правки — они исчезнут. Поэтому при непустой очереди правок сервер отказывается и обновляться тоже, и называет, что под угрозой.
Захват объектов сервер умеет, но по умолчанию не делает. Автозахват на общем хранилище блокирует объекты у всей команды. Захвачен коллегой — сервер не обходит, а останавливается и называет объект.
И ещё одно — до правки, а не после. Модель может спросить историю версий хранилища: кто, когда и какие объекты менял. Перед правкой модуля видно, что его вчера трогал коллега. Первый раз номер последней версии нащупывается десятком пробных отчётов (на сетевом хранилище это минуты), дальше он запоминается.
«Правку просили внести сразу — сервер отказал: последнее обновление из хранилища было 97 минут назад, порог 30. Модуль не изменён.»+2. Полный цикл правки — без EDT и без кликов по окнамчитать
Написать код в чат умеют все. Дальше обычно начинается ручная работа: скопировать, найти модуль, вставить, проверить, загрузить. Здесь цикл замкнут.
| Правка фрагмент или метод |
Показ изменений «− было / + стало», по умолчанию не применяется |
Загрузка частичная, по файлам |
Проверка синтаксис конфигуратором |
Откат из копии одной командой |
Важно, как это сделано. Инструменты, которые правят код в Конфигураторе, обычно идут через автоматизацию окна: вытаскивают текст из редактора и вставляют обратно эмуляцией клавиатуры. Работает, но хрупко. Здесь правится файл выгрузки, а в базу конфигурация уходит штатной командой платформы.
«Один запрос: показать изменения, внести и загрузить. Модель сама обновила выгрузку из базы, показала правку строка за строкой, загрузила её и отчиталась, что синтаксическая проверка конфигуратором прошла без ошибок.»+3. Перенос данных между базамичитать
Самая большая часть продукта. Задача знакомая: есть старая база и новая, конфигурации разные, надо перевезти данные.
В интерфейсе строится профиль переноса. Пары «объект источника → объект приёмника», сопоставление реквизитов, фильтры, соответствия значений. Дальше предпросмотр на нескольких записях, полный план без записи — и только потом запись.
«Настройка одной пары переноса: слева поля приёмника, справа поля источника. Источник — виртуальная таблица остатков регистра бухгалтерии, приёмник — документ ввода начальных остатков; объекты ищутся по реквизитам, а не по GUID.»
«Сверка остатков по счетам: дерево счетов источника, рядом суммы приёмника и расхождение.»+4. Поиск по конфигурациичитать
| → Найти по смыслу, когда точного имени вы не знаете: «где рассчитывается себестоимость при списании». |
| → Кто вызывает этот метод — по всей конфигурации, а не поиском по тексту. |
| → Что сломается, если его изменить — вся цепочка вызывающих, включая экспортные методы наружу. |
| → Вызовы, которых обычный поиск не находит: ОписаниеОповещения, обработчики ожидания, Выполнить и Вычислить. |
| → Справка синтакс-помощника — по вашей версии платформы, рядом с кодом. |
Всё это работает на вашей машине. Ни Docker, ни внешних баз данных, ни облака: индекс лежит рядом с выгрузкой.
+5. Проверки: корректность кодачитать
Проверки встроены в саму правку. Каждое изменение модуля прогоняется через них. Добавила правка новую ошибку — применение блокируется. Обойти можно только явным подтверждением.
Проверок четыре: выдуманные имена, вызовы между клиентом и сервером, текст запроса по метаданным, синтаксис конфигуратором.
Комментарии и строки вырезаются до разбора, а имена платформы берутся из справки синтакс-помощника — двенадцать тысяч имён для вашей версии. Нет распакованной справки — проверка выключается и прямо об этом пишет. Молчание читается как «всё чисто», а это хуже отказа.
Безопасность, возможности, ограничения
+Что с безопасностьючитать
Заведите в 1С отдельного пользователя с правом только на чтение и подключайтесь под ним. Дальше можно не изучать мои настройки и не верить мне на слово: сколько бы раз модель ни решила что-то записать, платформа ей этого не даст. Работе это почти не мешает — поиск по коду, метаданные, запросы, граф вызовов, проверки синтаксиса остаются в полном объёме. Недоступной будет только запись: правка конфигурации и проведение документов. Когда доверия прибавится, права всегда можно расширить — а начинать лучше отсюда.
| По умолчанию ИИ только читает. Правка выгрузки, загрузка в базу и обновление структуры БД — три отдельных разрешения, каждое выключено. |
| Разрешения на базу, а не на сервер. Боевая база остаётся в чтении, пока копия открыта на запись. |
| Код BSL идёт в песочнице. По умолчанию в транзакции, которая откатывается всегда. Результат видно, база не меняется. Боевой прогон — двумя явными флагами. По HTTP выполнять код можно только пользователю с правом «Администрирование» — решает платформа, а не мои настройки. |
| Обезличивание. По желанию ФИО, ИНН, телефоны и почта заменяются устойчивыми псевдонимами до отправки модели. Решение принимается по типу реквизита из метаданных, а не гаданием по тексту. |
| Журнал вызовов. Что вызывалось, когда, в какой базе, сколько заняло. Секреты и тексты кода в журнал не попадают. |
| Всё локально. Сервер работает на вашей машине. Наружу уходит только то, что ваш ИИ-клиент отправляет своей модели. |

«Три профиля доступа и галочки под ними: правка выгрузки, загрузка в базу и обновление структуры БД включаются по отдельности.» и «Тот же ответ модели после обезличивания: вместо ФИО устойчивые псевдонимы.»+Полный список возможностей60
Чтение и поиск (17). Дерево метаданных, полная структура объекта и управляемой формы, точный поиск по коду, список методов модуля, семантический поиск, вызывающие и вызываемые методы, цепочка вызовов, оценка влияния изменений, динамические вызовы, справка синтакс-помощника.
Правка и загрузка (14). Замена фрагмента и метода, добавление метода, три режима у каждой правки (показать изменения, отложить, применить), отложенные правки, откат из копии, частичная и полная загрузка, проверка синтаксиса, инкрементальная перевыгрузка, сборка внешней обработки, сборка и установка расширения.
Хранилище (3 и настройки). Обновление из хранилища с перевыгрузкой, быстрая проверка подключения, история версий, требование свежего обновления, захват и помещение объектов.
Живая база (10). Запрос на языке запросов, чтение данных без запроса, описание полей таблицы, проведение и отмена проведения, выполнение кода BSL, журнал регистрации, лента изменений данных, диагностика COM-коннектора. Всё — по COM или по HTTP.
Проверки (5). Выдуманные имена, число аргументов и значения перечислений, вызовы клиент-сервер, текст запроса без базы, контроль целостности данных.
Перенос и служебное (11). Сравнение объектов, сопоставление значений, профили переноса, предпросмотр и план без записи, список баз и переключение из чата, свежесть выгрузки, журнал вызовов.
+Что под капотомчитать
| Модель конфигурации | файлы выгрузки, дальше только инкрементально: платформа сама переписывает изменившееся |
| Поиск | BM25 плюс векторы, модель локальная, граф вызовов в SQLite |
| Справка платформы | контейнер shcntx_ru.hbk распаковывается своими силами и индексируется вместе с конфигурацией |
| Хранилище | пакетные ключи конфигуратора. Список объектов платформа принимает только XML-файлом: имя через запятую вешает процесс на модальном окне намертво |
| Живая база | COM или HTTP-сервис расширения mcp_Bridge. Расширение ставится в базу кнопкой в интерфейсе, публикация на IIS — тоже. По COM: если в реестре коннектор от другой платформы, объект создаётся напрямую из нужной comcntr.dll, мимо реестра |
| Сам сервер | один exe. Веб-интерфейс открыт только на вашей машине и не принимает запросы со стороны — даже от страницы, открытой в соседней вкладке браузера |
+Что придётся принятьчитать
| Сервер — только под Windows. Выгрузку, загрузку и проверку синтаксиса делает конфигуратор. Сама база может стоять где угодно: через HTTP-публикацию сервер работает с её данными без COM, в том числе когда кластер 1С на Linux. |
| Нужен установленный 1cv8. Выгрузка, загрузка, проверка синтаксиса, хранилище — всё делает конфигуратор в пакетном режиме. |
| Нет отладки и создания объектов метаданных. Правка кода — да, создание справочника с нуля — нет. Это осознанная граница: там лучше EDT. |
| Сборка тяжёлая — около 400 МБ из-за векторного поиска. Есть лёгкий вариант на одном BM25. |
| Это не замена головы. Даже если модель решит задачу на 96%, оставшиеся 4% править руками. Сервер убирает не думание, а слепоту модели. |
+Установкачитать
Python не нужен: это папка с exe, всё внутри.
| 1 Распаковать, запустить 1c-mcp-server.exe |
2 Указать 1cv8.exe и базу, выгрузить конфигурацию, собрать индекс |
3 Скопировать сниппет для своего ИИ-клиента в его конфиг |
4 Для живых запросов включить COM или HTTP. Расширение и публикацию на IIS интерфейс ставит сам |
.claude/skills в проект или как плагин: github.com/Nikolay-Shirokov/cc-1c-skills.По шагам вести не придётся. При первом запуске включается стартовый помощник. Он проводит по разделам, подсказывает, что заполнить сейчас, а что потом, и показывает, чего не хватает для работы: не указан 1cv8, не сделана выгрузка, не собран индекс. Пройти его можно и позже, из меню.
Готовые сниппеты есть для Claude Desktop, Claude Code, Cursor и Codex CLI.
Первая выгрузка и индексация большой конфигурации занимают время. Это разовая операция: дальше платформа перевыгружает только изменившиеся объекты, индекс пересобирает только их.
«Стартовый помощник ведёт по интерфейсу шаг за шагом и объясняет, зачем нужен каждый элемент: здесь — состояние базы, то есть выгрузка, индекс и справка.»Напишите в комментариях, чего не хватает в вашем сценарии. Отдельно интересно услышать тех, кто работает через хранилище в команде.
Вступайте в нашу телеграмм-группу Инфостарт