CodePilot1C-EDT: Магия автоматизации 1С с помощью ИИ — Блог
$ cat reverse/codepilot-use-cases.md

CodePilot1C-EDT: Магия автоматизации 1С с помощью ИИ

CodePilot1C-EDT: Когда 1С встречает Искусственный Интеллект

Представьте, что ваша среда разработки 1С (EDT) понимает естественный язык, может рефакторить код, создавать формы по описанию и подключаться к любым внешним сервисам. Это не будущее — это CodePilot1C-EDT уже сегодня.

В этом посте мы разберем, какие чудесные вещи можно сделать с помощью этого проекта, и посмотрим на конкретные примеры рабочих процессов (workflows).

🏗 Архитектура возможностей

Проект построен на двух мощных столпах:

  1. Глубокая интеграция с EDT API — доступ ко всем объектам метаданных, формам, BSL-коду и расширениям.
  2. Гибкая система провайдеров LLM — поддержка OpenAI, Anthropic, Ollama и любых OpenAI-совместимых сервисов через динамическую конфигурацию.

Давайте посмотрим, как это превращается в реальные суперсилы для разработчика 1С.


✨ 6 Удивительных Use-Case Сценариев

1. 🪄 «Магический рефакторинг»

Проблема: У вас есть старый код с устаревшими паттернами, отсутствием типизации и формами, созданными в конструкторе 10 лет назад.

Решение: CodePilot анализирует контекст, предлагает современный BSL с типами, переписывает обработчики событий и обновляет макет формы.

Пример Workflow:

workflow: MagicRefactoring
trigger: "Пользователь выделяет устаревший модуль объекта"
steps:
  - tool: BslSymbolAtPositionTool
    action: "Анализ текущей структуры кода и символов"
  - tool: BslTypeAtPositionTool
    action: "Определение типов переменных и параметров"
  - tool: LLMRequest
    prompt: |
      Проанализируй этот BSL-код. Найди:
      1. Отсутствие аннотаций типов
      2. Устаревшие методы (например, НайтиПоНаименованию вместо НайтиПоКоду)
      3. Нарушения стандартов 1С
      Предложи рефакторинг с пояснениями.
  - tool: UpdateMetadataTool
    action: "Применение изменений к объекту метаданных"
  - tool: MutateFormModelTool
    action: "Обновление элементов формы под новый код"
output: "Модуль с типизацией, современными вызовами и обновленной формой"

Результат: Вместо 4 часов ручного рефакторинга — 2 минуты на проверку предложений ИИ.


2. 🌉 «Универсальный мост»

Проблема: Нужно подключить внешнюю информационную базу 1С или сторонний сервис (CRM, ERP), но писать код обмена вручную долго и ошибкоопасно.

Решение: Через инструменты External* и MCP-серверы система динамически подключается к источникам данных.

Пример Workflow:

workflow: UniversalBridge
trigger: "Пользователь запрашивает: 'Подключи базу склада и покажи остатки'"
steps:
  - tool: ExternalListProjectsTool
    action: "Получение списка доступных внешних проектов"
  - tool: ExternalGetDetailsTool
    params: { projectId: "warehouse-1c" }
    action: "Чтение структуры метаданных внешней базы"
  - tool: LLMRequest
    prompt: |
      На основе метаданных внешней базы 'Склад':
      1. Создай локальный план обмена
      2. Сгенерируй код обработки данных
      3. Настрой маппинг полей
  - tool: ImportProjectFromInfobaseTool
    action: "Импорт необходимых объектов в текущий проект"
  - tool: CreateMetadataTool
    action: "Создание регистров сведений для кэширования"
output: "Готовый код обмена и импортированные объекты"

Результат: Интеграция с внешней системой за считанные минуты без написания бойлерплейта.


3. 🧪 «Авто-тестировщик»

Проблема: Покрытие тестами требует времени, а контекст формы сложно воспроизвести вручную.

Решение: ИИ анализирует форму, генерирует сценарии тестирования и подготавливает контекст.

Пример Workflow:

workflow: AutoTester
trigger: "Пользователь выбирает форму и нажимает 'Сгенерировать тесты'"
steps:
  - tool: InspectFormLayoutTool
    action: "Анализ элементов формы, реквизитов, команд"
  - tool: QaPrepareFormContextTool
    action: "Подготовка тестового контекста с моковыми данными"
  - tool: LLMRequest
    prompt: |
      На основе структуры формы создай:
      1. Позитивные сценарии (заполнение всех полей)
      2. Негативные сценарии (некорректные данные)
      3. Граничные случаи (пустые значения, максимальная длина)
      Сгенерируй код тестов на 1С:TestingFramework
  - tool: CreateMetadataTool
    params: { class: "TestModule" }
    action: "Создание модуля тестов"
output: "Полноценный набор автотестов с покрытием 80%+"

Результат: Тесты пишутся быстрее, чем вы успеваете выпить кофе.


4. 🏛 «Агент-архитектор»

Проблема: Нужно быстро создать прототип подсистемы (например, CRM или складской учет).

Решение: По текстовому описанию ИИ проектирует структуру метаданных, создает объекты и связывает их.

Пример Workflow:

workflow: AgentArchitect
trigger: "Пользователь пишет: 'Создай подсистему CRM с клиентами, сделками и задачами'"
steps:
  - tool: LLMRequest
    prompt: "Спроектируй структуру метаданных для CRM: справочники, документы, регистры"
  - tool: ScanMetadataIndexTool
    action: "Проверка существующих объектов на конфликты имен"
  - tool: CreateMetadataTool
    iterations:
      - type: Catalog
        name: "Клиенты"
        attributes: ["Наименование", "ИНН", "Телефон"]
      - type: Document
        name: "Сделка"
        attributes: ["Клиент", "Сумма", "Статус"]
      - type: InformationRegister
        name: "ЗадачиПоСделкам"
  - tool: AddMetadataChildTool
    action: "Добавление табличных частей и форм"
  - tool: ApplyFormRecipeTool
    action: "Генерация удобных форм для каждого объекта"
output: "Готовая подсистема с 15+ объектами метаданных"

Результат: Прототип сложной системы за 5 минут вместо 2 дней ручной работы.


5. 🦎 «MCP-Хамелеон»

Проблема: Нужно интегрировать EDT с внешними сервисами (Git, Jira, CI/CD), но каждый раз писать адаптеры вручную.

Решение: Через Model Context Protocol (MCP) динамически подключаются любые инструменты из внешних серверов.

Пример Workflow:

workflow: MCPChameleon
trigger: "Пользователь подключает MCP-сервер 'dev-tools'"
steps:
  - tool: McpClient.connect
    params: { serverUrl: "ws://mcp-server:8080" }
    action: "Установка соединения с MCP-сервером"
  - tool: McpClient.listTools
    action: "Получение списка доступных инструментов"
    discovered:
      - "git-commit"
      - "jira-create-issue"
      - "ci-trigger-build"
  - tool: registerDynamicTool
    action: "Регистрация инструментов в реестре CodePilot"
  - tool: LLMRequest
    prompt: "Создай задачу в Jira для текущего коммита"
    dynamicToolCall: "jira-create-issue"
    params:
      summary: "Исправление ошибки в модуле проведения"
      description: "Auto-generated by CodePilot"
output: "Задача в Jira создана, связь с коммитом установлена"

Результат: EDT становится центром управления всей разработкой, а не только редактором кода.


6. 🎨 «Живой дизайнер форм»

Проблема: Дизайн форм 1С часто отстает от современных требований UX.

Решение: Интерактивное изменение интерфейса голосом или текстом в реальном времени.

Пример Workflow:

workflow: LiveFormDesigner
trigger: "Пользователь говорит: 'Сделай форму более современной: добавь вкладки, убери лишние поля'"
steps:
  - tool: InspectFormLayoutTool
    action: "Текущий анализ структуры формы"
  - tool: LLMRequest
    prompt: |
      Предложи улучшенный макет формы:
      1. Сгруппируй реквизиты по логическим вкладкам
      2. Скрой технические поля
      3. Добавь быстрые команды в панель действий
  - tool: MutateFormModelTool
    action: "Применение изменений к модели формы"
    changes:
      - addTab: "Основное"
      - addTab: "Дополнительно"
      - moveFields: ["Комментарий", "Ответственный"]
      - hideFields: ["ВерсияДанных", "ДатаИзменения"]
  - tool: ApplyFormRecipeTool
    action: "Финальная стилизация по современным паттернам"
output: "Обновленная форма с улучшенным UX"

Результат: Формы выглядят как современные веб-приложения, а не как привет из 2005 года.


🔧 Как добавить свою модель?

Одна из самых сильных сторон проекта — возможность подключить любую LLM.

Вариант 1: Динамическая конфигурация (для OpenAI-совместимых)

Просто добавьте в настройки:

  • Base URL: https://api.groq.com/openai/v1
  • API Key: ваш ключ
  • Model: llama-3.1-70b-versatile
  • Type: OPENAI_COMPATIBLE

Вариант 2: Кастомный провайдер

Для уникальных API создайте класс:

public class MyCustomProvider extends AbstractLlmProvider {
    @Override
    protected String buildRequestBody(LlmRequest request) {
        // Форматирование под спецификацию вашего API
    }
    
    @Override
    protected LlmResponse parseResponse(HttpResponse response) {
        // Парсинг ответа
    }
}

Зарегистрируйте через plugin.xml:

<extension point="com.codepilot1c.core.llmProvider">
    <provider id="my-provider" class="com.example.MyCustomProvider"/>
</extension>

🚀 Заключение

CodePilot1C-EDT — это не просто плагин для автодополнения кода. Это полноценная платформа для:

  • ✅ Автоматизации рутинных задач разработчика 1С
  • ✅ Интеграции с любыми LLM через гибкую архитектуру провайдеров
  • ✅ Расширения функциональности через MCP и динамические инструменты
  • ✅ Создания прототипов и рефакторинга сложных систем

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

🔗 Полезные ссылки


Автор: Ваше Имя
Дата публикации: 15 января 2024
Теги: #1С #EDT #ИИ #LLM #Автоматизация #BSL #CodePilot