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

20.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% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

Подключите ИИ к 1С и решайте рабочие задачи обычными словами. От работы с данными до доработки конфигурации через расширения, всё в привычном чате с ИИ-помощником. Теперь с поддержкой DeepSeek Harness, Kimi Code и Kimi Work, доступных в России без VPN.

15990 руб.

30.07.2026    19747    44    4    

39

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    21696    105    32    

90

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

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

15250 руб.

25.08.2025    77237    147    41    

154

SALE! 30%

Нейросети 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение добавляет в 1С чат с ИИ-агентом. Пользователь пишет вопрос обычными словами: «какие УПД не подписаны?», «какой НДС к уплате за квартал?», «что висит на согласовании дольше недели?», а агент сам строит запросы к базе с правами этого пользователя и отвечает цифрами, таблицей, диаграммой или файлом Excel. Плитки «Аналитик», «Бухгалтер» и «Руководитель» дают сводку по базе одной кнопкой. Агент разбирает ошибки по скриншоту, сверяет прайсы поставщиков и проверяет коды маркировки. С версии 1.0.21 спрашивать можно и с телефона: QR-код в окне агента, без установки приложения. Работает в УТ 11, КА 2, ERP 2, БП 3.0, УНФ 3.0, Документооборот 3.0 и Альфа-Авто 6, ставится одним расширением.

18300 руб.

05.10.2026    3917    12    9    

13

Инструментарий разработчика Нейросети Системный администратор Разработчик Руководитель проекта 1С 8.3 Платные (руб)

Обработка заменяет ФИО, организации, ИНН, ИИН, БИН, ОГРН, КПП, БИК, счета и IBAN, паспорта, СНИЛС, адреса, телефоны, почту и суммы на правдоподобные выдуманные перед отправкой данных в ChatGPT, Claude или YandexGPT, а потом расшифровывает ответ модели обратно, подставляя настоящие имена и настоящие числа. Возвращаются и те итоги, которые модель посчитала сама: суммы масштабируются одним коэффициентом, поэтому пропорции и доли переживают обезличивание. Словарь замен хранится в самой базе и подхватывается автоматически, даже если обработку закрывали. Реквизиты России и Казахстана, любая конфигурация от 8.3.24, без единой зависимости.

14640 руб.

07.08.2026    2234    3    0    

3

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

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

6100 руб.

24.08.2026    1498    2    0    

2

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

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

29.10.2026    5076    nt_app    12    

26

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

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

28.10.2026    9274    pfihr    12    

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

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

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


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

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

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

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

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

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


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

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


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

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

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

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