Claude Code и 1С.Предприятие

1С-разработка с помощью Claude Code: честный опыт и выводы

Введение

Эта статья — результат практического эксперимента по использованию AI-агента Claude Code (модель Claude Opus 4.5) для разработки на платформе 1С:Предприятие. Мы выполнили две реальные задачи разной сложности и оценили результаты с помощью профессионального 1С-разработчика.

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


Выполненные задачи

Задача 1: Обработка «Поиск партии по товарам»

Суть задачи: Создать обработку для УПП 1.2, которая помогает складским сотрудникам идентифицировать неопознанный груз по списку товаров.

Требования:

  • Форма с выбором складов и таблицей товаров (номенклатура + характеристика + количество)
  • Поиск документов «Поступление товаров и услуг» где ВСЕ указанные товары есть на остатках в одной партии
  • Вывод результата через СКД с двумя уровнями группировки
  • Условное оформление (зелёный фон при совпадении, жирный шрифт для введённых позиций)

Результат: Готовый BSL-код на 814 строк + инструкция по созданию формы в конфигураторе.

Задача 2: Анализ обработки интеграции с CyberLines

Суть задачи: Проанализировать существующую обработку загрузки заявок на перевозку (13,378 строк кода) и ответить на 5 вопросов.

Требовалось:

  1. Описать способы активации обработки
  2. Спланировать внедрение многопоточности и отказоустойчивости
  3. Предложить оптимизацию SQL-запросов
  4. Составить список данных из внешней системы vs окружения 1С
  5. Описать поэтапный процесс создания заявки

Результат: Детальный аналитический отчёт на 660 строк + отчёт линтера на 497 строк + исправленная версия обработки (0 синтаксических ошибок, но с логическими проблемами).


Хронология: с какой попытки успех?

Задача 1: «Поиск партии по товарам» — успех с 3-й итерации

ИтерацияДатаИнструментыРезультатОценка эксперта
122 январяClaude Code14 критических замечаний— «Мне быстрее с нуля написать»
224 январяClaude Code + замечанияXML не работает, часть ошибок— «Косяки не исправлены»
328 январяClaude Code + MCP + линтерКод осмысленный, логика верная+ «Можно решением считать»

Время от старта до рабочего решения: 6 дней (с учётом пауз на ревью)

Ключевой перелом: Подключение MCP-сервера для валидации API платформы.

Задача 2: «Анализ обработки CyberLines» — успех с 1-й итерации

ИтерацияДатаРезультатОценка эксперта
130-31 январяПолный анализ + отчёт линтера + исправленная версия+ Анализ отлично / ~ Код с ошибками

Время: ~2 часа на анализ 13,378 строк + генерацию отчётов + автоисправление

Почему анализ сразу успех: Аналитическая задача — AI читает код, а не пишет. Формат вывода (Markdown) стандартный.

Почему код с ошибками: AI делает синтаксически корректные, но логически неверные изменения — ломает запросы и транзакции.

Сводка по задачам

ЗадачаТипИтераций до успехаВремяВердикт
Поиск партииРазработка36 дней~ Долго, но возможно
Анализ обработкиАналитика12 часа+ Отлично
Правки кода обработкиКодирование1~ Синтаксис ОК, логика сломана

Процесс работы

Проблема 1: Проприетарный формат 1С

Первый барьер — файл .dt (дамп базы данных 1С). Это закрытый бинарный формат, который ни один AI прочитать не может.

Решение: 1С-разработчик выгрузил конфигурацию в файлы (XML + BSL) через стандартную процедуру конфигуратора. Это критический шаг — без выгруженных исходников работа невозможна.

«Это считай sql бекап с кашей из символов внутри» — Никита (1С-разработчик)

Итерации по задаче 1

Итерация 1: 14 критических замечаний от эксперта:

  • Неверный формат вывода (чистый код вместо XML-структуры форм)
  • Выбор товаров через табличную часть вместо списка значений
  • Изобретение велосипедов вместо использования встроенных методов
  • Использование несуществующих функций (СТРОКАСОЕДИНИТЬ — выдумка)
  • Несоответствие ТЗ по использованию СКД

Итерация 2: После загрузки замечаний — улучшения, но:

  • XML-файлы для загрузки в 1С не работают (ошибки XDTO)
  • СКД используется частично
  • Часть ошибок не исправлена

Итерация 3 (с MCP): Подключили MCP-сервер для API платформы 1С:

  • Код стал осмысленнее
  • Логических косяков не обнаружено
  • Штрихкоды формируются правильно

«Я бы даже сказал что это можно решением считать» — Никита

Оценка от эксперта: код (задача 1)

После финальной итерации:

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

Замечания, которые остались:

  • БСП (Библиотека стандартных подсистем) не используется
  • СКД используется минимально, хотя просили полностью на нём

Оценка от эксперта: анализ (задача 2, вопросы 1–5)

Развёрнутая оценка ответов на 5 аналитических вопросов:

ВопросОценкаКомментарий эксперта
1. Способы активации+ ХорошоКлючевые способы найдены и верно описаны. Пропущены возможности запуска для отладки с формы
2. Многопоточность и отказоустойчивость+ ОтличноВопрос с подвохом — всё уже реализовано. AI это обнаружил, структурировал с номерами строк
3. Оптимизация SQL+ ОтличноВсе запросы найдены с расположением в коде. Рекомендации хорошие, не хватает оценки прироста
4. Данные из внешней системы~ СреднеПравда, но поверхностно — описание вместо структуры таблиц. Плюс: нашёл забытые настройки ПВХ
5. Процесс создания заявки~ СреднеВерно, с наглядными схемами, но верхнеуровнево. 3000+ строк в 1 этап, инициализация в 10 строк

Оценка от эксперта: автоисправление кода (задача 2)

AI получил обработку на 13,378 строк и самостоятельно внёс исправления. Результат проверки экспертом:

Что сделал AIОценкаКомментарий эксперта
0 синтаксических ошибок+Весь код валидный — это само по себе впечатляет
Переписал код по стандартам 1С+Без замечаний
Нашёл и обновил версию+Самостоятельно определил где и как
Добавил логирование исключений~Хорошая идея, но непрактично для десятков миллионов документов
Оптимизировал запросыСинтаксически верно, но логика нарушена — вернутся другие данные
Переписал логику транзакцийНарушена логика записи документов

«Шок, но синтаксических ошибок 0… Но с запросами как всегда у нейронки тяжко. Написан синтаксически верно, но нарушил их логику» — Никита


Инструменты

1. Claude Code

AI-агент в командной строке с доступом к файловой системе.

Ссылка: claude.ai/code

Модель: Claude Opus 4.5 (claude-opus-4-5-20251101)

Преимущества для 1С:

  • Может читать и анализировать большие BSL-файлы (13,000+ строк)
  • Понимает структуру конфигурации 1С (XML + BSL)
  • Хорошо справляется с аналитическими задачами

2. MCP 1C Platform

MCP-сервер для поиска по API платформы 1С:Предприятие.

Ссылка: github.com/alkoleft/mcp-bsl-platform-context

Возможности:

  • Поиск методов, свойств и типов платформы
  • Получение конструкторов типов
  • Информация о членах типов (методы, свойства)

Пример использования:

● 1c-platform - search (MCP)(query: "Метаданные", type: "property")
  ⎿ "# Результаты поиска: 'Метаданные'
     **Тип:** `ОбъектМетаданныхКонфигурация`
     **Только для чтения:** Да"

● 1c-platform - search (MCP)(query: "РегистрНакопления", type: "type")
  ⎿ "## Найдено 6 элементов
     ### РегистрНакопленияВыборка.<Имя регистра накопления>
     **Тип элемента:** Type"

Установка MCP-сервера в Claude Code:

  1. Убедитесь, что установлен Node.js 18+:
node --version  # v18.0.0 или выше
  1. Откройте настройки Claude Code:
# Windows
notepad %USERPROFILE%\.claude\settings.json

# macOS/Linux
nano ~/.claude/settings.json
  1. Добавьте конфигурацию MCP-сервера:
{
  "mcpServers": {
    "1c-platform": {
      "command": "npx",
      "args": ["mcp-bsl-platform-context"]
    }
  }
}
  1. Перезапустите Claude Code для применения настроек.
  2. Проверьте работу — при запуске Claude Code должен показать:
MCP Servers: 1c-platform

Альтернативная установка (локально):

# Клонировать репозиторий
git clone https://github.com/alkoleft/mcp-bsl-platform-context.git
cd mcp-bsl-platform-context

# Установить зависимости
npm install

# Настроить в settings.json
{
  "mcpServers": {
    "1c-platform": {
      "command": "node",
      "args": ["/полный/путь/к/mcp-bsl-platform-context/dist/index.js"]
    }
  }
}

Доступные методы MCP:

МетодОписание
searchПоиск по API (методы, свойства, типы)
infoДетальная информация об элементе
getMembersСписок методов и свойств типа
getConstructorsКонструкторы типа
getMemberИнформация о конкретном методе/свойстве

3. BSL Language Server (Линтер)

Статический анализатор кода для языка 1С.

Репозиторий: github.com/1c-syntax/bsl-language-server

Скачать: Releases — файл bsl-language-server-X.X.X-exec.jar

Версия в эксперименте: 0.28.3

Требования: Java 17+ (скачать с adoptium.net)

Установка:

# 1. Скачать JAR-файл
curl -L -o bsl-language-server.jar \
  https://github.com/1c-syntax/bsl-language-server/releases/download/v0.28.3/bsl-language-server-0.28.3-exec.jar

# 2. Проверить версию Java
java -version  # Нужна 17+

# 3. Проверить работу
java -jar bsl-language-server.jar --version

Команды для анализа:

# Анализ одного файла
java -jar bsl-language-server.jar --analyze --src ./path/to/file.bsl

# Анализ директории с выводом в JSON
java -jar bsl-language-server.jar --analyze --src ./path/to/folder \
  --reporter json --outputDir ./reports

# Анализ с конфигурацией (отключение определённых правил)
java -jar bsl-language-server.jar --analyze --src ./path/to/folder \
  --configuration ./.bslls.json

Пример .bslls.json для отключения правил:

{
  "diagnostics": {
    "parameters": {
      "Typo": false,
      "SpaceAtStartComment": false
    }
  }
}

Возможности:

  • Проверка синтаксиса и стандартов 1С
  • Поиск ошибок транзакций (PairingBrokenTransactionCommitTransactionOutsideTryCatch)
  • Выявление устаревших методов (DeprecatedCurrentDate)
  • Оценка когнитивной и цикломатической сложности
  • Поиск неиспользуемых переменных

Статистика по анализу обработки (13,378 строк):

УровеньКоличествоОписание
Error52Критические ошибки — исправлять немедленно
Warning411Предупреждения — исправить в ближайшее время
Information1,477Информация — улучшение качества
Hint2,029Подсказки — стилистические замечания
Всего3,969

Топ найденных ошибок:

  • VirtualTableCallWithoutParameters (12 шт.) — вызов виртуальной таблицы без параметров
  • IncorrectUseOfStrTemplate (10 шт.) — некорректное использование СтрШаблон()
  • PairingBrokenTransaction (7 шт.) — нарушена парность транзакций
  • DeprecatedCurrentDate (5 шт.) — использование устаревшей ТекущаяДата()

Что получилось хорошо

1. Анализ существующего кода

Claude Code отлично справляется с анализом больших кодовых баз:

  • Нашёл все ключевые способы активации обработки и правильно расписал их применение (хотя пропустил возможности запуска для отладки с формы)
  • Описал механизм многопоточности через ДлительныеОперации.ВыполнитьВФоне()
  • Составил список из 12 хранимых процедур SQL с их назначением и расположением в коде
  • Построил диаграмму последовательности создания заявки

«Учитывая как он в файлах хорошо покапался и нашел нужные регистры и документы, думаю просто план реализации от нейронки был бы очень полезен» — Никита

2. Понимание существующей функциональности

Один из вопросов анализа был с подвохом: задачи на многопоточность и отказоустойчивость уже были реализованы в обработке. AI это распознал и вместо того, чтобы планировать внедрение с нуля, подробно описал что уже есть — структурировал информацию и указал номера строк.

«Ответ подробно расписал что есть в обработке, структурировал информацию и даже номера строк прикрепил. Уверен если бы я был незнаком с обработкой, то мне такая информация очень помогла бы. Плюс для составления документации очень полезно» — Никита

3. Структурирование SQL-запросов

Особенно впечатлил разбор SQL-запросов. В реальных 1С-проектах поиск нужного запроса — это боль: огромная вложенность процедур, имена таблиц отличаются от стандартных 1С-объектов, новые разработчики тратят часы, чтобы разобраться.

AI сразу расписал где какой запрос находится. Рекомендации по оптимизации тоже оценены положительно.

«Нереальный респект за структурирование и подробное описание. Помню боль при разработке, как приходилось искать нужный запрос и как новые люди в проекте могли часы тратить… а тут он сразу расписал где какой запрос» — Никита

Единственное пожелание — не хватило ожидаемого прироста производительности по каждой рекомендации.

4. Обнаружение забытых настроек

При составлении списка данных из внешней системы AI нашёл «Критичные настройки из ПВХ» — план видов характеристик. Эта информация не запрашивалась напрямую, но AI самостоятельно извлёк настройки, включая пару, о которых разработчик уже забыл.

«Из плюсов выдал «Критичные настройки из ПВХ». Изначально даже не задумывался над их получением с такой формулировкой задачи, но он их достал и нашел даже пару настроек о которых я уже успел забыть, но они действительно используются» — Никита

5. Поиск регистров и документов

По ТЗ AI самостоятельно определил:

  • Документ поступления: Документ.ПоступлениеТоваровУслуг
  • Регистр партий: РегистрНакопления.ПартииТоваровНаСкладах
  • Регистр штрихкодов: РегистрСведений.ШтрихкодыНоменклатуры

6. Структурирование отчётов

Создание документации с:

  • Таблицами сравнения
  • ASCII-диаграммами архитектуры
  • Группировкой ошибок по типам
  • Приоритизацией исправлений
  • Наглядными схемами процессов

7. Работа с линтером

Интеграция BSL Language Server позволила:

  • Автоматически находить ошибки транзакций
  • Выявлять устаревшие методы (ТекущаяДата() → ТекущаяДатаСеанса())
  • Оценивать когнитивную сложность методов

8. Синтаксическая корректность исправлений

При автоматическом исправлении обработки (13,378 строк) — ноль синтаксических ошибок. AI корректно:

  • Переписал код согласно стандартам 1С
  • Самостоятельно нашёл и обновил версию обработки

Что получилось плохо

1. Создание форм

AI не может генерировать валидный XML для управляемых форм 1С. Ошибки XDTO при попытке загрузить в конфигуратор.

Решение: Генерировать только BSL-код + инструкцию для ручного создания формы.

2. Использование БСП

AI не знает методы Библиотеки стандартных подсистем:

  • Использует ПоказатьПредупреждение() вместо ОбщегоНазначенияКлиентСервер.СообщитьПользователю()
  • Не применяет типовые паттерны БСП

3. Выдуманные функции

В первых итерациях AI изобретал несуществующие методы:

  • СТРОКАСОЕДИНИТЬ (в 1С такого нет)
  • Неверные сигнатуры методов СКД

Решение: MCP-сервер для валидации API.

4. Множество итераций

Для получения рабочего результата потребовалось 3+ итерации с участием эксперта.

5. Нарушение логики запросов при автоисправлении

При попытке оптимизировать SQL-запросы AI написал синтаксически корректный код, но нарушил логику выборки данных — результат запроса возвращал бы другие данные, что повлекло бы ошибки в бизнес-процессе.

«Попытался оптимизировать запросы. Но с запросами как всегда у нейронки тяжко. Написан синтаксически верно, но нарушил их логику. Мы получим другие данные, а значит это повлечет ошибки» — Никита

6. Нарушение логики транзакций

AI переписал логику объявления и фиксации транзакций. Результат — документы, которые раньше записывались, теперь могут не записаться.

«Зачем-то переписал логику объявления и фиксации транзакций. Выглядит так, как будто логика записи документов нарушена и мы теперь не запишем то что раньше бы записалось» — Никита

7. Избыточное логирование

AI добавил логирование всех исключений — хорошая идея в теории, но непрактичная для обработки с десятками миллионов документов. Хранить такой объём логов просто негде.

8. Поверхностность глубокого анализа

При описании данных из внешней системы AI дал правильную, но недостаточно глубокую информацию. Например, описал «Files» просто как «Файлы взвешивания» вместо того, чтобы раскрыть структуру получаемых таблиц с типизацией полей.

Процесс создания заявки описан верхнеуровнево: заполнение табличных частей (3000+ строк кода с нелинейной логикой, множеством условий и созданием новых объектов БД) объединено в один этап. Инициализация данных — основа обработки — описана в 10 строк, хотя данные получаются из нескольких мест внешней системы, соединяются с данными из 1С, создаются новые элементы.

«Процесс описан правильно, даже наглядные схемы нарисованы. Но процесс описан верхнеуровнево. Заполнение табличных частей — это 3000 строк кода минимум и сам процесс не линейный» — Никита


Сравнение с Cursor

Для чистоты эксперимента эксперт попробовал ту же задачу через Cursor:

«Ради интереса попробовал через курсор сделать эту задачу. Из плюсов он смог нормально сформировать файлы для загрузки в 1С, но из минусов там полный бред. Если в твоей версии хотя-бы чувствовалась логика и верный курс действий, то в моей всё намного хуже, вообще не по ТЗ, ошибки через строку»

Вывод: Claude Code показал лучшее понимание задачи, хотя и с ошибками в реализации.


Рекомендации по настройке

CLAUDE.md для 1С-проектов

# Правила для 1С разработки

## Язык
- Используй русские названия переменных и методов
- Следуй стандартам 1С по именованию (ПаскальКейс)

## Форматы
- НЕ генерируй XML-файлы форм — они не будут работать
- Генерируй BSL-код + инструкцию для создания формы вручную

## API
- ВСЕГДА используй MCP 1c-platform для проверки существования методов
- НЕ выдумывай функции платформы

## БСП
- Приоритет методам из БСП когда они доступны
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю() вместо ПоказатьПредупреждение()

## Линтер
- Прогоняй код через BSL Language Server перед финализацией
- Обязательно исправляй ошибки уровня Error

Настройка MCP

{
  "mcpServers": {
    "1c-platform": {
      "command": "npx",
      "args": ["mcp-bsl-platform-context"]
    }
  }
}

Итоговые выводы

Вердикт эксперта

«С анализом нейронка справилась отлично, даже такая документация могла бы сэкономить десятки часов при написании этой обработки, а если бы мы задали конкретную задачу на написание подробной документации, то вклад был бы незаменимый. Но вот с кодом у нее всё плохо — задумки хорошие, реализация нет.» — Никита

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

Для чего Claude Code подходит в 1С:

ЗадачаОценкаКомментарий
Анализ кодовой базы+ ОтличноНаходит нужные объекты, строит зависимости, указывает номера строк
Составление планов+ ОтличноСтруктурирование задач, декомпозиция, оценка сложности
Документирование+ ОтличноМожет сэкономить десятки часов, незаменимый вклад
Код-ревью+ ХорошоС линтером находит много проблем, советы по рефакторингу
Обнаружение забытого+ ХорошоНаходит настройки и зависимости, о которых разработчик забыл
Небольшие доработки~ СреднеСинтаксис верный, но логика может быть нарушена
Новые обработки~ СреднеМного итераций, формы вручную

Для чего НЕ подходит:

ЗадачаОценкаПричина
Новые проекты с нуляСлишком много итераций
Создание формНе умеет генерировать валидный XML
Работа с БСПНе знает методы библиотеки
Оптимизация запросовСинтаксис верный, но ломает логику выборки
Рефакторинг транзакцийНарушает логику записи документов
Сложная бизнес-логика~Описывает верхнеуровнево, упускает детали

Главный вывод

СценарийРекомендация
Новый проект на 1СНе использовать AI как основу — слишком дорого по итерациям
Поддержка legacyАнализ и документирование — отлично; код — только под контролем разработчика
Код-ревьюХорошо работает с линтером, полезные советы
ПланированиеПолезно для структурирования и декомпозиции больших задач
ДокументированиеЛучшее применение — экономит десятки часов
Написание кодаЗадумки хорошие, реализация — нет. Решения и код оставить разработчику

Ресурсы

ИнструментСсылка
Claude Codeclaude.ai/code
MCP 1C Platformgithub.com/alkoleft/mcp-bsl-platform-context
BSL Language Servergithub.com/1c-syntax/bsl-language-server
Стандарты разработки 1Сits.1c.ru/db/v8std
MCP протоколmodelcontextprotocol.io

Статья основана на реальном эксперименте, январь-февраль 2026

Участники: Денис Матаков , Клементьев Никита (Эксперт, 1С-разработчик )