Тестирование openAI chatgpt модели о3 на способность писать код на 1С с помощью поиска в интернете

05.05.25

Интеграция - Нейросети

Все пишут, какой умный о3 от openAI, как он прекрасно разбирается в логике и какой у него замечательный механизм рассуждения. Проверим это на примитивных задачах 1С. Мы знаем, что буржуйский зверь не учили на нормальных данных по 1С и, следовательно, он толком ничего не умеет, но при этом он неплохо ищет в интернете, так вот заценим, сможет ли он скомпилировать что-то рабочее из того, что он там в интернетах найдет.

Пользователь

Для 1С:Предприятия версии 8.3 Управляемые Формы найди, как программно добавить кнопку на форму, т.е. кнопка должна быть на самой форме, после того, как ты найдешь данные, тебе нужно:

1. создать кнопку на форме с именем "Моя кнопка"

2. при нажатии на кнопку должно вывестись сообщение "Нажата кнопка"

Вот код для начала работы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Вставить содержимое обработчика.
КонецПроцедуры

Вначале произведи поиск, как выполнить задания.

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

При составлении ответа не используй таблицы

 

chatgpt модель о3

Вот минимальный и работающий пример, который добавляет на управляемую форму кнопку «Моя кнопка» и выводит сообщение «Нажата кнопка» при её нажатии.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	//--- 1. Создаём команду, которую будет выполнять кнопка
	КомандаМояКнопка = ЭтаФорма.Команды.Добавить("КомандаМояКнопка"); // уникальное имя
	КомандаМояКнопка.Заголовок = "Моя кнопка";                       // текст, который увидит пользователь
	КомандаМояКнопка.Действие  = "ПриНажатииМоейКнопки";             // обработчик на клиенте

	//--- 2. Добавляем саму кнопку внутрь формы (а не в командную панель)
	КнопкаМоя = ЭтаФорма.Элементы.Добавить("МояКнопка",
	                                       Тип("КнопкаФормы"),
	                                       ЭтаФорма);                 // родитель – сама форма
	КнопкаМоя.ИмяКоманды = "КомандаМояКнопка";                       // связываем кнопку с командой

КонецПроцедуры


&НаКлиенте
Процедура ПриНажатииМоейКнопки(Команда)

	Сообщить("Нажата кнопка");

КонецПроцедуры

 

Почему так работает

 

  • В событии ПриСозданииНаСервере динамически создаём визуальный элемент через Элементы.Добавить() и команду через Команды.Добавить() – именно так рекомендует официальная документация и практические шпаргалки.

  • У кнопки указываем ИмяКоманды, чтобы она автоматически «знала», какой обработчик вызвать. Такой приём показан в примерах по программному созданию кнопок.

  • Действие команды привязываем к клиентской процедуре ПриНажатииМоейКнопки, где выводим сообщение–индикатор клика. Создание и привязку команды описывает отдельная шпаргалка.

В результате после открытия формы пользователь увидит новую кнопку «Моя кнопка»; при нажатии всплывает сообщение «Нажата кнопка».


Пользователь

 

Исходя из найденных данных обнови код, чтобы на форме было: две кнопки "Кнопка 1" и "Кнопка 2", при нажатии каждой из кнопок выдавалось сообщение вида Нажата кнопка и номер кнопки

 

chatgpt модель о3

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	// --- 1. Команды для кнопок
	КомандаКнопка1 = ЭтаФорма.Команды.Добавить("КомандаКнопка1");
	КомандаКнопка1.Заголовок = "Кнопка 1";
	КомандаКнопка1.Действие  = "ПриНажатииКнопка1";   // клиентский обработчик

	КомандаКнопка2 = ЭтаФорма.Команды.Добавить("КомандаКнопка2");
	КомандаКнопка2.Заголовок = "Кнопка 2";
	КомандаКнопка2.Действие  = "ПриНажатииКнопка2";

	// --- 2. Сами кнопки на форме
	Кнопка1 = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ЭтаФорма);
	Кнопка1.ИмяКоманды = "КомандаКнопка1";

	Кнопка2 = ЭтаФорма.Элементы.Добавить("Кнопка2", Тип("КнопкаФормы"), ЭтаФорма);
	Кнопка2.ИмяКоманды = "КомандаКнопка2";

КонецПроцедуры


&НаКлиенте
Процедура ПриНажатииКнопка1(Команда)
	Сообщить("Нажата кнопка 1");
КонецПроцедуры


&НаКлиенте
Процедура ПриНажатииКнопка2(Команда)
	Сообщить("Нажата кнопка 2");
КонецПроцедуры

 

Пользователь

 

1. Добавь заголовок не только для Команд, но и для Кнопок

2. При нажатии на кнопку 2 пусть выводит ее заголовок в виде "Заголовок:" заголовок кнопки

 

chatgpt модель о3

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	// --- 1. Команды
	КомандаКнопка1 = ЭтаФорма.Команды.Добавить("КомандаКнопка1");
	КомандаКнопка1.Заголовок = "Кнопка 1";
	КомандаКнопка1.Действие  = "ПриНажатииКнопка1";

	КомандаКнопка2 = ЭтаФорма.Команды.Добавить("КомандаКнопка2");
	КомандаКнопка2.Заголовок = "Кнопка 2";
	КомандаКнопка2.Действие  = "ПриНажатииКнопка2";

	// --- 2. Кнопки-элементы на форме
	Кнопка1 = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ЭтаФорма);
	Кнопка1.ИмяКоманды = "КомандаКнопка1";
	Кнопка1.Заголовок  = "Кнопка 1";   // заголовок самой кнопки

	Кнопка2 = ЭтаФорма.Элементы.Добавить("Кнопка2", Тип("КнопкаФормы"), ЭтаФорма);
	Кнопка2.ИмяКоманды = "КомандаКнопка2";
	Кнопка2.Заголовок  = "Кнопка 2";   // заголовок самой кнопки

КонецПроцедуры


&НаКлиенте
Процедура ПриНажатииКнопка1(Команда)
	Сообщить("Нажата кнопка 1");
КонецПроцедуры


&НаКлиенте
Процедура ПриНажатииКнопка2(Команда)
	// получаем заголовок второй кнопки и выводим
	ЗаголовокКнопки = ЭтаФорма.Элементы.Кнопка2.Заголовок;
	Сообщить("Заголовок: " + ЗаголовокКнопки);
КонецПроцедуры

Пользователь

Теперь добавь следующее: при нажатии на кнопку 1 мы будем менять заголовок кнопки 2 следующим образом: добавлять к номеру заголовка по 1 при нажатии, т.е. если у нас "Заголовок 2", то при нажатии у нас будет Заголовок 3 4 5 и т.д.

Если не знаешь, как это сделать правильно, воспользуйся поиском в интернете

 

chatgpt модель о3

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	// --- 1. Команды
	КомандаКнопка1 = ЭтаФорма.Команды.Добавить("КомандаКнопка1");
	КомандаКнопка1.Заголовок = "Кнопка 1";
	КомандаКнопка1.Действие  = "ПриНажатииКнопка1";

	КомандаКнопка2 = ЭтаФорма.Команды.Добавить("КомандаКнопка2");
	КомандаКнопка2.Заголовок = "Кнопка 2";
	КомандаКнопка2.Действие  = "ПриНажатииКнопка2";

	// --- 2. Кнопки-элементы
	Кнопка1 = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ЭтаФорма);
	Кнопка1.ИмяКоманды = "КомандаКнопка1";
	Кнопка1.Заголовок  = "Кнопка 1";

	Кнопка2 = ЭтаФорма.Элементы.Добавить("Кнопка2", Тип("КнопкаФормы"), ЭтаФорма);
	Кнопка2.ИмяКоманды = "КомандаКнопка2";
	Кнопка2.Заголовок  = "Кнопка 2";

КонецПроцедуры


&НаКлиенте
Процедура ПриНажатииКнопка1(Команда)

	// текущий заголовок второй кнопки
	ЗаголовокКноп2 = ЭтаФорма.Элементы.Кнопка2.Заголовок;

	// извлекаем числовую часть, увеличиваем её на 1
	СтрНомер = СокрЛП(СтрЗаменить(ЗаголовокКноп2, "Кнопка", ""));
	Номер    = Число(СтрНомер);
	Если Номер = Неопределено Тогда
		Номер = 1; // защита от ошибок распознавания
	КонецЕсли;
	Номер = Номер + 1;

	// строим новый заголовок и применяем
	НовыйЗаголовок = "Кнопка " + Номер;
	ЭтаФорма.Элементы.Кнопка2.Заголовок          = НовыйЗаголовок;
	ЭтаФорма.Команды.КомандаКнопка2.Заголовок   = НовыйЗаголовок;

	Сообщить("Нажата кнопка 1");

КонецПроцедуры


&НаКлиенте
Процедура ПриНажатииКнопка2(Команда)

	ЗаголовокКнопки = ЭтаФорма.Элементы.Кнопка2.Заголовок;
	Сообщить("Заголовок: " + ЗаголовокКнопки);

КонецПроцедуры

 

Пользователь

Ошибка при установке значения атрибута контекста (Заголовок) ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(42)}: ЭтаФорма.Команды.КомандаКнопка2.Заголовок = НовыйЗаголовок;

по причине:

Изменение свойств команд недоступно на клиенте

Вот такая ошибка получается, я не буду подсказывать, по какой причине, просто намекну, что не все нужно менять

 

chatgpt модель о3

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	// --- 1. Команды
	КомандаКнопка1 = ЭтаФорма.Команды.Добавить("КомандаКнопка1");
	КомандаКнопка1.Заголовок = "Кнопка 1";
	КомандаКнопка1.Действие  = "ПриНажатииКнопка1";

	КомандаКнопка2 = ЭтаФорма.Команды.Добавить("КомандаКнопка2");
	КомандаКнопка2.Заголовок = "Кнопка 2";
	КомандаКнопка2.Действие  = "ПриНажатииКнопка2";

	// --- 2. Кнопки-элементы на форме
	Кнопка1 = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ЭтаФорма);
	Кнопка1.ИмяКоманды = "КомандаКнопка1";
	Кнопка1.Заголовок  = "Кнопка 1";

	Кнопка2 = ЭтаФорма.Элементы.Добавить("Кнопка2", Тип("КнопкаФормы"), ЭтаФорма);
	Кнопка2.ИмяКоманды = "КомандаКнопка2";
	Кнопка2.Заголовок  = "Кнопка 2";   // будем менять только этот заголовок

КонецПроцедуры


&НаКлиенте
Процедура ПриНажатииКнопка1(Команда)

	// Текущий заголовок второй кнопки («Кнопка N»)
	ЗаголовокКноп2 = ЭтаФорма.Элементы.Кнопка2.Заголовок;

	// Извлекаем номер и увеличиваем его на 1
	СтрНомер = СокрЛП(СтрЗаменить(ЗаголовокКноп2, "Кнопка", ""));
	Номер    = Число(СтрНомер);
	Если Номер = Неопределено Тогда
		Номер = 1;
	КонецЕсли;
	Номер = Номер + 1;

	// Новый заголовок второй кнопки
	НовыйЗаголовок = "Кнопка " + Номер;

	// Меняем только заголовок элемента (команду трогать не нужно R13; иначе будет ошибка)
	ЭтаФорма.Элементы.Кнопка2.Заголовок = НовыйЗаголовок;

	Сообщить("Нажата кнопка 1");

КонецПроцедуры


&НаКлиенте
Процедура ПриНажатииКнопка2(Команда)

	ЗаголовокКнопки = ЭтаФорма.Элементы.Кнопка2.Заголовок;
	Сообщить("Заголовок: " + ЗаголовокКнопки);

КонецПроцедуры

 

Мысли:

После некоторого мытарства выводы простые: на текущий момент, самая передовая система о3 от openAI пишет на 1С, примерно так же как в свое время chatgpt 3.5 самая ранняя версия писала на python, а может, и еще хуже.

Нужно попробовать взять уже готовый код и посмотреть с шаблонами кода, она способна на что-то большее или это тупиковый путь и без обучения о3 такая же тупая, как и самые старые модели..

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Администрирование веб-серверов Сервера Нейросети Программист Платные (руб)

Сервер поиска по метаданным и поиска по коду, Сервер экспорта и поиска по документации, Сервер синтаксической проверки кода

17.06.2025    17039    0    Infostart    20    

113

Инструментарий разработчика Нейросети Платные (руб)

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

9900 руб.

25.08.2025    22426    57    9    

60

Мастера заполнения Нейросети 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Платные (руб)

Расширение для заполнения описания товара (номенклатуры) с помощью модели ИИ ChatGPT с ключевыми словами. Расширение формирует продающее описание товара по его наименованию с помощью модели искусственного интеллекта. Будет полезно для владельцев интернет магазинов, каталогов товаров и продающих через маркетплейсы. Адаптировано для основных конфигураций: УТ, ЕРП, КА, УНФ. Прошло аудит на 1cfresh.com. Версия для автоматического заполнения

5000 руб.

13.03.2023    21635    55    50    

79

Нейросети Пользователь 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

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

6000 руб.

03.04.2024    11778    6    0    

11

Нейросети Программист Бесплатно (free)

Большие языковые модели все чаще применяются для генерации кода на 1С, но до сих пор нет единого способа объективно сравнить их качество. Объясняем, как работают метрики BLEU, CodeBLEU и pass@k, и как их можно адаптировать для оценки LLM в экосистеме 1С. Показываем, какие задачи – от простых функций до рефакторинга – помогают полноценно оценить интеллект модели и ее знание платформы. Разбираем ключевую проблему проверки логики и синтаксиса в автоматическом режиме и показываем бенчмарк, который решает эту задачу, сравнивая ChatGPT, Claude, GigaChat и другие модели по единым стандартам.

31.10.2025    2452    Vaslot    14    

16

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

ИИ для код-ревью – не просто модный тренд, а реальный инструмент, который уже помогает разработчикам экономить время и повышать качество кода. В статье разбираемся, как запустить локальную LLM на базе Ollama, подключить ее к Git через Webhook и Python-скрипт, а также какие параметры модели отвечают за точность и галлюцинации. Делимся схемой работы, настройками и результатами тестирования, доказывая, что автоматизированное код-ревью действительно может работать – даже без космического бюджета.

30.10.2025    2813    user2100900    3    

12

Нейросети Бесплатно (free)

Если вам кажется, что искусственный интеллект – это просто модный хайп, то самое время пересмотреть свои взгляды. Показываем, как с помощью протокола MCP (Model Context Protocol) превратить языковую модель в полноценного помощника, способного работать с вашей базой 1С: запрашивать данные, анализировать метаданные и создавать новые объекты по команде. На живых примерах объясняем, как подключить MCP-сервер к IDE Cursor, безопасно использовать локальные модели и уже сегодня начать интегрировать 1С и приложения с ИИ. Вы получите готовый open-source проект, с которым сразу сможете начать свои эксперименты.

27.10.2025    8554    wonderboy    24    

46

Нейросети Программист Бесплатно (free)

Искусственный интеллект перестал быть только «чатиком для домашних дел» – отечественные on-prem LLM уже сегодня помогают автоматизировать бизнес-процессы. Поделимся практическими кейсами внедрения LLM, покажем примеры из 1С и других корпоративных систем и расскажем, где нейросети действительно заменяют человека, а где пока нет. Вы узнаете, как безопасно и эффективно использовать LLM в автоматизации, на что обратить внимание и какие перспективы это открывает для сообщества 1С.

27.10.2025    1047    user1983065    0    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Pavel_Vladivostok 58 06.05.25 07:05 Сейчас в теме
Вообще он неплохо справился, я устанавливал локальные модели и обучал их в чате, они запоминают задачи и подсказки при общении в чате, и в дальнейшем выводят результаты вспоминая прошлые чаты, но это очень долго. Пока не будет полноценного обучения, это все почти бесполезно.
5. IncomeGroup 41 06.05.25 11:39 Сейчас в теме
(1) Да, я пробовал запихать в файл информацию о том, как кодировать и да, он вполне может выдирать шаблоны из файла и что-то толковое писать, но если данных в файле много он начинает в них путаться, перестает понимать, что к чему относится и начинает писать бред.

Согласен, что без полноценного обучения все эти нейросети для 1С бесполезны.

Вроде, что-то фирма 1С делает https://code.1c.ai/
но увы "Пилотное использование доступно партнерам 1С"
2. mkalimulin 1600 06.05.25 07:37 Сейчас в теме
4. IncomeGroup 41 06.05.25 11:34 Сейчас в теме
(2) o1-pro я пробовал, он еще хуже чем о3
3. mkalimulin 1600 06.05.25 07:42 Сейчас в теме
Дело не в том, что "буржуйский зверь не учили на нормальных данных по 1С". Учили. Все данные, которые в принципе сейчас доступны по 1С были использованы в обучении, можете быть уверены. Дело в том, что самих данных как таковых несколько меньше, чем для Python. Модели вытягивают задачи по 1С на способности к обобщениям и на удаче
6. user2144868 06.05.25 17:34 Сейчас в теме
А почему не пробовали deepseek и qwen.
Они неплохи в программировании и более доступны.
7. ivv1970 30 23.07.25 16:36 Сейчас в теме
(6)

По заданию №1 deepseek выдал следующее:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Вызов клиентской процедуры создания кнопки
    ВыполнитьНаКлиенте("СоздатьКнопкуНаКлиенте");
КонецПроцедуры

&НаКлиенте
Процедура СоздатьКнопкуНаКлиенте()
    // Создание кнопки
    Кнопка = Элементы.Добавить("МояКнопка", Тип("КнопкаФормы"));
    
    // Настройка свойств кнопки
    Кнопка.Заголовок = "Моя кнопка";
    Кнопка.Положение = Новый ПоложениеЭлемента(10, 10); // Позиция (слева, сверху)
    Кнопка.Ширина = 100; // Ширина в пикселях
    
    // Подписка на событие нажатия
    Кнопка.УстановитьДействие("Нажатие", "НажатиеМоейКнопки");
КонецПроцедуры

&НаКлиенте
Процедура НажатиеМоейКнопки(Элемент)
    // Обработка нажатия кнопки
    Сообщить("Нажата кнопка");
КонецПроцедуры
Показать
Для отправки сообщения требуется регистрация/авторизация