Думаю, почти все специалисты 1С знают типовую обработку "Групповое изменение реквизитов". Она всем хороша, но уж очень много кликов. С помощью ИИ сведем весь пользовательский интерфейс к одному полю ввода.
На этом простом учебном примере я хочу показать вам что скрывается "под капотом" внедрения искусственного интеллекта в существующие бизнес-системы. Для работы нам понадобится бесплатная библиотека искусственного интеллекта для 1С
Итак, как я и обещал у нас с вами одно поле ввода, куда мы вводим в произвольной форме, на естественном языке где и что на что мы хотим поменять. На прочие поля (например, модель) не обращайте внимание, они нужны нам здесь для экспериментов. Если бы мы делали что-то подобное для реального использования, мы бы все лишнее убрали. Достаточно одного поля ввода и одной кнопки. Еще было бы прекрасно, если бы этой кнопкой был микрофончик. Ждем, когда в платформе появится аудиозапись, давно пора.

Задачу можно решить двумя способами. Первый в полной мере можно охарактеризовать словосочетанием santa simplicitas. Просто просим написать для нас код, а затем запускаем его на выполнение.
&НаСервере Процедура ВыполнитьКод(код) Выполнить(код); КонецПроцедуры &НаКлиенте Процедура Рецепт1(Команда) промт="Нужен код на языке 1С для групповой замены реквизита. В ответе только код без комментариев "; промт=промт+Вопрос; Ответ=БиблиотекаИскусственногоИнтеллекта.Генерация(промт,модель,0); Ответ=стрзаменить(Ответ,"```1C",""); Ответ=стрзаменить(Ответ,"```1c",""); Ответ=стрзаменить(Ответ,"```1С",""); Ответ=стрзаменить(Ответ,"```1с",""); Ответ=стрзаменить(Ответ,"```",""); ВыполнитьКод(Ответ); КонецПроцедуры
Видите, как "мало букв"? А если бы еще не бессмысленная борьба с ```! Этот пример прекрасен в своей простоте и... практически бесполезен. У идеи выполнять произвольный код на сервере нет никаких шансов добраться до прода. Кроме того, стабильно писать работоспособный код на 1С сейчас могут далеко не все модели. А только те, которые обладают почетным званием "думающих" и соответствующим этому высокому званию ценником. Вот тут недорогая рабочая лошадка что называется "не вытянула"

Если же нам надо сделать что-то более безопасное, управляемое, недорогое, тогда придется немного потрудиться.
&НаСервере Процедура ВыполнитьЗамену(аргументы) ЧтениеJSON=Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(аргументы); ста=ПрочитатьJSON(ЧтениеJSON); ЧтениеJSON.Закрыть(); если ста.PartName="Справочники" тогда выб=справочники[ста.ObjectName].выбрать(); иначе выб=документы[ста.ObjectName].выбрать(); конецесли; пока выб.следующий() цикл если выб[ста.FieldName]=ста.LeftValue тогда об=выб.получитьобъект(); об[ста.FieldName]=ста.RigthValue; об.записать(); конецесли; конеццикла; КонецПроцедуры &НаСервере Функция ПолучитьИнструменты() нс=справочники.БИИ_Инструменты.НайтиПоНаименованию("MassUpdate1C"); если нс.Пустая() тогда нов=справочники.БИИ_Инструменты.СоздатьЭлемент(); нов.Наименование="MassUpdate1C"; нстр=нов.ПараметрыФункции.Добавить(); нстр.Имя="PartName"; нстр.Описание="Раздел метаданных"; нстр.Тип="string"; нстр.Перечень="Справочники,Документы"; нстр=нов.ПараметрыФункции.Добавить(); нстр.Имя="ObjectName"; нстр.Описание="Имя объекта"; нстр.Тип="string"; нстр=нов.ПараметрыФункции.Добавить(); нстр.Имя="FieldName"; нстр.Описание="Наименование реквизита"; нстр.Тип="string"; нстр=нов.ПараметрыФункции.Добавить(); нстр.Имя="LeftValue"; нстр.Описание="Левое значение, начальное значение"; нстр.Тип="string"; нстр=нов.ПараметрыФункции.Добавить(); нстр.Имя="RigthValue"; нстр.Описание="Правое значение, конечное значение"; нстр.Тип="string"; нов.Записать(); нс=нов.Ссылка; конецесли; рез=новый массив; рез.Добавить(нс); возврат рез; КонецФункции &НаКлиенте Процедура Рецепт2(Команда) инструменты=ПолучитьИнструменты(); рез=БиблиотекаИскусственногоИнтеллекта.Генерация(Вопрос,модель,0,инструменты); ответ=рез[0].function.arguments; ВыполнитьЗамену(рез[0].function.arguments); КонецПроцедуры
Здесь мы передаем запрос пользователя как есть. Но вместе с ним передаем также и описание функции. В ответ мы получаем не "бла-бла-бла" (хотя может случиться и такое, если пользователь вместо дела спросит, например, сколько звезд на небе), а описание вызова функции.

Советую присмотреться к функции ПолучитьИнструменты() и процедуре ВыполнитьЗамену(). Как я понимаю, это то, чем многим из нас предстоит заниматься в ближайшем будущем.
