19 лет писал 1С руками. Потом — 47 дней, 784 коммита и два ИИ-агента: где ИИ врёт и как его ловить

30.09.26

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

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

Я пишу на 1С девятнадцатый год. Застал семёрку, переход на восьмёрку, управляемые формы и три волны «1С скоро умрёт». На Инфостарте с 2007 года, и мои первые публикации — это честные «сделал для себя, пользуйтесь на здоровье»: загрузка номенклатуры из Excel в одну колонку, перепроведение документов со списком видов прямо в коде, автосборки, которые не видели резервов. Они до сих пор продаются и до сих пор собирают вопросы в комментариях: «а на новом релизе заработает?»

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

Потом за сорок семь дней я довёл до выпуска вторую версию коммерческого расширения: 784 коммита, 35 тысяч строк кода, 130 автоматических тестов, три типовые конфигурации. Писали его ИИ-агенты. Я решал, что писать, и проверял. Эта статья не о том, какой ИИ молодец. Она о том, как он врёт, и что с этим делать, если вам нужен продукт, а не демонстрация на конференции.

47 дней, 784 коммита, 130 автотестов, 3 конфигурации

Коммиты по дням: 14 августа — 30 сентября 2026

 

Что именно мы сделали

Расширение «Путевые листы» для 1С:Бухгалтерии 3.0, 1С:УНФ 3.0 и 1С:Управления торговлей 11.5. Путевые листы по приказу Минтранса № 390, восемь бланков, расход топлива по нормам АМ-23-р, электронные транспортные накладные и путевые листы — в том числе документами самой 1С. Продукт продаётся, прошёл модерацию, у него есть покупатели. Это важно: всё, что ниже, проверено не на «Hello, world», а на коде, за который платят деньги.

Команда такая:

  • Я — решаю, что делаем, принимаю результат, смотрю на экран глазами.
  • Claude Code — основной агент: пишет код, тесты и документацию, гоняет сборку и проверки, ведёт журнал граблей.
  • Codex — ИИ другой компании, ревизор. Ему дают готовое и просят найти, где первый соврал. Ещё он рисует картинки — по строгому техзаданию, плоско и без «нейросетевого» блеска.

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

 

Семь раз, когда ИИ ошибся — и что его поймало

Что случилось Чем опасно Что поймало
ИИ написал справку F1. В пяти файлах из семи — выдуманные подписи и «красный индикатор», которого в программе нет. Хотя в задании прямо было: не выдумывать. Пользователь ищет кнопку, которой нет, и пишет в поддержку, что продукт сломан. Отдельный агент-сверщик: каждую подпись из справки ищет в формах продукта. Теперь это автоматический аудит.
Тест проверял, что колонка таблицы пересчитывает деньги. Он искал в модуле процедуру с нужным именем — и находил. Тест был зелёным. А к колонке обработчик подключён не был. Пользователь меняет тип кузова — сумма не пересчитывается. Тест при этом «зелёный» месяцами. Правило «новая проверка обязана хоть раз покраснеть»: ломаем в продукте то, что проверка стережёт, и смотрим, увидит ли она.
Настройку начальной страницы код писал в хранилище под одним ключом, а платформа читает под другим. Тест читал тем же ключом, каким код писал, — и был доволен. Покупатель входит в программу и видит пустой экран. Снимок первого экрана настоящим клиентом, а не проверка кода кодом.
Перенос данных из прежней версии молча стирал перечисления: вид перевозки, вид сообщения. Присваивание было обёрнуто в «Попытку», «чтобы один реквизит не уронил весь перенос». Теряются обязательные по приказу № 390 сведения, и никто об этом не узнаёт. Метод деления: заполнить базу, запустить один тест, пересчитать. Виноватым оказался сам продукт.
Два элемента формы получили одинаковый внутренний номер. Форма показывала в поле «Вид перевозки» чужое значение: на экране «Коммерческая перевозка», в базе — пусто. Форма врёт, и по экрану это не заметить. Аудит номеров элементов форм: ожидается ноль совпадений.
Агент уверенно включил привилегированный режим, чтобы рядовой сотрудник мог записать служебные данные. В расширении этот режим у сотрудника просто не включается. У администратора всё работало. Кнопка работает у разработчика и падает у первого же диспетчера. Тест под живым пользователем с урезанными правами, в отдельном процессе.
Текст для видеообзора. Ревизор сверил каждую фразу диктора с кодом и нашёл шесть преувеличений: «QR-код на бланках» (его там нет), «все бланки Госкомстата» (не все), «из чего сложился каждый литр» (норма, а не литр). Покупатель видит в ролике обещание, которого в продукте нет. Потом — возврат и плохой отзыв. Второй ИИ, которому поручено не хвалить, а опровергать.

Заметили общее? Ни одну из этих ошибок не поймал бы «ещё один прогон тестов». Их ловило другое: другой способ посмотреть на то же самое.

 

Два кейса под микроскопом — с настоящим кодом

Кейс 1. Тест, который не мог покраснеть. Пользователь правит километры в строке рейса — цена и литры должны пересчитаться сразу. Тест, который это «проверял», выглядел так:

for колонка in ВЛИЯЮТ:
    кусок = re.search(r"Процедура %sПриИзменении\(.*?КонецПроцедуры" % колонка, модуль, re.S)
    if not кусок or "ПересчитатьСтоимостиНаСервере()" not in кусок.group(0):
        без_пересчёта.append(колонка)

Он ищет в модуле формы процедуру с правильным именем и в ней — вызов пересчёта. Процедура «ТипКузоваПриИзменении» была. Пересчёт в ней был. Тест зелёный. Только в разметке формы колонка «Тип кузова» ни к какой процедуре привязана не была — пользователь менял кузов, а сумма стояла. Исправленный тест читает не модуль, а живую связь:

блок = блок_колонки(разметка, колонка)                       # колонка в Form.xml
обработчик = re.search(r'<Event name="OnChange">(\w+)</Event>', блок)
if not обработчик:
    без_пересчёта.append(колонка + ": обработчик не привязан")

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

Кейс 2. Одна строка, которая стирала сведения по закону. Перенос данных из прежней версии расширения писал в файл значение перечисления так:

Возврат Элемент.Имя;                          // было: «КоммерческаяГрузовая»
Возврат Мета.Имя + "." + Элемент.Имя;         // стало: «ПЛ_ВидыПеревозки.КоммерческаяГрузовая»

Загрузка ждала полное имя, короткое не узнавала и возвращала «Неопределено». А присваивание было обёрнуто в «Попытку — Исключение» — «чтобы один несовместимый реквизит не уронил весь перенос». В итоге вид перевозки и вид сообщения, обязательные по приказу № 390, у клиента молча становились пустыми. Нашлось это не тестом, а методом деления: заполнить демо-базу, запустить один тест, пересчитать. Виновником оказался не тест, а сам продукт. Совет для 1С-ника: «Попытка», которая глотает исключение без записи в журнал, — это место, где ИИ прячет свои ошибки от вас.

 

Главное правило: проверка обязана хоть раз покраснеть

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

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

  1. ищет имя, а не связь (процедура есть — значит, работает);
  2. не может покраснеть в принципе (условие всегда истинно);
  3. подтверждает сам себя (читает тем же ключом, каким записал);
  4. молча пропускается, когда проверять нечего;
  5. считает ожидаемое той же формулой, что и продукт.

Лечится одним приёмом, который теперь обязателен для каждой новой проверки: сломать в продукте ровно то, что она стережёт, и убедиться, что она покраснела. Потом вернуть. Если не покраснела — это не проверка, а декорация.

Как это выглядит вживую — проверка прав в ролях. Сначала зелёная; потом мы подложили подсистеме право «интерактивное удаление», которого у подсистем не бывает:

$ python проверка_ролей.py      # как есть
ПЛ_ОсновнаяРоль      ok
ПолныеПрава          ok
недопустимых прав в ролях: 0

$ python проверка_ролей.py      # подложили недопустимое право
ПЛ_ОсновнаяРоль      ошибок: 1
   [ERROR] Subsystem.ПЛ_ПутевыеЛисты.Subsystem.ПЛ_Отчеты: право 'InteractiveDelete'
           недопустимо для вида 'Subsystem' (допустимо: View)
недопустимых прав в ролях: 1

Покраснела — значит, ей можно верить. Роль вернули, проверка снова зелёная.

 

Конвейер: почему это вообще успевается

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

  • Сборка за 20 секунд вместо 75. Главный тормоз оказался не в компиляции, а в запуске конфигуратора: шесть секунд на каждый пакетный запуск. Грузим только изменённые файлы, проверку модулей — отдельным запуском.
  • Ядро тестов — за полторы минуты вместо пятнадцати. Каждое подключение к серверной базе через COM стоило 4–9 секунд, тестов было восемьдесят. Теперь все тесты работают в одном сеансе.
  • Интерфейс смотрим в браузере. База опубликована на локальном веб-сервере, агент открывает формы, жмёт кнопки и делает снимки сам — без тонкого клиента на моём мониторе.
  • Три типовые конфигурации — одной командой. Перед выпуском расширение само заливается в БП, УНФ и УТ и прогоняет там свои тесты, в том числе в безопасном режиме.

Конвейер: правка, сборка 20 секунд, ядро тестов 1,5 минуты, три конфигурации

Так выглядит конец обычного прогона ядра — не для статьи подобранный, а сегодняшний, во время её написания:

$ python run_tests.py
Время: 1.6 мин всего. Самые долгие:
   com_test_токен_закрыт.py             7.8 с
   com_test_печать_бланков.py           5.3 с
   com_test_бот2.py                     4.6 с
Прогон целиком: 1.7 мин при норме 3 мин
ИТОГ: Пройдено: 125, Упало: 0, Пропущено: 1
Пропущены (проверять было нечем): com_test_роль.py

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

 

Память, которой у ИИ нет

У агента нет памяти между сессиями. Утром он не помнит, на какие грабли наступил вчера, и с тем же энтузиазмом наступает снова. Я видел, как он дважды за день написал в запросе псевдоним «КАК В» — зарезервированное слово языка запросов, из-за которого запрос падает только при выполнении, иногда через полчаса долгой выгрузки.

Лечится это не уговорами, а файлами:

  • Правила проекта — один файл, который агент обязан прочитать первым: где рабочая база, как собирать, чего нельзя. Туда попадает каждый урок, который стоил времени.
  • Общая база знаний по 1С — отдельный репозиторий для всех проектов: стенд, скрипты, грабли платформы. Агент нового проекта начинает с неё и не открывает Америку второй раз.
  • Проверки вместо обещаний. Урок, который можно проверить автоматически, становится проверкой. Про «КАК В» теперь не надо помнить: тексты запросов разбираются платформой по метаданным живой базы до выполнения, а самотест подсовывает три заведомо неверных запроса и требует три ошибки.

Автотестов в проекте: с 7 до 130

 

Со временем в проекте накопилось больше сотни таких проверок. Статические идут секунды, их агент гоняет после каждой правки. Выходит не «ИИ стал умнее», а «глупость стала дороже»: каждая повторная ошибка теперь краснеет раньше, чем доходит до меня.

 

Как устроена связка агентов — для тех, кто строит своих

  • Один пишет, другой опровергает. Ревизору ставится задача не «проверь», а «найди, где соврали, и не выдумывай». Отдаёт таблицу: утверждение — подтверждено / не подтверждено / преувеличено — где в коде — как исправить. Так он нашёл шесть преувеличений в тексте нашего видеообзора.
  • Несколько сессий — несколько проектов. Параллельно идут отдельные сессии на каждый продукт. Одна главная читает их журналы, сверяет с планом и шлёт поправки сообщением. План и правила каждой сессии лежат в её репозитории, поэтому сессия, открытая завтра с нуля, знает всё, что знала вчерашняя.
  • Инструменты вместо интерфейса. Конфигуратор — только пакетно, тесты — Python через COM в одном сеансе, интерфейс — веб-клиент в браузере без окна, со снимками. Агенту нужны быстрые и однозначные ответы, а не кнопки.
  • Доказательство вместо «готово». Каждое «сделано» — с номером коммита, выводом проверки или снимком. Главная сессия проверяет это сама: коммит действительно отправлен, тест действительно был красным.

 

Ответ ревизора: утверждение — статус — как исправить

 

С чего начать завтра, если вы 1С-ник и пробуете ИИ

  1. Заведите файл правил проекта и пишите туда каждую граблю: «пароль не передавать», «псевдоним В в запросах нельзя», «база такая-то». Агент прочитает его в начале каждой сессии.
  2. Выгрузите конфигурацию в файлы и держите в git. ИИ работает с текстом, а не с деревом конфигуратора; git даёт откат любой его ошибки.
  3. Одна рабочая база. Никаких «копия для теста» — правка в одной выглядит несделанной в другой.
  4. Первая автопроверка — компиляция модулей пакетным конфигуратором. Сломайте модуль нарочно и убедитесь, что она это видит.
  5. Не верьте слову «готово». Просите показать: вывод проверки, снимок формы, текст запроса, который выполнился на живой базе.

 

Что ИИ не умеет — и где без человека никак

  • Решать, зачем. Агент одинаково старательно сделает полезную кнопку и бессмысленную. «Зачем это пользователю?» — вопрос, на который отвечаю я, и чаще всего ответ «незачем, убери».
  • Смотреть глазами покупателя. За час, когда мы просто прошлись по формам глазами, нашлось девять дефектов, которые не ловили ни 44 теста, ни семь аудитов. Печать бланка в демо-базе падала, а тест печати был зелёным.
  • Знать закон. Формат электронной накладной агент уверенно пересказывал по статьям и форумам. Правильно стало, только когда мы положили в проект официальные XSD-схемы налоговой и начали проверять файл по ним.
  • Не торопиться с выводами. Агент однажды затёр рабочий токен Telegram-бота в демо-базе собственным тестом — проверял, что сотрудник не может его изменить, и изменил. Восстановили из журнала транзакций SQL. Теперь права проверяются через «ПравоДоступа», а не пробной записью.

 

Сколько это стоит

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

  • одна база для разработки, тестов и демо — никаких копий (однажды внешний ревьюер два часа проверял позавчерашнюю сборку: все четыре его замечания были про уже исправленное);
  • всё, что агент узнал на своих ошибках, — записывать в базу знаний проекта, которую читает следующий агент;
  • каждое «готово» агента — только с доказательством: вывод проверки, снимок экрана, номер коммита.

 

Итог

ИИ не заменил мне девятнадцать лет в 1С. Он их окупил: всё, что я знаю про грабли платформы и привычки бухгалтеров, теперь превращается в код в десять раз быстрее. Но только при одном условии — если не верить ему на слово. Не «ИИ написал», а «ИИ написал, другой ИИ опроверг, тест покраснел и позеленел, а я посмотрел глазами».

Сейчас тем же способом переписываю свои старые обработки — те самые, «для себя». Первыми пошли автосборки товаров для УТ 11.5: учёт резервов, о котором покупатели просили с 2024 года, выбор строк, сборка полуфабриката из сырья, работа с ордерным складом. Двадцать одна сценарная проверка, и каждая новая хоть раз покраснела. Код 2021 года остался в истории как напоминание, с чего начинали.

Продукт, на котором всё это проверено, — расширение «Путевые листы» для 1С:Бухгалтерии, УНФ и Управления торговлей. Код открыт — можно посмотреть, как устроены проверки.

А как у вас: доверяете коду от ИИ? И какой самый смешной (или дорогой) случай, когда он соврал?

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

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

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

См. также

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-совместимые модели — данные могут не покидать ваш контур.

17500 руб.

20.12.2024    19895    104    32    

85

Нейросети Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Задавайте вопросы базе 1С обычными словами: получайте данные, находите ошибки и связанные документы, проверяйте права, работайте с вложениями и контролируемо вносите изменения. Всё это работает в самой программе, а Codex и Claude подключаются по желанию.

16990 руб.

30.07.2026    13977    29    4    

28

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

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

15250 руб.

25.08.2025    71968    143    41    

151

Распознавание документов и образов Нейросети 1С:Предприятие 8 1С 8.3 1С 8.5 1C:Бухгалтерия 1С:Зарплата и Управление Персоналом 3.x Беларусь Россия Казахстан Армения Платные (руб)

ИИ-сканер документов с REST API для интеграции с 1С и корпоративными системами. Извлекайте данные из счетов, паспортов, дипломов, патентов и трудовых книжек за секунды. Точность человека - скорость машины. Приложение поддерживает восемь типов документов, четырех провайдеров ИИ (имеется возможность использования локальных ИИ), локальный REST API и экспорт в JSON. Важно! модель должна поддерживать функцию Vision (распознавание файлов и картинок). Запускайте используя локальные ИИ, без подписок и ограничений

6100 руб.

24.08.2026    662    3    0    

1

Нейросети 1С:Управление торговлей 11 Бесплатно (free)

Я не считаю покупку специализированных платных инструментов обязательной для разработки с ИИ: нужную обвязку тоже можно создать с агентом. Показываю этот подход на расширении УТ 11 с динамическим списком остатков. Одно задание Codex, 37 минут до проверки, работающая форма. Рассказываю, как устроено окружение, почему первую попытку пришлось переснять и что получилось в повторном прогоне.

17.09.2026    6447    112    Ibrogim    63    

22

Нейросети Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

Как связать 1С и Cursor через MCP так, чтобы AI-агент сам получал актуальную конфигурацию из информационной базы, находил нужный BSL-код, вносил изменения, загружал конфигурацию обратно и запускал 1С:Предприятие. В статье — настройка 1C: Platform Tools, 1C: Platform Tools MCP, OneScript, vanessa-runner и env.json, а также важные нюансы при работе с несколькими проектами, IPC-портами, большими конфигурациями и длительными операциями загрузки. Покажу полный практический цикл на тестовой базе без ручной выгрузки и загрузки XML через Конфигуратор.

28.08.2026    19966    rinat1c    18    

31

Нейросети Разработчик 1С 8.3 Бесплатно (free)

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

20.08.2026    7152    nedomolkov.ivan    16    

26

Нейросети Разработчик Бесплатно (free)

SFT-адаптация Qwen3.6-27B/Qwen3.8-27B для разработки на платформе 1C:Enterprise: код на BSL, структура выгрузок BSL+XML, схемы XML и типовые практики конфигураций. Модель ориентирована на ассистента разработчика 1С: навигация по метаданным/XML-выгрузке, пояснение и правка BSL, следование внутренним стандартам кодирования, работа с кодовыми базами 1С.

03.08.2026    9159    andrew.ab    48    

28
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Xershi 1566 30.09.26 14:36 Сейчас в теме
За опыт спасибо, пока только интересует как это все использовать без оплаты и на маке.
Судя по всему это оправдано, когда есть команда. И то только если трудоемкость исправления не превывает затраты на тесты.
2. ixijixi 2168 30.09.26 15:50 Сейчас в теме
(1) Мак-то тут при чём? Агент работает на любой платформе
Для отправки сообщения требуется регистрация/авторизация