Подключи искусственный интеллект к 1С:Предприятие. Генерация описаний, анализ данных, автоматизация рутины.
Генерация описаний товаров из характеристик
AI-выводы по данным продаж и остатков
Генерация писем и коммерческих предложений
Встроенный объект 1С для HTTP-запросов. Работает в любой конфигурации без доработки.
Отдельный файл, не требует изменения конфигурации. Легко распространять.
Добавьте эту функцию в общий модуль или внешнюю обработку:
// Функция вызова Claude API через CryptoCat
// Параметры: Промпт - текст запроса к AI
// Возвращает: Строка - ответ от AI
Функция ВызватьClaude(Промпт) Экспорт
APIКлюч = "sk-ваш-ключ"; // Ваш API ключ CryptoCat
// Формируем тело запроса
ТелоЗапроса = Новый Структура;
ТелоЗапроса.Вставить("model", "claude-sonnet-4-20250514");
ТелоЗапроса.Вставить("max_tokens", 1024);
Сообщение = Новый Структура;
Сообщение.Вставить("role", "user");
Сообщение.Вставить("content", Промпт);
МассивСообщений = Новый Массив;
МассивСообщений.Добавить(Сообщение);
ТелоЗапроса.Вставить("messages", МассивСообщений);
// Конвертируем в JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса);
СтрокаJSON = ЗаписьJSON.Закрыть();
// Создаём HTTP соединение
ЗащищённоеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
HTTPСоединение = Новый HTTPСоединение(
"api.cryptocatslab.ru",
443,
, , ,
30,
ЗащищённоеСоединение
);
// Формируем запрос
HTTPЗапрос = Новый HTTPЗапрос("/v1/chat/completions");
HTTPЗапрос.Заголовки.Вставить("Authorization", "Bearer " + APIКлюч);
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8);
// Отправляем POST запрос
Попытка
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Исключение
Возврат "Ошибка соединения: " + ОписаниеОшибки();
КонецПопытки;
// Проверяем статус
Если HTTPОтвет.КодСостояния <> 200 Тогда
Возврат "Ошибка API: " + HTTPОтвет.КодСостояния;
КонецЕсли;
// Парсим ответ
СтрокаОтвета = HTTPОтвет.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаОтвета);
Результат = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
// Извлекаем текст ответа
Если ТипЗнч(Результат) = Тип("Структура") Тогда
Если Результат.Свойство("choices") Тогда
Выборки = Результат.choices;
Если Выборки.Количество() > 0 Тогда
Возврат Выборки[0].message.content;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат "Ошибка разбора ответа";
КонецФункцииАвтоматическое создание продающих описаний товаров из характеристик:
// Генерация описания для карточки товара
Процедура СгенерироватьОписание(Номенклатура)
// Собираем характеристики товара
Наименование = Номенклатура.Наименование;
Артикул = Номенклатура.Артикул;
// Получаем характеристики (пример для УТ)
ТекстХарактеристик = "";
Для Каждого Строка Из Номенклатура.ДополнительныеРеквизиты Цикл
ТекстХарактеристик = ТекстХарактеристик +
Строка.Свойство + ": " + Строка.Значение + Символы.ПС;
КонецЦикла;
// Формируем промпт
Промпт = "Напиши продающее описание товара для интернет-магазина.
Товар: " + Наименование + "
Артикул: " + Артикул + "
Характеристики:
" + ТекстХарактеристик + "
Требования:
- 2-3 абзаца
- Выгоды для покупателя
- SEO-оптимизация
- Без воды, только конкретика";
// Вызываем AI
Описание = ВызватьClaude(Промпт);
// Записываем результат
Номенклатура.Описание = Описание;
Номенклатура.Записать();
КонецПроцедурыПолучение выводов и рекомендаций на основе данных:
// Анализ данных продаж за период
Функция АнализПродаж(ДатаНачала, ДатаОкончания)
// Получаем данные из 1С
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Продажи.Номенклатура.Наименование КАК Товар,
| СУММА(Продажи.Количество) КАК Количество,
| СУММА(Продажи.Сумма) КАК Выручка
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
|СГРУППИРОВАТЬ ПО
| Продажи.Номенклатура
|УПОРЯДОЧИТЬ ПО
| Выручка УБЫВ";
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
// Формируем текст для анализа
ТекстДанных = "Продажи за период " + ДатаНачала + " - " + ДатаОкончания + ":
";
Пока Выборка.Следующий() Цикл
ТекстДанных = ТекстДанных +
Выборка.Товар + ": " +
Выборка.Количество + " шт., " +
Выборка.Выручка + " руб." + Символы.ПС;
КонецЦикла;
// Запрос к AI
Промпт = "Проанализируй данные продаж и дай рекомендации:
" + ТекстДанных + "
Ответь кратко:
1. Топ-3 товара по выручке
2. Товары с падением продаж (если есть)
3. Рекомендации по ассортименту
4. Что закупить в первую очередь";
Возврат ВызватьClaude(Промпт);
КонецФункцииПерсонализированные письма на основе данных из 1С:
// Генерация письма для клиента
Функция СгенерироватьПисьмо(Контрагент, ТипПисьма)
// Данные клиента
Наименование = Контрагент.Наименование;
КонтактноеЛицо = Контрагент.КонтактноеЛицо;
// Последние заказы
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 5
| Заказы.Дата,
| Заказы.СуммаДокумента
|ИЗ
| Документ.ЗаказКлиента КАК Заказы
|ГДЕ
| Заказы.Контрагент = &Контрагент
|УПОРЯДОЧИТЬ ПО
| Заказы.Дата УБЫВ";
Запрос.УстановитьПараметр("Контрагент", Контрагент.Ссылка);
ИсторияЗаказов = "";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ИсторияЗаказов = ИсторияЗаказов +
Формат(Выборка.Дата, "ДФ=dd.MM.yyyy") + " - " +
Выборка.СуммаДокумента + " руб." + Символы.ПС;
КонецЦикла;
// Выбираем тип письма
Если ТипПисьма = "Напоминание" Тогда
Промпт = "Напиши вежливое письмо-напоминание клиенту.
Клиент: " + Наименование + "
Контактное лицо: " + КонтактноеЛицо + "
История заказов:
" + ИсторияЗаказов + "
Цель: напомнить о себе, предложить сделать новый заказ.
Тон: дружелюбный, не навязчивый. До 150 слов.";
ИначеЕсли ТипПисьма = "Благодарность" Тогда
Промпт = "Напиши письмо благодарности клиенту за заказ.
Клиент: " + Наименование + "
Тон: тёплый, искренний. До 100 слов.";
КонецЕсли;
Возврат ВызватьClaude(Промпт);
КонецФункцииAI определяет категорию товара по наименованию и характеристикам
Генерация комментариев, оснований, пояснений к документам
Анализ входящих писем и подготовка ответов
AI-рекомендации по закупкам на основе истории продаж