При разработке, поддержке или аудите систем на платформе 1С часто возникает задача оценить объем и сложность конфигурации. Один из базовых показателей — это количество строк кода (Lines of Code, LOC). Эта метрика помогает сравнить разные версии конфигураций, оценить масштаб доработок или просто понять, с каким объемом кода приходится работать. Рассмотрим несколько практических способов, как это можно сделать, от самых простых до более продвинутых.
Это самый быстрый, но и самый неточный метод. Его суть заключается в том, чтобы с помощью глобального поиска во всех текстах конфигурации посчитать количество символов точки с запятой (;). В языке 1С этот символ завершает большинство операторов.
Как сделать:
Правка -> Глобальный поиск (или нажмите Ctrl+Shift+F).;.В окне результатов поиска вы увидите общее количество найденных вхождений. Это число можно принять за очень приблизительное количество строк кода.
Плюсы:
Минусы:
; (например, Если...Тогда, КонецЕсли, объявления процедур), а также может неверно считать многострочные или однострочные конструкции.Этот способ подходит только для самой грубой прикидки "на лету".
Это наиболее распространенный и надежный метод, который дает точные результаты и позволяет использовать внешние инструменты для анализа. Суть заключается в выгрузке всех модулей, форм и прочих объектов конфигурации в виде набора текстовых файлов.
Разберем по шагам:
Конфигурация -> Выгрузить конфигурацию в файлы.....bsl), XML-описаниями форм, объектов и т.д.Теперь, когда у вас есть исходный код в виде текстовых файлов, вы можете посчитать строки несколькими способами.
Если вы работаете в среде, где есть доступ к командной строке, можно использовать стандартные утилиты. Самая популярная — wc (word count).
wc -l *.bsl — посчитает количество строк во всех файлах с расширением .bsl в текущей папке.
Для подсчета во всех подкаталогах можно использовать более сложную команду, например:
find . -name "*.bsl" -print0 | xargs -0 wc -l
Такой подход посчитает все строки, включая пустые и комментарии.
Существуют утилиты, созданные специально для подсчета строк кода, например, cloc (Count Lines of Code). Она умеет распознавать разные языки программирования (включая 1С), игнорировать комментарии и пустые строки, а также выдает красивый отчет.
Можно написать небольшую обработку на 1С, которая обойдет все выгруженные файлы и посчитает строки по вашим правилам. Это дает максимальную гибкость.
Примерный алгоритм такой обработки:
Процедура ПосчитатьСтрокиКода(Команда)
// Получаем путь к папке с выгруженными файлами
ПутьКПапке = "C:\ExportedConfig";
// Ищем все файлы модулей рекурсивно
МассивФайлов = НайтиФайлы(ПутьКПапке, "*.bsl", Истина);
ОбщееКоличествоСтрок = 0;
КоличествоСтрокБезПустых = 0;
Для Каждого Файл Из МассивФайлов Цикл
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(Файл.ПолноеИмя);
ОбщееКоличествоСтрок = ОбщееКоличествоСтрок + ТекстовыйДокумент.КоличествоСтрок();
Для Счетчик = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл
Строка = ТекстовыйДокумент.ПолучитьСтроку(Счетчик);
Если НЕ ПустаяСтрока(СокрЛП(Строка)) Тогда
КоличествоСтрокБезПустых = КоличествоСтрокБезПустых + 1;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Сообщить("Общее количество строк: " + ОбщееКоличествоСтрок);
Сообщить("Количество непустых строк: " + КоличествоСтрокБезПустых);
КонецПроцедуры
Этот код можно усложнить, добавив логику для пропуска строк с комментариями (которые начинаются с //).
Если вам нужно узнать размер не всей конфигурации, а только одного конкретного модуля, это можно сделать прямо в Конфигураторе.
Откройте любой модуль (например, модуль объекта или общий модуль). Справа внизу, в палитре свойств, вы увидите информацию о текущем модуле, включая количество строк и символов. Это удобно для быстрой оценки сложности конкретного участка кода.
Если разработка ведется с использованием современных подходов, появляются дополнительные возможности.
При подсчете строк кода важно понимать, что именно вы считаете. Различают:
Для объективной оценки сложности конфигурации лучше ориентироваться на SLOC. Современные типовые конфигурации (УТ 11, ERP, БП 3.0) содержат миллионы строк кода. Этот огромный объем во многом обусловлен включением Библиотеки стандартных подсистем (БСП), которая предоставляет унифицированный функционал, но значительно увеличивает размер кодовой базы.
Например, по данным из открытых источников, конфигурация "1С:Управление торговлей 11.4" содержит более 1 миллиона строк кода, а "1С:ERP" — более 5 миллионов, и эти цифры постоянно растут. Сравнение этих показателей помогает понять, почему современные решения становятся все более требовательными к ресурсам и почему их обновление и поддержка усложняются.
Итог: для наиболее точного и осмысленного анализа рекомендуется использовать метод выгрузки в файлы с последующей обработкой специализированными утилитами, которые умеют отделять исполняемый код от комментариев и пустых строк.