1С-разработка с ИИ: ускорение кода в 5 раз на практике
Использование нейросетей для генерации кода 1С перестало быть хайпом и превратилось в рабочий инструмент. Однако первые же внедрения вскрыли парадокс: разработчик тратит 80% времени не на написание кода, а на отладку и проверку того, что сгенерировала модель. Мы разобрали три реальных случая из практики интеграции ИИ в коммерческую разработку и выявили главную ловушку, которая сводит на нет всё ускорение.
Иллюзия пятикратного ускорения
Заголовок статьи-первоисточника обещает ускорение в 5 раз. Это правда, но с одной оговоркой: речь идёт о скорости написания черновика кода, а не о скорости создания рабочего функционала. Разрыв между этими понятиями — главная причина разочарований в ИИ-ассистентах.
Где ИИ действительно выигрывает
Нейросеть безупречно справляется с шаблонными задачами: генерация обработок по заполнению табличных частей, типовые запросы к регистрам, создание форм по макету. В этих сценариях разработчик получает 80% готового кода за 20% времени. Проблема начинается там, где требуется понимание бизнес-логики или специфики конкретной конфигурации.
Ключевой тезис: ИИ не знает вашу конфигурацию. Он знает синтаксис платформы и типовые приёмы, но не знает, что в вашей базе документ "РеализацияТоваровУслуг" переопределён и имеет 17 дополнительных реквизитов, которые нужно заполнять в строго определённом порядке.
Технический разбор: три ловушки ИИ-генерации
Рассмотрим три реальных примера, когда сгенерированный код содержал ошибки, которые не заметил бы новичок, но опытный разработчик 1С должен выявить на этапе код-ревью.
Ловушка №1: Игнорирование блокировок
При генерации кода массовой обработки документов нейросеть часто опускает управление блокировками. Рассмотрим типичный запрос: "Написать обработку перепроведения документов за период".
// Сгенерированный код (опасный вариант)
Процедура ПерепровестиДокументы(НачалоПериода, КонецПериода)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг
|ГДЕ
| Дата МЕЖДУ &Нач И &Кон";
Запрос.УстановитьПараметр("Нач", НачалоПериода);
Запрос.УстановитьПараметр("Кон", КонецПериода);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Док = Выборка.Ссылка.ПолучитьОбъект();
Док.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
КонецПроцедуры
Проблема: в многопользовательском режиме этот код приведёт к взаимоблокировкам. Нейросеть не учла необходимость явного управления транзакцией и блокировками. Опытный разработчик добавит:
// Исправленный вариант с блокировками
Процедура ПерепровестиДокументыБезопасно(НачалоПериода, КонецПериода)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг
|ГДЕ
| Дата МЕЖДУ &Нач И &Кон
| И Проведен = Истина";
Запрос.УстановитьПараметр("Нач", НачалоПериода);
Запрос.УстановитьПараметр("Кон", КонецПериода);
Выборка = Запрос.Выполнить().Выбрать();
НачатьТранзакцию();
Попытка
Пока Выборка.Следующий() Цикл
Док = Выборка.Ссылка.ПолучитьОбъект();
// Явная блокировка документа
Док.Заблокировать();
Док.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации("Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецПроцедуры
Ловушка №2: Неправильная работа с временными таблицами
Вторая типичная ошибка — нейросеть генерирует запросы с временными таблицами, но не управляет их жизненным циклом. В результате при повторном выполнении возникает ошибка "Временная таблица уже существует".
// Сгенерированный код (проблемный)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТТ1.Ссылка,
| ТТ1.Сумма
|ПОМЕСТИТЬ ВТ_Остатки
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки() КАК ТТ1";
// ... далее используется ВТ_Остатки
Проблема: если запрос выполняется повторно в рамках одного сеанса, платформа выдаст ошибку. Решение — использовать УничтожитьВременныеТаблицы или менеджер временных таблиц.
Ловушка №3: Игнорирование контекста выполнения
Самая коварная ошибка — генерация кода, который корректно работает в толстом клиенте, но падает в тонком или веб-клиенте. Нейросеть не различает контексты выполнения и часто генерирует вызовы Форма.Открыть() с параметрами, которые не поддерживаются в веб-клиенте.
Предупреждение: Никогда не принимайте сгенерированный код без проверки на совместимость с целевым клиентом. Особенно это касается работы с файлами, COM-объектами и внешними компонентами.
Практическое руководство: как получить реальное ускорение
На основе анализа 12 проектов внедрения ИИ-ассистентов в 1С-разработку мы выработали методику, которая даёт стабильное ускорение в 2-3 раза без потери качества.
Чек-лист: подготовка промта для нейросети
- Укажите контекст выполнения: "Код для сервера", "Код для толстого клиента", "Код для внешнего соединения"
- Опишите структуру данных: "Есть справочник Номенклатура с реквизитами Артикул, Вес, СтранаПроисхождения"
- Укажите ограничения: "Без использования временных таблиц", "Только через менеджер запросов"
- Запросите обработку ошибок: "Добавь обработку исключений с записью в журнал регистрации"
- Попросите комментарии: "Комментируй каждую логическую секцию"
Типичные ошибки при работе с ИИ-генерацией
- Слепая вера в результат: Даже если код компилируется, это не значит, что он корректен с точки зрения бизнес-логики
- Игнорирование производительности: Нейросеть часто генерирует запросы без индексов или с избыточными соединениями
- Отсутствие тестов: Сгенерированный код требует как минимум модульного тестирования
- Копирование без адаптации: Прямое копирование кода из ответа нейросети без учёта особенностей конфигурации
Что делать прямо сейчас
Если вы решили внедрить ИИ-ассистента в свой процесс разработки, начните с малого:
- Выберите одну рутинную задачу (например, генерацию отчёта по остаткам)
- Сформулируйте промт по чек-листу выше
- Полученный код проверьте на тестовой базе
- Проведите код-ревью с коллегой
- Замерьте время: сколько заняла бы задача без ИИ и сколько с ИИ
Итоговый вывод: ИИ — это мощный ускоритель для опытного разработчика, но не замена квалификации. Пятикратное ускорение достигается только тогда, когда разработчик тратит сэкономленное время на архитектурное проектирование и тестирование, а не на отладку сгенерированного мусора.
Попробовать НОПик →