Тестирование 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 такая же тупая, как и самые старые модели..

См. также

Нейросети Мастера заполнения Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

5000 руб.

08.11.2023    3656    15    0    

25

Нейросети Мастера заполнения Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Абонемент ($m)

Расширение, которое подходит для любой конфигурации на платформе 1С:Предприятие 8.3 и позволяет встроить в экранные формы механизм заполнения текстовых полей при помощи DeepSeek. Методы по работе с нейросетью вынесены в отдельный модуль. Благодаря этому их легко использовать для реализации собственных схем применения DeepSeek в 1С.

2 стартмани

30.04.2025    1481    5    impro_otr    6    

20

Нейросети Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Абонемент ($m)

Данная публикация демонстрирует основы взаимодействия 1С по АПИ с GigaChat от Сбера. Приведены примеры получения токена, отправки файла для последующей обработки и чат с ИИ, и непосредственно обработка файла.

2 стартмани

14.04.2025    800    4    exitone    14    

2

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

Недавно в сервисе MAKER-STUDIO появился ИИ ассистент, разработчики также обещают, что ИИ ассистент будет добавлен и в встроенный текстовый редактор, что ускорит написание документации по проекту, а также ИИ ассистент научиться генерировать схемы и формы. Пока поделимся тем, какие функции уже есть, приведем примеры наиболее востребованных на наш взгляд ПРОМТОВ, которые могут пригодиться в работе.

12.04.2025    4877    1Concept    0    

6

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

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

09.04.2025    4263    Dziden    65    

0

Нейросети Инструментарий разработчика Программист Платформа 1С v8.3 Бесплатно (free)

Если вы раздумываете, какую бы среду разработки освоить в дополнение к старому доброму Конфигуратору, тогда для вас самое время посмотреть на этот редактор.

09.04.2025    2830    43    mkalimulin    17    

22

Инструментарий разработчика Нейросети Программист Платформа 1С v8.3 Россия Абонемент ($m)

Быстро разбирайтесь в логике отчетов (ERF) и обработок (EPF) 1С с помощью AI! Расширение анализирует код, позволяя задавать вопросы и получать понятные объяснения о работе объекта на естественном языке.

3 стартмани

07.04.2025    6070    39    vanya_gonchar    20    

24
Оставьте свое сообщение