Я пускаю ИИ-агента в боевую 1С с кассами. Вот контур безопасности

25.08.26

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

Год отдаю ИИ-агенту правки расширений боевой УТ 11.5 — той самой, на которой в этот момент пробивают чеки. Торговля не вставала ни разу. Статей про то, как ИИ пишет обработку за три минуты, много; про то, что делать, чтобы она не остановила кассы, я не встречал. Восемь слоёв контура: стоп-кран на необратимом, изоляция контуров, песочница внутри боевой базы, гейт компиляции, бэкап, сухой прогон, проверка фактом и ревью диффа по фиксированному списку.

О чём это

Год назад я начал отдавать ИИ-агенту правки расширений боевой УТ 11.5. Не демо-базы, не копии — той самой, на которой в этот момент пробивают чеки в магазинах розничной сети. Торговля с тех пор не вставала ни разу по вине агента.

Статей про то, как ИИ пишет обработку за три минуты, сейчас много. Статей про то, что делать, чтобы эта обработка не остановила кассы, я не встречал ни одной. А вопрос ровно этот: пустить агента в песочницу не страшно, страшно пустить туда, где деньги.

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

Ключевая мысль, ради которой всё писалось: доверие к агенту — не тот параметр, которым надо управлять. Управлять надо тем, что он физически может сломать.


Почему обычные меры не работают

Первое, что приходит в голову — «пусть агент показывает изменения, я буду смотреть». Это ломается о два обстоятельства.

Объём. Агент за час выдаёт больше диффа, чем вы вдумчиво прочитаете за день. Через неделю вы начинаете просматривать по диагонали, а ещё через неделю — доверять отчёту «готово».

Отчёт врёт не по злому умыслу. Агент честно пишет «созданы, существуют» — и это правда. Просто объект создан без обязательных реквизитов, которые заполняет форма, и в интерфейсе его нет. Я ловил ровно это: мои программные проверки говорили «всё в порядке», а владелец бизнеса открыл список и не увидел записей. Проверка проверяла существование, а не пригодность.

Отсюда вывод, вокруг которого построено всё остальное: контур должен ловить не намерения, а последствия.


Слой 1: стоп-кран на необратимом

Первое и главное. Есть список операций, перед которыми агент обязан остановиться и спросить — независимо от того, насколько он уверен.

У меня список выглядит так:

  • DROP, TRUNCATE, DELETE без жёсткого WHERE; ALTER на боевой БД вне записанной миграции;
  • любая правка денег: балансы, начисления и списания бонусов руками, правка оплат;
  • проведение, распроведение, удаление документов 1С;
  • LoadConfigFromFiles и UpdateDBCfg без бэкапа расширения;
  • git push --force, reset --hard на общей ветке;
  • rm -rf, остановка контейнеров, пересборка образа без тега для отката;
  • chmod и chown на системные каталоги, .env, ключи и сертификаты;
  • ротация любых секретов — это мгновенно ломает живые интеграции;
  • выкладка мобильного приложения в стор или OTA — это прод для всех, у кого стоит приложение.

Формат вопроса зафиксирован жёстко, и это важнее самого списка:

Сейчас сделаю: <команда>
Сломает: <кто и что>
Откат: <бэкап / тег образа / migrate down>
Делать?

Три поля, и каждое работает. Команда — чтобы я видел ровно то, что выполнится, а не пересказ. Сломает — заставляет агента самому оценить радиус поражения, и на этом шаге он иногда сам передумывает. Откат — самое ценное: если агент не может назвать способ отката, значит операцию делать нельзя вообще, и разговор окончен.

И правило, без которого всё разваливается: молчание не равно согласию. Пока нет явного «да» — команда не запускается. Не «я подожду немного», не «пользователь наверняка не против».


Слой 2: изоляция контура

Если у вас одна база — пропустите. Если несколько — это второй по важности слой.

У меня на одном сервере живут базы разных организаций, плюс отдельная франшизная база, плюс несколько разных сайтов и бэкендов. Ошибка «применил правку не в ту базу» стоит дороже, чем плохой код: вы вносите чужую бизнес-логику в чужой учёт.

Правило простое: пока не назван контур — не трогать боевое. В первом же абзаце работы агент обязан написать: какая организация, какой хост, какая база, какой репозиторий.

Отдельно — список того, что нельзя переносить между контурами ни при каких обстоятельствах: константы бонусных программ, пороги, промо-механики, реферальные правила, пути публикаций, ключи подписи, секреты, SQL из чужой базы. Это выглядит очевидным ровно до того момента, когда агент «переиспользует» удачное решение из соседнего проекта.

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


Слой 3: песочница внутри боевой базы

Приём, который экономит больше всего нервов.

Агенту регулярно нужно что-то посмотреть в базе: содержимое регистра, структуру документа, результат функции. Единственный работающий способ выполнить произвольный код в боевой 1С на Linux-сервере без графической сессии — HTTP-метод в расширении. А это означает правку расширения и применение изменений к базе, то есть риск.

Решение: завести одно маленькое непрофильное расширение и держать все эксперименты только там.

Логика прямая. Если ошибиться в расширении, которое обслуживает кассу, встанет торговля. Если ошибиться в расширении, которое считает что-то третьестепенное и к кассам отношения не имеет, — цена ошибки близка к нулю.

У меня для этого выделено расширение с логикой одной второстепенной подсистемы: маленькое, редко меняется, ни на что критичное не влияет. Все временные диагностические методы живут там и только там. Расширение, которое кормит кассу, для экспериментов закрыто наглухо.

Дополнительное правило: токен временного метода — в константу, не в код. У меня до сих пор в боевом расширении живёт метод переотправки с зашитым в модуль токеном, потому что «уберу потом». Не повторяйте.


Слой 4: гейт компиляции

Это тот слой, который ловит собственно плохой код, и он ровно один.

/LoadConfigFromFiles не компилирует модули и возвращает нулевой код возврата на заведомо битом коде. Агент увидит успешное завершение, отчитается «применил», а ошибка вылезет либо при обновлении базы данных, либо у кассира.

Единственная настоящая проверка:

DESIGNER /CheckModules -Extension <имя> -Server

Она реально компилирует модули на сервере и выдаёт ошибки с именами модулей и номерами строк. Около минуты на среднее расширение.

Правило, зашитое в контур: между загрузкой и применением к базе всегда стоит гейт, и пайплайн останавливается, если гейт вернул ошибки. Без этого автоматизация опаснее ручной работы — конфигуратор хотя бы подсвечивает синтаксис при сохранении, а пакетный режим не подсвечивает ничего.

Отдельно проверьте на своей базе, покрывает ли гейт модули управляемых форм. У меня есть записи и о том, что покрывает, и о том, что нет. Проверяется за пять минут: подложите в модуль формы заведомую ошибку и прогоните. Знание избавляет от лишней работы на каждом выкате.


Слой 5: бэкап и путь отката

Правило: бэкап до правки, всегда, без исключений.

Технически это просто выгрузка расширения в файлы перед любыми изменениями:

DESIGNER /DumpConfigToFiles <каталог бэкапа> -Extension <имя>

Откат — обратная загрузка того же каталога. Занимает столько же, сколько выкат.

Два момента, которые делают бэкап осмысленным, а не ритуальным:

Бэкап снимается с боевой базы, а не берётся вчерашний. К расширению может иметь доступ подрядчик или второй разработчик. Свежий дамп против дампа прошлой сессии сразу показывает, менял ли расширение кто-то ещё, пока вас не было.

Каталог бэкапа именуется по задаче и времени. Через месяц вы не вспомните, что лежит в папке backup2.


Слой 6: сухой прогон по умолчанию

Любая массовая операция, которую агент делает через метод — выпуск карт, пересчёт, исправление данных — по умолчанию только считает и показывает. Реальная запись включается отдельным явным флагом.

# показать, что будет сделано
curl -X POST ".../Method" -d '{"params": {...}}'

# сделать
curl -X POST ".../Method" -d '{"params": {...}, "apply": true}'

Это дешёвая мера с огромной отдачей. Ошибиться в диапазоне номеров или в условии отбора очень легко, а разгребать сотню лишних элементов справочника — вечер работы. Сухой прогон превращает такую ошибку в строчку в выводе.

Чтение вообще — единственная категория, где агент работает без спроса: логи, SELECT, статусы, проверка конфигурации, компиляция. Всё, что не меняет состояние, разрешено по умолчанию.


Слой 7: проверка фактом, а не кодом возврата

Самый недооценённый слой. Успешное завершение команды не означает, что система в нужном состоянии.

Два случая из практики, оба стоили дорого.

Первый. Скрипт закрыл базу от пользователей, применил изменения и должен был открыть обратно. На последнем шаге оборвалось ssh-соединение. Команды «выполнились», процедура «завершилась», а база осталась закрытой — люди не могут зайти. Спасло только то, что я не поверил кодам возврата и перепроверил состояние руками.

Второй. После перезапуска сервера 1С умирает демон администрирования кластера. Скрипт восстановления дёргает его и молча ничего не делает. База остаётся закрытой, HTTP-сервисы отдают 500, а вы уверены, что всё вернули.

Отсюда правило: финальное состояние проверяется независимым способом.

# кластер считает базу открытой?
rac infobase info ... | grep sessions-deny

# база реально отвечает?
curl -u <логин> "http://127.0.0.1/<база>/hs/<корень>/status"

Ожидаем off и код 200 или 401. Код 500 означает, что база закрыта, что бы там ни говорила первая проверка.

И то же самое для кода: в базе действительно лежит то, что вы правили?

DESIGNER /DumpConfigToFiles <каталог после> -Extension <имя>
diff -r -x ConfigDumpInfo.xml <каталог патченный> <каталог после> && echo ИДЕНТИЧНО

ConfigDumpInfo.xml исключается обязательно — там служебные версии выгрузки, они различаются всегда. И сравнивайте с нормализацией переводов строк: платформа выгружает CRLF, а скрипт мог оставить LF, и вы получите «различаются» на содержательно одинаковых файлах.


Слой 8: ревью диффа, а не отчёта

Последний слой — человеческий, и обойти его нечем.

Не принимайте работу по отчёту «готово». Читайте дифф.

У меня есть фиксированный список того, что означает немедленный отказ, независимо от того, насколько красиво выглядит решение:

  • расходится со спекой, планом или журналом проекта;
  • секреты в коде или в логах;
  • закупочные цены или внутренние данные утекли в клиентский API;
  • TODO, «потом доделаю», выкинутые тесты, отключённые проверки;
  • правки не в том репозитории или не на том хосте;
  • финансовая операция не в одной транзакции;
  • списание с баланса сделано чтением с последующей записью вместо атомарного условного обновления;
  • нет идемпотентности там, где возможна гонка или повтор запроса.

Список короткий и проверяется быстро. Смысл в том, что он фиксированный: вы не оцениваете каждый раз заново «нормально ли это», а сверяетесь с правилами, которые написаны на трезвую голову заранее.


Что это даёт на практике

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

Реальный простой касс при штатном выкате — около двух минут: закрыть базу, применить, открыть. Всё остальное делается на тестовой базе и кассиров не касается.

За год работы в таком режиме — ни одной остановки торговли по вине агента. Ошибки при этом были, и немало: битый код на гейте ловился регулярно, объекты создавались без обязательных реквизитов, база один раз осталась закрытой. Просто каждая из них упёрлась в слой, который был для неё построен.


Выводы

1. Управляйте не доверием, а радиусом поражения. Вопрос «насколько хорош агент» бесполезен. Полезен вопрос «что он может сломать в худшем случае».

2. Необратимое требует явного «да» с планом отката. Если откат не назван — операция запрещена. Это отсекает большую часть катастроф ещё до запуска.

3. Гейт компиляции обязателен и он ровно один. Всё остальное молча пропустит битый код с нулевым кодом возврата.

4. Успешное завершение ничего не гарантирует. Проверяйте состояние независимым способом: дамп и diff для кода, живой запрос для доступности.

5. Заведите непрофильное расширение под эксперименты. Это самая дешёвая изоляция из возможных, и она снимает страх перед диагностикой в бою.

Ни один из этих слоёв не про искусственный интеллект. Все они — обычная инженерная дисциплина, которая была нужна и до агентов. Разница в том, что раньше её отсутствие компенсировалось медленной скоростью человека, а теперь не компенсируется ничем.


Платформа 8.3.27, УТ 11.5, сервер 1С на Linux. Контур обкатан на боевых базах розничной сети с действующими кассами.

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

ИИ агент безопасность боевая база CheckModules бэкап откат ревью DevOps УТ 11.5 автоматизация

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

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

15250 руб.

25.08.2025    67408    136    38    

143

SALE! %

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

Корректируйте банковские документы быстро и легко! Создайте правило обработки — и оно автоматически применится при загрузке выписки (отбор по любому реквизиту или регулярному выражению). Решение заполняет расшифровку платежа, комиссию эквайринга, подбирает ведомости на выплату зарплаты, помечает дубли из банка на удаление и многое другое. Доплачивать за алгоритмы не нужно — они включены в решение. Обработка работает при загрузке из файлов клиент-банка и через DirectBank. Новое — искусственный интеллект: модель приводит нестандартные назначения платежа к виду, понятному алгоритмам, а ИИ-ассистент прямо в 1С консультирует по решению и разбирает код правил и алгоритмов. Поддерживаются локальные и облачные OpenAI-совместимые модели — данные могут не покидать ваш контур.

15250 руб.

20.12.2024    18069    91    29    

80

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

В этой статье расскажу, как реализовал с помощью LLM полноценную генерацию кода для 1С (BSL) в популярном Open Source API-клиенте Bruno.

21.08.2026    826    malikov_pro    9    

9

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

Один проход модели по вопросу из 28 знаков стоит 631 296 умножений и 4,8 секунды. Столько берёт языковая модель на 21 920 параметров, посчитанная прямо в 1С средствами самой платформы. На ней разбираю по шагам, что стоит за каждым словом из модного словаря: токен, словарь, вектор символа, вес, слой, голова внимания, контекст, softmax, температура, KV-кэш. Отдельно про температуру - она вообще не про креативность и управляет выбором буквы уже после того, как модель закончила работу. Отдельно про галлюцинацию - показываю в цикле генерации место, куда физически невозможно вставить "не знаю". Плюс расчёт потолка для встроенного языка, замер цены размера модели и история про метод платформы, которого не существует.

20.08.2026    4413    nedomolkov.ivan    11    

20

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

Стенд, на котором языковую модель видно изнутри: настоящий трансформер посчитан с нуля на встроенном языке, без внешних компонент, ONNX, Native API и обращений наружу. Три кнопки: полный ответ с отчётом о числе умножений и секундах, один проход модели с вероятностями всех 36 символов алфавита столбиком, и разбор устройства - алфавит, номера токенов, размерности. Поле температуры показывает, что выбор буквы делает не сама модель, а код снаружи: при нуле ответ повторяется слово в слово, при пятёрке текст рассыпается на слоги. В комплекте два файла: модель на 21 920 параметров отвечает за 7-13 секунд, вчетверо более крупная примерно за 28. Веса лежат макетом внутри, скачивать и настраивать нечего. Знаний о мире у модели нет: она помнит сорок фраз про объекты 1С, и на вопрос вне этого набора отвечает бессмыслицей с той же уверенностью.

20.08.2026    3403    79    nedomolkov.ivan    0    

15

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

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

19.08.2026    1693    VlaMax    34    

12

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

Разбираем новые, более дешевые и эффективные паттерны работы внешнего 1С:Эксперта, а именно – прямое использование LLM-ассистентов и создание с их помощью инструментов для аудита производительности и нагрузочного тестирования. Показываем, как модели помогают анализировать таймауты и взаимные блокировки по технологическому журналу, проверять сложные запросы, а также находить неочевидные взаимосвязи между показателями загрузки оборудования. Рассказываем о создании скриптов для построения графиков по данным atopsar и для поиска и визуализации стеков горячих запросов, а также о создании неинвазивной оснастки для реалистичных нагрузочных и сценарных тестов без программирования на 1С. Отдельно разбираем антипаттерны и ограничения такого подхода. Делаем вывод, что LLM остается лишь помощником, не превращает джуна в сеньора, а ответственность за итоговый результат по-прежнему несет 1С:Эксперт.

10.08.2026    3439    jf2000    15    

17

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

Практический кейс автономной разработки для бизнес-платформы OneBase: ИИ-агент под управлением Claude Code и недорогой модели GLM за 37 минут с нуля создаёт полную конфигурацию с метаданными, формами, отчётами и дашбордами. Процесс проходит полностью без участия человека — агент сам нарезает задачи, генерирует демо-данные и исправляет ошибки до успешного прогона всех проверок.

07.08.2026    5612    Ibrogim    13    

11
Для отправки сообщения требуется регистрация/авторизация