Как стать автором
Обновить

Вайб кодинг в 1С. Лучшие нейросети для генерации 1С кода

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров11K

В статье кратко на реальных примерах проанализированы возможности генерации кода 1С сетями от Yandex, Sber, Microsoft, Anthropic, DeepSeek, OpenAI, Google

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

Я решал свою исключительно практическую задачу из разряда "лучший код - код который не написан" с уточнением: не написан своими руками. 

Своей цели я, к слову, достиг и выводы сделал, ими и делюсь, поскольку всё равно написать надо.

Много деталей приводить не буду - что отвечают нейросети можете проверить сами. Приведу только свои запросы и краткие выводы по ним. Полные выводы можете найти в конце статьи, так что кому нужен итоговый результат - листайте сразу в конец.

Что касается 1С:Напарники. Да, я его потестил. Нет, результаты написать не могу потому что NDA.

Ну и в данном случае не могу даже пожаловаться на политику 1С (хотя в общем и целом постоянные NDA для новых фич в бета сильно раздражают), потому как Напарник проектировался под автодополнение по большей части, а мы будем говорить про кодогенерацию.

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

Далее - почему задачи все такие алгоритмические и без контекста? Контекст - отдельная задача, главное чтобы сеть умела ориентироваться в алгоритмических задачах и "знать" определенные особенности 1С.

Модели, участвовавшие в "гонке":

Для начала я конечно взял статистику по другим языкам, с замечательного: https://openrouter.ai/rankings/programming 

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

Для раздела "Programming" очевидно что для 1С надо использовать что то что хорошо пишет код на других языках. 

Но его я расширил как минимум нельзя не учитывать "Российские" модели, самые популярные из которых от Яндекса и от Сбер-а. Есть гипотеза что код 1С на русском языке они должны писать лучше.

Также добавил Copilot - очень известный и давно существующий помощник. Есть гипотеза что он должен быть неплох.

Хоть что-то OpenSource-ное тоже надо бы включить. Самый приличный вариант тут вроде как DeepSeek - добавил её.

Итоговый список получился следующим:

1) MS Copilot. Версий у него особо нет - тот который "торчит из каждой дыры"

2) YandexGPT5 - с Yandex cloud

3) Sber GigaChat  - тоже та версия которая поставляется через чат интерфейс

4) Claude Sonnet 3.7

5) DeepSeek V3 0324 - что бы это не значило

6) ChatGPT 4o

7) Gemini 2.5 Pro Preview

 Ход исследования:

Да я знаю как надо правильно писать промпты и что результат можно улучшить. Максимально шакальный промпт был выбран осознанно, чтобы все модели были примерно в равных условиях потому что правила пояснений могут быть разными для разных моделей и иметь разный эффект. Поэтому промпт "только человеческий текст".  Результаты итоговые с номерами задач будут в конце статьи.

 Задача 1:

Напиши код на языке 1С который заполняет массив случайными целыми числами и потом сортирует его методом пузырька

На этой простой задаче, к сожалению, сети уже споткнулись. Страдает вывод массива и практически никто не осилил 1С-ный ГенераторСлучайныхЧисел... 

Итого у всех по 2 ошибки, чуть лучше себя показал Claude. Но внезапно с задачей полностью справился Gemini.

 Задача 2:

Создай таблицу значений с полями "номенклатура, Количество, Сумма, Дата" заполни тестовыми данными и напиши код который демонстрирует списание товара из этой таблицы по методу FIFO. При списании указывается только количество и номенклатура. Это должен быть код на языке 1С

Классическая задача 1С-ника на экзамене :). Тут полностью Лажанулся Copilot. Почти у всех сетей есть проблемы с расчетом суммы. 

Отметить можно Claude и Gemini. Вцелом у этих сетей конечно более "взрослый" код. Это заметно уже на этом этапе. С задачей они справились. gemini чуть хитрее - добавив колонку в начале. Я бы сказал сети склонный к оверинжинирингу (в 1С мы пишем код чуть проще чем в классических языках разработки), но вполне достойно.

 

Задача 3:

есть таблица - Основная таблица регистра накопления. В ней есть колонки Номенклатура, Дата, Количество, а также Цена. Пусть регистр накопления называется ОстаткиТовара. Напиши запрос на языке 1С которые получает цену товара на заданную дату. Дата задаётся в параметре запроса

Тут меня внезапно удивил Сбер - сетка справилась с задачей! При том что с этой задаче налажал Claude. Она правда немного хитрая. Gemini тоже справился с данной задачей, у остальных различного рода проблемы

 

Задача 3.1: 

есть таблица - таблица значений. В ней есть колонки Номенклатура, Дата, Количество, а также Цена. П. Напиши запрос на языке 1С которые получает цену товара на заданную дату. Дата задаётся в параметре запроса. Это должен быть именно запрос а не код для перебора таблицы

Небольшая вариативность предыдущей задачи чтобы проверить насколько сети догадаются как по таблице значений сделать запрос превратив её во временную таблицу. Вывод - не догадались :). Но есть положительные моменты - некоторые как минимум попробовали. ChatGPT понял хотя бы что нужна временная таблица, gemini сделал прекрасно всё остальное но всё таки не разобрался с ВТ.

 

Задача 3.2: 

есть таблица в базе 1С. В ней есть колонки Номенклатура, Дата, Цена. Это непереодический регистр сведений "цены товара" (использовать СрезПоследних() не получится). Напиши запрос на языке 1С которые получает актуальную (последнюю по дате) цену всех товаров на заданную дату. Дата задаётся в параметре запроса.

Финальная и самая популярная модификация. Ожидаемо справились Cloude и Gemini. К лидерам присоединились сетка от Сбер-а и ChatGPT. У остальных не получилось "осознать" задачу с небольшой хитростью

 

Задача 4: 

Есть справочник номенклатура с неограниченным числом уровней иерархии. Нужно запросом вывести все его группы и уровень иерархии каждой. Запрос на языке 1С.

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

 На этом этапе я перестал тестировать дальше явных аутсайдеров. "Гонку" покидают Yandex и Copilot

 

Задача 5: 

 Используя API с сайта ЦБ РФ https://www.cbr.ru/development/sxml/ напиши код на языке 1С Предприятия для загрузки курса доллара за последний год на каждый день в таблицу значений

Тут чуть попроще но проверяем работу со сторонними ресурсами и как оно справится с API. Очень приличный и качественный результат получил от Gemini - был приятно удивлён. Вряд ли сам написал бы лучше. Claude перестарались ещё больше. Человеку я бы тут уже начал задавать вопросы касательно обилия свободного времени и чрезмерной увлеченностью книжками по чистой архитектуре, но ИИ как бы время не тратит поэтому почему бы и нет... На уровне среднестатистического стажера программиста справился DeepSeek. Был близок к истине Сбер. ChatGPT в этой задаче подкачал 

 

Задача 6: 

Есть файл Excel с колонками: Артикул, Наименование, Описание, Единица измерения. Есть справочник Номенклатура в 1С с аналогичными реквизитами. Напиши код на языке 1С для загрузки данного Excel файла в справочник.

Классика каждого 1С-ника. Для нейросетей тоже проблем не вызвала. Все, кроме Сбер-а справились с задачей. Claude и Gemini естественно чуть лучше.

 

Задача 7:

У меня есть две одновременно открытые управляемые формы в 1С. На одной из форм есть заполненная табличная часть "товары", мне нужно передать наполнение этой табличной части во вторую форму чтобы отобразить его на ней. Напиши код для одной формы и для второй.

Тоже в принципе классика для 1С. И если честно тут модели немного расстроили. Было ожидание что они справятся с данной задачей достаточно легко. На поверку оказалось что справился только Gemini и то не совсем оптимальным и правильным образом. Немного близок к тому что надо был Claude. Остальные по традиции далеки.

 

Задача 8:

У меня в конфигурации есть справочник Номенклатура - напиши код на языке 1С для его выгрузки в идентичную конфигурацию.

Тут конечно надо вспомнить про возможность сериализации любого объекта в 1С. Лёгкая задача для разработчика, тяжелая для сети. Тем не менее, Gemini с ней справилась. ChatGPT и Claude написали неплохой код, но не то что требуется. Сбер и DeepSeek с задачей не справились полностью

 

Задача 9:

В конфигурации 1С Справочник Номенклатура, у него на форме элемента есть элемент с типом "Декорация" с видом "Картинка", называется "Картинка" а также реквизит "Картинка" с типом "ХранилищеЗначения". Напиши код который отображает картинку из реквизита при открытии формы и при нажатии на картинку на форме даёт возможность выбора файла с картинкой и перезаписывает её для элемента

Тоже классика для джунов. Но из сетей, к сожалению без проблем с задачей справилась только Gemini. Claude тоже в принципе но с ошибкой. Остальные сети сгенерировали код который надо основательно править.

На этом этапе, я думаю, всем очевидно что "Гонку" могут не продолжать DeepSeek, ChatGPT, GigaChat. Собственно останутся только Claude и Gemini.

 

Задача 10:

На форме документа 1С основной реквизит "Объект". У документа есть реквизит "Комментарий". Напиши код, работающий при нажатии на кноку "Записать комментарий", который в комментарий документа добавляет слово "Тест" - к текущему комментарию и записывает документ в базу данных не закрывая формы.

Тоже задачка для джунов и нейросети с ней справились плохо. Gemini написало рабочий код но он не сделает то что надо :).

Claude уже чуть лучше, но c ошибкой которую совершают все джуны для чего эта задачка и нужна

 

Задача 11:

На форме документа 1С есть табличная часть "товары". В документе обычно более 1000 строк. В табличной части есть реквизит "Сумма". Напиши код который работает при нажатии на кнопку "общая сумма" который должен посчитать сумму по всем строкам и вывести её пользователю

А тут как раз проблема в том что джуны частенько считают сумму на клиенте. Очевидная история - сходить на сервер. Обе сети успешно справились с задачей, но в своём стиле - оверинжиниринг присутствует. У Claude в данном случае получился чуть более лаконичный код

 

Итого:

Каждую модель по каждой задаче я оценил от 0 до 10. Где 0 - данный ответ вообще бесполезен и никак не поможет в решении реальной задачи, 10 - я сам так не напишу, при этом весь код по делу.

Итоговый скоринг в таблице:

Вообщем исходя из этой таблицы самые приличные модели для написания кода 1С - Gemini и Claude.

 

Выводы:

 1) Генерация кода для 1С возможна - и работает весьма неплохо. Это жуткая экономия времени в перспективе, даже без учета контекста. Но не для всех задач сейчас конечно.

2) Лучшая модель для генерации Gemini, но с учетом субъективности и погрешностей Gemini и Claude сопоставимы. Можно выбрать любую с которой удобнее работать. Стоит добавить что вцелом относительно других моделей эти две отличаются прямо в разы, даже в задачах которые решили все модели код Gemini и Claude более "красивый", с необходимыми проверками, качественно оформлен, вообщем очевидно что лучше использовать только их

3) Относительно языков программирования общего назначения 1С-ный код генерируется существенно хуже, главная причина - не алгоритмика а отсутствие знаний и необходимого контекста

 

Что дальше:

Ну лично я сейчас планирую написать небольшой MCP сервер, для репозиториев 1С EDT, которому скормить контекст именно конкретного репозитория. Ну и выгрузку справки пожалуй тоже. Это всё сегментировать, залить в векторную БД и подключить как MCP к Curosor. Кажется качество ответов должно вырасти в разы, и область применения существенно расширится. Кому интересно попробовать такую фичу ставьте лайк, пишите коммент. Ну и да, подписывайтесь на мой канал https://t.me/comol_it_does_matter

Теги:
Хабы:
+16
Комментарии30

Публикации

Работа

Ближайшие события