Анализ кода внешних обработок 1С: рейтинг по качеству, техдолг и находки с подсветкой

20.08.26

Разработка - Инструментарий разработчика

Обработка читает исходники других внешних обработок и отчётов прямо из базы и отвечает на два вопроса: с какой из них начинать смотреть и что именно в ней смотреть. На выходе HTML-отчёт: индекс качества от 0 до 100, светофор, оценка технического долга в минутах и находки с номером строки, фрагментом кода и подсветкой синтаксиса. Двадцать восемь правил: запрос в цикле, транзакция без отката, небезопасное выполнение строки, тяжёлые схемы компоновки. Считается всё на чистом BSL, без интернета, внешних компонент и отдельного сервиса рядом, поэтому анализируемый код не покидает машину. Прогон по двум десяткам обработок выстраивает их по индексу качества, худшие сверху, и сразу видно, с чего начинать разбор.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Анализ кода внешних обработок 1С
.epf 135,30Kb ver:1
2 6 200 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

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

Обработка читает исходники других внешних обработок и отчётов и отвечает на два вопроса: с какой из них начинать смотреть и что именно в ней смотреть. На выходе HTML-отчёт: индекс качества от 0 до 100, светофор, оценка технического долга и список находок с номером строки, фрагментом кода и подсветкой синтаксиса.

 

Весь анализ идёт внутри 1С

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

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

 

Два режима

Одиночный файл

Указали путь к .epf или .erf - получили отчёт по нему. Основной сценарий приёмки чужой работы: подрядчик прислал обработку, надо понять за десять минут, можно ли это ставить в продуктив.

Пакетный анализ

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

Это и есть ответ на вопрос "с чего начинать", которого нет у анализаторов, работающих по одному файлу. Двадцать обработок в базе, три из них красные - начинать с них, про остальные семнадцать можно спокойно не думать.

Кнопка "Остановить" прерывает прогон в любой момент: уже разобранное остаётся в результатах и никуда не пропадает.

Внешние отчёты разбираются отдельно

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

 

Что в отчёте

Индекс качества, 0-100, и светофор

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

Светофор Индекс Смысл
Зелёный 80-100 замечаний мало или нет
Жёлтый 50-79 есть что посмотреть
Красный 0-49 требует внимания

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

Технический долг

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

Три бейджа вместо пяти уровней

Бейдж Что делать
Критично переделать: утечка секрета, транзакция без отката, запрос в цикле
Не критично можно оставить: косметика и мелкие несоответствия
На проверку правило не уверено, посмотрите глазами

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

Метрики по каждой процедуре

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

Находки с кодом, а не со ссылками на номера строк

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

 

Что именно проверяется

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

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

 

Производительность, 7 правил

  • запрос к СУБД внутри цикла;
  • ПолучитьОбъект() или Записать() внутри цикла;
  • точечное чтение из СУБД внутри цикла: НайтиПоКоду, СрезПоследних и родня;
  • Выбрать() без отбора, то есть чтение всей таблицы;
  • накопление строки конкатенацией в цикле;
  • ОткрытьФорму() внутри цикла;
  • Сообщить() внутри цикла.

Надёжность, 3 правила

  • пустой блок Исключение: ошибка проглатывается молча;
  • НачатьТранзакцию без ОтменитьТранзакцию в обработчике исключения;
  • функция возвращает значения разных типов в разных ветках.

Безопасность, 6 правил

  • пароль или токен захардкожен в коде;
  • Выполнить() и Вычислить() с кодом из переменной, то есть исполнение данных;
  • данные подставляются во внешний запрос (OData, HTTP) без экранирования;
  • УстановитьПривилегированныйРежим(Истина);
  • GUID ссылки захардкожен в коде;
  • Выполнить() и Вычислить() с константной строкой кода.

Запросы и метрики, 5 правил

  • соединение с вложенным подзапросом;
  • ВЫБРАТЬ * в тексте запроса;
  • процедура длиннее 125 строк;
  • цикломатическая сложность выше 20;
  • вложенность глубже 5 уровней.

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

Схемы компоновки, 7 правил

  • соединение с вложенным подзапросом в запросе схемы;
  • соединение с виртуальной таблицей;
  • ИЛИ в условии соединения;
  • обращение через точку на три и более уровня;
  • ПОДОБНО с ведущим процентом;
  • условие В ИЕРАРХИИ;
  • отрицание (НЕ, <>) в условии ГДЕ.

 

Почему находкам можно верить

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

Поэтому внутри полноценный разбор: лексер, дерево блоков процедуры, вывод типа переменной в пределах процедуры. Результат на том же контрольном наборе: все 20 ложных срабатываний замолчали, все 7 настоящих дефектов найдены, точность выросла с 22 процентов до 97.

Движок закрыт 272 автотестами, ошибок ноль: лексер 45, парсер 38, вывод типов 40, правила 67, отчёт 53, схемы компоновки 29.

 

Что вышло на нашем собственном коде

Прогон по семнадцати обработкам, которые мы сами написали и выложили на Инфостарт:

Обработок 17
Строк кода 24 142
Находок 239
Из них критичных 186
Технический долг 7 070 минут

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

 

Порядок работы

  1. Открыть обработку через "Файл - Открыть" либо через справочник дополнительных обработок.
  2. Выбрать источник: файл, каталог или справочник допобработок.
  3. Указать логин и пароль к базе, если аутентификация не Windows. Они нужны только для запуска конфигуратора при распаковке .epf. Поле можно оставить пустым, тогда платформа спросит сама.
  4. Нажать "Проанализировать" и смотреть прогресс.
  5. Читать отчёт прямо в форме. Активизация строки в таблице переключает показываемый отчёт, кнопка "Сводный отчёт" возвращает к рейтингу.
  6. "Сохранить отчёт" пишет обычный HTML-файл: открывается любым браузером, отправляется письмом, прикладывается к задаче.

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

 

Что нужно для запуска

Платформа 8.3.27.1606 и выше. На более старых файл не откроется
Клиент Толстый или тонкий, Windows. Веб-клиент не поддерживается: там нет запуска конфигуратора
Конфигурация Любая. Для режима "из справочника" нужен справочник "Дополнительные отчёты и обработки"
Права Запуск внешних обработок. Для распаковки .epf нужен доступ в конфигуратор базы
Входные форматы *.epf, *.erf, а также готовые *.bsl, если исходники уже выгружены

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

 

Чего инструмент не делает

Границы написаны здесь и продублированы в подвале каждого отчёта.

  • Видит паттерны, а не смысл. Скажет "запрос в цикле по выборке - тысячи обращений к СУБД". Не скажет "бизнес-логика неверна".
  • Не знает реальную кардинальность. Сколько строк вернёт запрос, из текста не следует.
  • Не отслеживает данные между процедурами. Запрос в процедуре, которую вызвали в цикле через три уровня, не увидит.
  • Не анализирует блокировки - для этого нужен рантайм, а не текст.
  • Не проверяет индексы СУБД под условия запросов.
  • Обычные формы внутри .epf не анализируются. Их модули лежат в Form.bin, и конфигуратор при выгрузке не отдаёт их как *.bsl. Разбираются модуль объекта и управляемые формы.
  • Разбор схем компоновки идёт отдельной кнопкой по одному файлу и в пакетный проход не вшит. Шаблоны ПОДОБНО в параметрах не проверяются.

 

Что в файле

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

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

 

Другие наши инструменты для разработчика 1С:

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.43.208

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

анализ кода 1С статический анализ внешние обработки аудит кода качество кода 1С антипаттерны 1С запрос в цикле технический долг дополнительные отчеты и обработки BSL лексер парсер ревью кода производительность 1С схема компоновки данных

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    273899    1523    422    

1185

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    77378    389    171    

332

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    41381    121    54    

129

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

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

15250 руб.

25.08.2025    67437    136    38    

143

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    27168    99    46    

105

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

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

9500 руб.

17.05.2024    55530    189    63    

221

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    3171    5    0    

21
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. V.Nikonov 130 20.08.26 11:22 Сейчас в теме
Второй том многотомника? ;-)
2. nedomolkov.ivan 164 20.08.26 11:49 Сейчас в теме
Похоже на то :-) Третьим томом пойдёт отчёт, который она печатает.
Для отправки сообщения требуется регистрация/авторизация