Как быстро разобраться в чужом коде с помощью локальной LLM

01.09.26

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

В справочнике дополнительных обработок любой базы старше трёх лет лежит два-три десятка файлов. Часть писали вы, часть предыдущий разработчик, часть прислал подрядчик. Завтра одну из них надо править, и первый вопрос не "как править", а "что она вообще делает". Обычный ответ - открыть и читать: полторы тысячи строк это полдня. Показываю, как уложиться в пять минут: пять шагов, у каждого сказано, что он даёт. Внутри распределение 1 135 находок по ста чужим обработкам (четыре первых места из шести - одно и то же), что нашлось в наших собственных обработках, и честный список того, чего этот способ не даёт.

В справочнике дополнительных отчётов и обработок любой базы, которая живёт больше трёх лет, лежит два-три десятка файлов. Часть писали вы, часть предыдущий разработчик, часть прислал подрядчик. Завтра одну из них надо будет править, и первый вопрос будет не "как править", а "что она вообще делает".

Обычный ответ на этот вопрос - открыть и читать. Полторы тысячи строк это полдня, если повезёт и код разбит на процедуры с говорящими именами. Если не повезёт, день.

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

 

Что здесь работает, а что нет

Сразу оговорю, чтобы не тратить ваше время, если ждёте другого.

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

Работает: разделить работу. Обычный статический анализатор ищет и даёт номера строк, локальная модель объясняет найденное человеческими словами и рассказывает, что процедура делает. Модель при этом не может выдумать дефект: находка пришла не от неё.

Всё считается на вашей машине. Чужой код в облако отправлять нельзя, и это не паранойя, а обычное условие работы.

 

Шаг 1. Достать текст модулей

Нужны два текста: модуль объекта и модуль формы. Открываете обработку в конфигураторе и копируете.

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

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

 

Шаг 2. Получить описание логики

Первое, что нужно, - не список ошибок, а ответ на вопрос "что этот код делает". Его даёт модель по тексту модулей.

Выглядит это примерно так, живой пример с обработки выгрузки остатков:

Назначение: процедура выгружает остатки по складам и отправляет уведомление в Telegram. Проверяет дату документа, ищет склады по коду, для каждого получает остатки запросом и накапливает лог.

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

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

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

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

Ноль выдумок - это прямое следствие того, что модель не ищет. Ей нечего выдумывать.

 

Шаг 3. Посмотреть на находки сверху вниз

Анализатор возвращает список: правило, уровень, модуль, номер строки, процедура. Уровней пять - Blocker, Critical, Major, Minor, Info.

Читать надо не подряд, а сверху: сначала Blocker, потом Critical. Остальное подождёт до того, как вы решите, стоит ли вообще трогать эту обработку.

Что даёт шаг: вы за минуту понимаете, во что ввязываетесь. Обработка с двумя блокерами и оценкой качества 9 из 100 - это не "поправить строчку", это переписывать.

 

Шаг 4. Прочитать объяснение и способ починки

По каждой находке приходят три вещи, и разница между ними важна.

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

Фрагмент кода вокруг находки с подсвеченной строкой. Это чистые данные, ваш собственный текст.

Способ починки берётся из реестра правил и печатается дословно. Модель его не пишет, и это принципиально.

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

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

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

 

Шаг 5. Взять план и решить, браться ли

Последнее, что нужно перед тем, как открыть конфигуратор, - порядок работ и цена вопроса.

План строится по уровню правила: сначала блокирующее, потом критичное. Строки группируются по правилу, а не сыплются вперемешку: одно правило на четырёх строках это одна правка, а не четыре.

Рядом - оценка: индекс качества от 0 до 100, светофор и технический долг в минутах. Долг считается по весу правил, у нас от 10 до 60 минут на находку.

Что даёт шаг: у вас появляется число для разговора с заказчиком или руководителем. "Тут на девять часов" звучит иначе, чем "тут всё плохо".

 

Сколько это занимает на самом деле

Живой прогон. Обработка на 1 309 строк модуля объекта плюс 500 строк модуля формы, писали несколько лет, я её до того не открывал.

Разбор анализатором мгновенно
Полный прогон с объяснениями 1 минута 16 секунд
Найдено 6 находок, из них 1 блокирующая
Индекс качества 39 из 100, светофор красный
Технический долг 180 минут

Полторы минуты против полудня чтения. Причём читать всё равно придётся - но уже зная, куда смотреть.

 

Проверка на объёме: сто чужих обработок

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

Модулей разобрано 159
Находок 1 135
Падений 0
Номеров строк за пределами файла 0
Плотность 11,3 находки на 1 000 строк
Время на весь корпус 141 секунда

Один случай на этом прогоне выглядел как дефект и оказался правотой анализатора: модуль формы на 1 601 строку дал ноль находок. Проверил - 1 580 строк из них комментарии, живого кода шестнадцать строк. Закомментированное он не считает, и это правильно.

 

Что чаще всего лежит в чужом коде

Раз уж набралось 1 135 находок на ста обработках, вот их распределение. Мне оно показалось полезнее самих чисел: видно, чего ждать, открывая незнакомый файл.

Запись объекта БД внутри цикла 239
Сообщить() внутри цикла 212
Накопление строки конкатенацией в цикле 151
Точечное чтение из СУБД в цикле (НайтиПоКоду, СрезПоследних) 144
Цикломатическая сложность выше 20 69
Пустой блок Исключение 59

Четыре первых места из шести - это одно и то же: что-то тяжёлое внутри цикла. Запись, вывод, склейка строки, обращение к базе. Больше половины всех находок корпуса.

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

По уровням расклад такой: 39 блокирующих, 300 критичных, 456 значительных. То есть блокирующее - редкость, примерно одно на три обработки, а вот критичное есть почти везде.

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

 

Что я нашёл в своём собственном инструменте

Отдельно прогнал двадцать две наши обработки. Ожидал, что свой код чистый.

Не чистый. В одной 32 находки и четыре блокера, в другой 37, в третьей 29. Полностью чистых оказалось четыре из двадцати двух.

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

Токен = "<span style='color:#008000'>//";

Переменная называется Токен, ей присваивают строковый литерал - формально признак сходится. По сути это лексема в подсветке синтаксиса, никакого секрета там нет.

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

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

 

А если обработок не одна, а тридцать

Разбирать по одной имеет смысл, когда вы уже знаете, какую. Обычно не знаете: в справочнике лежит три десятка файлов, и вопрос звучит иначе - с какой вообще начинать.

Тут порядок другой и модель не нужна вовсе. Анализатор гоняется по всем сразу, без объяснений, и выдаёт сводный рейтинг: индекс качества по каждой обработке, число находок, техдолг. Это быстро - весь корпус из ста обработок у меня разобрался за 141 секунду, то есть примерно полторы секунды на обработку.

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

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

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

 

Чего этот способ не даёт

Честный список, чтобы не было разочарования.

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

Не заменяет чтение. Он сокращает его и задаёт порядок. Править код всё равно вам.

Объяснения модели могут ошибаться. 94 процента имён верны, но не 100. Читайте их как объяснения, а не как приговор.

Нужна установка. Локальная модель это 1,9 ГБ на диске и пять минут на первую настройку. Дальше бесплатно и без интернета, но первый раз потратить придётся.

 

Что нужно, чтобы повторить

Ollama, любая машина с Windows и 1С 8.3. Видеокарта не обязательна: на карте с 4 ГБ ответ занимает 8-15 секунд, без карты минуту. Модель качается один раз, подписок и токенов нет.

Если в отделе есть одна машина с приличной картой, ставить каждому не нужно: адрес сервиса задаётся настройкой.

Собранная связка лежит здесь: ИИ-анализ кода 1С: логика, находки и рекомендации на локальной модели. Отдельно анализатор без модели - Анализ кода внешних обработок 1С.

А как разбор устроен изнутри и что именно подавать модели на вход, чтобы она не врала, я разбирал отдельно: Как прикрутить локальную модель к 1С, чтобы она не врала.

И вопрос к тем, кто разбирал чужое легаси своими способами: чем меряете, стоит ли вообще браться за обработку, или решаете на глаз? Мне интереснее всего именно эта часть - до правок, а не после.

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

чужой код 1С легаси 1С внешние обработки 1С разбор кода 1С анализ кода 1С качество кода 1С техдолг 1С рефакторинг 1С code review 1С сопровождение 1С запрос в цикле 1С оптимизация обработок 1С локальная модель 1С LLM для 1С Ollama 1С статический анализ 1С аудит кода 1С дополнительные обработки БСП цикломатическая сложность 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-совместимые модели — данные могут не покидать ваш контур.

15250 руб.

20.12.2024    18802    96    29    

82

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

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

15250 руб.

25.08.2025    69323    139    41    

147

SALE! %

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

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

15989 9891 руб.

30.07.2026    9235    20    4    

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    15146    rinat1c    18    

30

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

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

20.08.2026    6024    nedomolkov.ivan    16    

25

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

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

03.08.2026    7883    andrew.ab    44    

23

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

Эта статья не столько про новую программу, сколько про путь: от желания немного улучшить чужой open-source проект — до создания собственного инструмента, который закрывает весь цикл работы с речью. Транскрибация, генерация статей и описаний через LLM, синтез аудиокниг — всё локально, в одном приложении. Исходники открыты, лицензия MIT.

29.07.2026    3567    Ibrogim    25    

30

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

Новые результаты теста топовых ИИ в вайбкодинге на 1С. Это продолжение прошлой статьи, где нейросети написали внешнюю обработку за 19 минут. Теперь же с этой же задачей справляются за 3–4 минуты. Прошло всего несколько недель. Что будет дальше?

24.07.2026    15575    top_1c    115    

41
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ninel_S 22 01.09.26 17:10 Сейчас в теме
Коллега, вот честное слово, не хотела ничего писать, просто поставить "плюсик", но Ваше заявление:

Что здесь работает, а что нет
Сразу оговорю, чтобы не тратить ваше время, если ждёте другого.

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


Пожалуйста, настройте LLM (на самом деле LLM's harness на уровень критики выше и получите критику.

На приложенной картинке образец "безобидного" кода из моей статьи https://infostart.ru/1c/articles/2777908/, который был послан в виде картинки в мою локальную LLM с задачей - "Найдите опасный код". Вторая картинка - ответ LLM (критики более, чем достаточно). На картинке не удобно смотреть текст ответа, поэтому - вот он (вдруг интересно?):

Ответ локальной LLM
Прикрепленные файлы:
2. nedomolkov.ivan 214 01.09.26 18:28 Сейчас в теме
(1) Спасибо, по механике вы правы, и спорить не буду: формулировка промпта у меня и была причиной. Инструкция "если проблем нет, так и скажи" делает из маленькой модели соглашателя, у меня про это отдельный абзац в соседней статье.

Расхожусь на выводе. "Найдите опасный код" это вопрос с ответом внутри. Модель послушалась. Смотрите, что вышло: частичная фиксация при ошибке, ПолучитьОбъект в цикле, скрытая логика под комментарием, остаточный дедлок. Первый пункт это вообще смысл обработки пачками. Ни одного номера строки, и в конце она сама пишет, что шаблон хороший. Критика есть, находок нет.

Проверяется одним прогоном: дайте той же обвязке заведомо чистый фрагмент. Вернёт те же четыре опасности - значит ручка критичности меняет тон ответа, а находить модель от этого не начинает. У меня 18 фрагментов были с заранее заложенными дефектами, и мерил я, назовёт ли модель то, что там лежит.

Ложные срабатывания тут хуже молчания: отчёт, где половина пунктов общие места, перестают читать целиком. Поэтому ищет парсер и отдаёт строку, а модель объясняет уже найденное.
3. Ninel_S 22 01.09.26 18:43 Сейчас в теме
(2)
у меня про это отдельный абзац в соседней статье.


Очень интересно, где почитать?

Ложные срабатывания тут хуже молчания


согласна на 105% - "Волки, волки, волки ..."
4. nedomolkov.ivan 214 01.09.26 19:01 Сейчас в теме
(3) Вот она: https://infostart.ru/1c/articles/2777968/ "Как прикрутить локальную модель к 1С, чтобы она не врала". Абзац про инструкцию "если проблем нет, так и скажи" - там же, где числа замера.

Про волков: у меня 17 "корректен" из 18, у вас четыре опасности на чистом шаблоне. Промах один и тот же - модель отдаёт тон, который ей задали.
5. Ninel_S 22 01.09.26 19:23 Сейчас в теме
Если я правильно поняла Вас, то важнейшим из Ваших паттернов является антипаттерн - "Не ставить задачу исправить (починить) код, если у вас уже есть точный и готовый рецепт. Попытка переложить это на LLM (при наличии четкого алгоритма исправления) - это одна из самых неэффективных и дорогих ошибок."
Прикрепленные файлы:
1c-review-prompt-template.md
6. nedomolkov.ivan 214 02.09.26 05:08 Сейчас в теме
(5) Почти. Самый дорогой пункт да, этот. Но важнейший первый: в промпт идёт готовая находка парсера, а не задача её искать. Он и двигает цифру с 0 из 18 до 8 из 9. Запрет на починку не делает модель полезной, он не даёт ей навредить, это другое.

Шаблон посмотрел, собран верно. И он же подарок: в примере запроса стоит оператор ИЛИ_ГДЕ, которого в языке нет, а целевая строка находки 104 при разбираемой 105. Ровно то, про что статья: модель уверенно называет несуществующее и путает строку. Потому эталонный пример и проверяют на своём коде.

За подсветку спасибо. Там был значок предупреждения, страница отдаётся в windows-1251, эмодзи в неё не влезло. Поправлю.
Для отправки сообщения требуется регистрация/авторизация