Проблема: ИИ для 1С — это не магия, а хаос
Откройте любой чат с GPT-4o, Claude 3.7 Sonnet или Qwen Coder 2.5. Попросите "написать обработку проведения документа в 1С". Получите красивый, синтаксически правильный кусок кода на BSL. Попробуйте запустить его в конфигураторе.
Ошибка компиляции. Или хуже — код работает, но нарушает все стандарты проекта, не учитывает блокировку данных, делает странные запросы к базе. Это и есть вайбкодинг: ИИ генерирует что-то похожее на код, но бесполезное в реальной разработке.
Вайбкодинг для 1С особенно опасен. Платформа имеет сотни нюансов: управляемые блокировки, транзакции, работа с планами видов характеристик. ИИ без контекста создает код, который либо не работает, либо создает проблемы в production.
Почему так происходит? LLM тренировались на публичных репозиториях GitHub. Кода 1С там почти нет. Модели знают синтаксис BSL, но не понимают архитектурные паттерны, стандарты предприятий, особенности конкретных конфигураций.
Решение — не в более умной модели. Решение — в методе. Specification-Driven Development.
Что такое SDD и почему это работает для 1С
Specification-Driven Development — это подход, где вы сначала пишете детальную спецификацию, затем передаете ее ИИ для генерации кода. Не "напиши обработку", а "напиши обработку по этому ТЗ".
Разница фундаментальная:
- Вайбкодинг: "Создай документ 'Заказ покупателя'"
- SDD: "Создай документ 'Заказ покупателя' со следующими реквизитами, формами, процедурами проведения согласно стандартам проекта 'Торговля 2.0' и шаблону документа 'Счет'".
ИИ становится не творцом, а исполнителем. Вы остаетесь архитектором.
В контексте 1С это критически важно. Каждый проект имеет:
- Стандарты именования (Префиксы, стиль camelCase/PascalCase)
- Шаблоны модулей (Структура обработчиков событий)
- Правила работы с транзакциями
- Стандартные процедуры (Общие модули, библиотеки)
- Архитектурные ограничения (Что можно, что нельзя)
Без этого контекста ИИ генерирует код, который придется полностью переписывать. С контекстом — код, который можно сразу коммитить.
Шаг 1: Создайте библиотеку спецификаций проекта
Не начинайте с генерации кода. Начните с документации.
1 Соберите все стандарты в один документ
Создайте markdown-файл или Confluence-страницу. Назовите "Стандарты разработки 1С [НазваниеПроекта]". Включите:
| Раздел | Что включить | Пример для ИИ |
|---|---|---|
| Именование | Префиксы объектов, стиль имен переменных, правила для временных объектов | Документы: Док_, Справочники: Спр_, Переменные: camelCase, Константы: ВЕРХНИЙ_РЕГИСТР |
| Структура модулей | Порядок объявления переменных, обработчиков событий, стандартные секции | Сначала #Область Переменные, затем #Область ОбработчикиСобытий, в конце #Область СлужебныеПроцедуры |
| Работа с данными | Правила блокировок, транзакций, обработка ошибок | Все изменения в транзакции, блокировка НаЗаписи для документов, try-catch для внешних соединений |
| Библиотеки проекта | Общие модули, типовые обработки, которые нужно использовать | Всегда использовать ОбщиеМодули.РаботаСТранзакциями для проведения документов |
Этот документ — ваша первая спецификация. Без него ИИ будет гадать, как вы хотите, чтобы код выглядел.
2 Создайте шаблоны для каждого типа объектов
Для документов, справочников, обработок, отчетов — создайте шаблонные спецификации:
# Шаблон документа 1С
## Общие требования
- Префикс имени: Док_
- Форма списка и форма элемента обязательны
- Модуль документа должен содержать стандартные обработчики
## Структура модуля документа
1. #Область Переменные
2. #Область ОбработчикиСобытий
- ПриЗаписи()
- ПередЗаписью()
- ОбработкаПроведения()
- ОбработкаЗаполнения()
3. #Область СлужебныеПроцедурыИФункции
## Правила проведения
- Использовать ОбщиеМодули.ПроведениеДокументов
- Транзакция обязательна
- Откат при ошибках
Такие шаблоны превращают абстрактное "создай документ" в конкретную инструкцию.
Шаг 2: Напишите промпт, который заставит ИИ следовать спецификациям
Обычный промпт: "Напиши код документа 'Заказ покупателя' для 1С".
Промпт SDD:
Ты — senior разработчик 1С. Создай production-ready код по следующей спецификации:
## Контекст проекта
[Вставьте сюда раздел стандартов проекта]
## Задача
Создать документ "ЗаказПокупателя" для конфигурации "Торговля 2.0"
## Требования
1. Реквизиты документа:
- Контрагент (Справочник.Контрагенты)
- Договор (Справочник.ДоговорыКонтрагентов)
- Сумма (Число, 15.2)
- Статус (Перечисление.СтатусыЗаказов)
2. Табличная часть "Товары":
- Номенклатура (Справочник.Номенклатура)
- Количество (Число, 10.3)
- Цена (Число, 15.2)
- Сумма (Число, 15.2)
3. Поведение:
- Автозаполнение суммы из табличной части
- Проверка наличия товаров перед проведением
- Интеграция с модулем "РезервированиеТоваров"
## Ограничения
- Использовать только библиотеки проекта
- Следовать стандартам именования
- Добавить комментарии на русском
- Код должен компилироваться в 1С:Предприятие 8.3.21
Разница в объеме? Да. Разница в результате? Код, который работает с первого раза.
Не экономьте на контексте. Современные LLM (GPT-4 Turbo 128K, Claude 3.7 с 200K контекстом) обрабатывают большие спецификации. Лучше потратить 5 минут на написание ТЗ, чем 2 часа на исправление сгенерированного кода.
Шаг 3: Разбейте большие задачи на атомарные спецификации
Проблема вайбкодинга часто в деградации контекста. ИИ забывает начало спецификации к концу генерации.
Решение — метод атомарного мышления:
- Не просите создать весь документ сразу
- Разбейте на: 1) Метаданные, 2) Формы, 3) Модуль объекта, 4) Модуль менеджера
- Для каждой части — отдельная спецификация
Пример атомарной задачи:
## Атомарная задача: Метаданные документа
Создай только метаданные документа "ЗаказПокупателя":
- Синоним: "Заказ покупателя"
- Реквизиты (см. список выше)
- Табличная часть "Товары"
- Стандартные реквизиты: Номер, Дата, Проведен
- Права доступа: Чтение для всех, Изменение для роли "Менеджеры"
Критерий готовности: XML-описание метаданных, которое можно импортировать в конфигуратор.
После генерации метаданных — следующая задача:
## Атомарная задача: Форма документа
Создай формы документа "ЗаказПокупателя" на основе метаданных:
- Форма списка с колонками: Номер, Дата, Контрагент, Сумма
- Форма элемента с группировкой по вкладкам
- Команды: "Заполнить из корзины", "Провести", "Отменить проведение"
- Валидация ввода на форме
Такой подход дает контроль на каждом этапе. ИИ фокусируется на одной задаче. Вы проверяете результат перед следующим шагом.
Шаг 4: Используйте инструменты для автоматизации SDD
Ручное копирование спецификаций в чат — не масштабируется. Автоматизируйте.
Вариант 1: Создайте систему промпт-шаблонов
В VS Code с расширением для ИИ (Cursor, Windsurf, Continue) создайте папку prompt-templates:
prompt-templates/
├── 1c-standards.md # Общие стандарты проекта
├── document-template.md # Шаблон для документов
├── catalog-template.md # Шаблон для справочников
├── report-template.md # Шаблон для отчетов
└── processing-template.md # Шаблон для обработок
При генерации кода вставляйте соответствующий шаблон в промпт автоматически.
Вариант 2: Используйте self-hosted LLM с fine-tuning
Если у вас много внутренних стандартов, рассмотрите self-hosted решение:
- Запустите локально Qwen Coder 2.5 32B или DeepSeek Coder V3
- Дообучите на ваших спецификациях и примерах кода
- Модель будет "знать" ваши стандарты без явного указания в каждом промпте
Это дороже, но для больших команд окупается.
Вариант 3: Интегрируйте SDD в процесс разработки
Свяжите спецификации с системой задач (Jira, YouTrack):
- Разработчик создает задачу
- К задаче прикрепляется SDD-спецификация
- ИИ генерирует код по спецификации
- Код проверяется на соответствие спецификации (автоматические тесты)
Так вы превращаете вайбкодинг в инженерный процесс.
Распространенные ошибки и как их избежать
Ошибка 1: Слишком общая спецификация
"Создай обработку выгрузки в XML" — это не спецификация. Это тема.
Как исправить: Добавьте конкретики: формат XML, какие данные выгружать, обработка ошибок, требования к производительности.
Ошибка 2: Игнорирование существующего кода
ИИ создает новый код, который не интегрируется с существующей системой.
Как исправить: Включайте в спецификацию ссылки на существующие модули, примеры вызовов, ограничения интеграции.
Ошибка 3: Нет критериев проверки
"Создай отчет" — а как проверить, что отчет работает?
Как исправить: Добавьте в спецификацию раздел "Критерии приемки": какие данные должны отображаться, производительность, обработка пустых данных.
Ошибка 4: Спецификация противоречит сама себе
Требуете использовать устаревший метод и одновременно новые функции платформы.
Как исправить: Проверяйте спецификации на внутреннюю согласованность. Указывайте версию платформы явно: "Для 1С:Предприятие 8.3.21.1407".
SDD vs Вайбкодинг: сравнение результатов
| Аспект | Вайбкодинг | SDD |
|---|---|---|
| Время на промпт | 5 секунд | 5-15 минут |
| Количество итераций | 5-10 "уточни, исправь, переделай" | 1-2 итерации на уточнение деталей |
| Соответствие стандартам | Случайное, требует правки | Полное, так как стандарты в спецификации |
| Готовность к production | Требует ревью и доработки | Можно коммитить после проверки |
| Масштабируемость | Низкая, каждый раз начинаем с нуля | Высокая, спецификации переиспользуются |
SDD требует больше времени на подготовку, но экономит часы на исправлениях.
Что дальше? Будущее SDD для 1С
К 2026 году инструменты для SDD станут стандартом:
- IDE с встроенным SDD: Конфигуратор 1С, который сам предлагает спецификации для новых объектов
- Автогенерация спецификаций: ИИ анализирует существующий код и создает стандарты автоматически
- Визуальные спецификации: Drag-and-drop интерфейс для описания требований, который превращается в промпт
- Тестирование спецификаций: Tools, которые проверяют, не противоречит ли новая спецификация существующему коду
Но главное изменение — ментальное. Разработчики 1С перестанут воспринимать ИИ как "волшебную палочку". Станут воспринимать как "очень быстрого стажера, которому нужно четко объяснить задачу".
Попробуйте SDD на следующей задаче. Напишите спецификацию в 10 раз подробнее, чем обычно. Передайте ИИ. Посмотрите на результат.
Скорее всего, вы удивитесь. Код будет работать. Будет соответствовать стандартам. Будет готов к production.
И это не магия. Это инженерия.