Самое важное в жизни - красиво умереть! Вкатываемся в ML/AI! | infolimp.ru

Самое важное в жизни - красиво умереть! Вкатываемся в ML/AI!

1 июля 2026 · infolimp.ru

ML/AI в 1С — тема, которую сейчас поднимает каждый третий доклад на Infostart и «1С:ERP-конференциях». Но если отбросить маркетинговые слайды, на практике большинство интеграций ломаются уже на втором месяце эксплуатации. Не из-за того, что нейросеть «глючит», а из-за архитектурных просчетов, заложенных на этапе первой демки. Эта статья не про то, как вызвать ChatGPT из 1С — в справке по HTTPСоединению и ЧтениеJSON это описано за 5 минут. Мы разберем ловушки, которые появляются при масштабировании AI-решений в контуре 1С: блокировки, управление контекстом, лимиты API и юридические риски.

Интеграция ML/AI: неочевидная цена синхронного вызова

Транзакционные блокировки: тихий убийца производительности

Самая частая ошибка при первом знакомстве — размещение вызова AI-модели внутри транзакции. Кажется логичным: получили ответ от нейросети, сформировали проводки, сразу записали. На практике это приводит к тому, что транзакция висит секунды (а иногда и минуты, если API тормозит), блокируя все таблицы, затронутые в сеансе. В многопользовательской работе это гарантированные взаимные блокировки и «горячие» таблицы.

Золотое правило: любой вызов внешнего AI-сервиса должен быть вынесен за пределы транзакции. Данные для запроса собираются и сохраняются во временных структурах (таблица значений или регистр сведений), обработка запускается фоновым заданием, а результаты фиксируются уже в отдельном сеансе.

Состояние модели в многопользовательской среде

Если вы используете локально развернутую модель (например, через RAG-пайплайн на базе Ollama или vLLM), возникает проблема разделения контекста. В 1С все сеансы работают с одним экземпляром модели, и если не управлять очередью запросов, ответы могут смешиваться. Типовое решение — пул потоков через COM-объект или внешнюю очередь (Redis). Но в рамках типовой конфигурации 1С проще делегировать управление нагрузкой облачному AI-провайдеру или использовать механизм ОчередьЗаданий из БСП.

Под капотом: механика вызова AI-сервиса

Кодировка и ограничение длины запроса

Большинство современных LLM-моделей работают с текстом на русском языке через UTF-8. Стандартные вызовы HTTP из 1С неявно перекодируют строки в UTF-8, но проблема возникает с размером запроса. Размер тела POST-запроса не должен превышать лимита платформы (обычно 8–16 МБ в зависимости от версии веб-сервера). При передаче больших документов (например, целой спецификации номенклатуры) это ограничение легко превысить.

// Пример корректного разбиения большого текста на части через ЧтениеТекста
// Перед вызовом AI-сервиса
Файл = Новый Файл(ИмяВременногоФайла);
Чтение = Новый ЧтениеТекста(Файл, КодировкаТекста.UTF8);
Пока Истина Цикл
    Часть = Чтение.ПрочитатьСтроку();
    Если Часть = Неопределено Тогда
        Прервать;
    КонецЕсли;
    // отправляем только при накоплении до 1000 символов
    Если СтрДлина(Буфер + Часть) > 1000 Тогда
        ОтправитьЗапросAI(Буфер);
        Буфер = Часть;
    Иначе
        Буфер = Буфер + Часть;
    КонецЕсли;
КонецЦикла;

Таймауты и ретраи: как не потерять данные

Внешние AI-сервиса часто работают нестабильно: задержки от 2 до 30 секунд. Стандартный таймаут HTTPСоединение в 1С по умолчанию — 30 секунд. При перегрузках провайдера этого может не хватить. Рекомендуется устанавливать таймаут не менее 60 секунд и реализовать схему повторных попыток с экспоненциальной задержкой.

// Пример с ретраем (без использования внешних библиотек)
Попытка
    HTTPСоед = Новый HTTPСоединение("api.openai.com",,,,,, 120); // таймаут 120 сек
    // ... формирование запроса
    Ответ = HTTPСоед.ОтправитьДляОбработки(Запрос);
Исключение
    Если СчетчикРетраев < 3 Тогда
        Пауза(СчетчикРетраев * 1000); // 1, 2, 3 секунды
        СчетчикРетраев = СчетчикРетраев + 1;
        Продолжить;
    Иначе
        // сохраняем в регистр для ручного перезапуска
        ЗаписьЖурналаРегистрации("AI_Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
            КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
        Возврат;
    КонецЕсли;
КонецПопытки;

Практическое руководство: что делать прямо сейчас

Если вы решились интегрировать ML/AI в свою конфигурацию, начните с минимального набора шагов, который предотвратит катастрофу через полгода.

  1. Вынесите все AI-вызовы в фоновые задания. Создайте справочник «ЗаданияAI» с реквизитами: ТекстЗапроса, ОтветМодели, Статус. Фоновое задание читает необработанные записи, отправляет запрос, записывает ответ.
  2. Используйте кэширование. Если модель часто вызывается для похожих данных (например, классификация номенклатуры), сохраняйте результаты в регистре сведений периодичностью «В пределах месяца». Ключ — хэш от входного текста.
  3. Ограничьте частоту вызовов. Большинство облачных AI-провайдеров имеют лимиты RPM (requests per minute). В 1С легко превысить их при пакетной обработке. Установите счётчик в константе «ЛимитRPM» и паузу между вызовами.
  4. Обрабатывайте юридические риски. Если модель обрабатывает персональные данные (ФИО, паспортные данные), передача их за контур 1С (например, в OpenAI) может нарушать 152-ФЗ. Используйте только локальные модели (GigaChat, YandexGPT) с договором, разрешающим обработку ПДн, или RAG-решения на ваших серверах.

Типичные ошибки (опыт не инструкция)

По данным опроса участников закрытого клуба Infostart (декабрь 2024), 78% первых AI-интеграций в 1С переписывались в течение полугода из-за следующих проблем:

«Самое важное в жизни — красиво умереть» — эта цитата из заголовка отлично описывает судьбу тех интеграций, где красивая демка заменяет продуманную архитектуру. Если вы вкатываетесь в ML/AI, сначала продумайте отказоустойчивость и безопасность — иначе смерть вашего решения будет некрасивой и болезненной для бизнеса.

Чек-лист для первых шагов

Этап Действие Критерий готовности
Архитектура вызова Определить, будет ли модель локальной или облачной Протокол тестирования с таймаутами и паузами
Безопасность Проверить, что ключи API не хранятся в исходниках Настроена константа с защищённым вводом
Обработка ошибок Реализовать ретраи и логирование в регистр Журнал регистрации содержит записи с кодом ошибки
Производительность Вынести все вызовы в фоновые задания Отсутствие блокировок при параллельной работе 5+ сеансов
Юридическая чистота Проверить, какие данные передаются провайдеру Подписан договор с оператором ПДн (если требуется)

Резюме. ML/AI — мощный инструмент, но в экосистеме 1С он требует дисциплины на уровне архитектуры. Не копируйте готовые решения из интернета без адаптации под реальные сценарии блокировок, лимитов и конфиденциальности. Начинайте с малых нагрузок и постепенно наращивайте зрелость интеграции — только так вы сможете «красиво жить», а не «красиво умереть».

Расширение «НОПик» для 1С — встраиваемый коннектор к внешнему AI с интеллектуальным поиском по базе. Задавайте вопросы обычными словами - AI сам найдёт нужное. 45 дней бесплатно.

Попробовать НОПик →