Разработка и Конфигурация · 9 мин
Как узнать количество строк кода в конфигурации 1С
Способы подсчёта строк кода в конфигурации 1С: выгрузка модулей, поиск по файлам, EDT, внешние инструменты. Пошаговые инструкции, ограничения и частые ошибки.
Подсчёт строк кода в конфигурации 1С нужен при оценке объёма доработок, планировании рефакторинга, передаче проекта другой команде или составлении технического задания. В отличие от классических языков программирования, в 1С нет встроенной кнопки «посчитать строки», поэтому задача решается обходными способами: через выгрузку модулей, конфигуратор, EDT или сторонние скрипты.
Важно понимать, что считать именно вы хотите: только программный код модулей, код вместе с комментариями и пустыми строками или всю конфигурацию целиком, включая формы и макеты. От этого зависит выбор инструмента и интерпретация результата. Ниже разобраны рабочие способы с конкретными шагами и ограничениями каждого.
Что именно считается строками кода в 1С
Программный код в конфигурации 1С хранится в модулях: общих модулях, модулях объектов, модулей форм, модуле приложения, модуле сеанса и других. Формы, макеты, роли и описания метаданных — это не код, хотя при выгрузке конфигурации в файлы они тоже присутствуют в виде XML или двоичных данных.
Поэтому перед подсчётом определите границы: обычно под «строками кода» понимают содержимое файлов модулей с расширением .bsl (при выгрузке из EDT или в формате конфигуратора). Комментарии и пустые строки по умолчанию входят в подсчёт, но их можно исключить, если нужна «чистая» метрика.
Способ 1: выгрузка модулей через конфигуратор
Это самый доступный способ, не требующий дополнительных инструментов. Откройте конфигуратор, загрузите конфигурацию и выполните команду меню «Конфигурация → Выгрузить модули». Укажите каталог — платформа сохранит все модули в виде текстовых файлов.
В типовых конфигурациях команда может быть недоступна, если конфигурация находится на полной поддержке без возможности изменения. В этом случае сначала включите возможность изменения через «Поддержка → Настройка поддержки», либо используйте выгрузку конфигурации в файлы (об этом ниже).
- 1Откройте конфигуратор и загрузите нужную конфигурацию
- 2Выполните Конфигурация → Выгрузить модули, укажите пустой каталог
- 3Дождитесь завершения выгрузки — в каталоге появятся файлы модулей
- 4Посчитайте строки: в PowerShell выполните (Get-ChildItem -Recurse -Filter *.bsl | Get-Content | Measure-Object -Line) или аналог
- 5Сверьте количество файлов с числом модулей в дереве конфигурации
После выгрузки строки считаются любым способом: командой PowerShell, утилитами вроде cloc, или даже открытием всех файлов в редакторе с поддержкой статистики. Команда PowerShell выглядит так:
(Get-ChildItem -Path "C:\Modules" -Recurse -Filter *.bsl | Get-Content | Measure-Object -Line).LinesСпособ 2: выгрузка конфигурации в файлы
Альтернатива — полная выгрузка конфигурации в файлы через «Конфигурация → Выгрузить конфигурацию в файлы». В этом случае вы получите полное дерево: модули окажутся в файлах .bsl рядом с XML-описаниями объектов, форм и макетов.
Плюс способа — работает независимо от режима поддержки и подходит для автоматизации через пакетный запуск конфигуратора с параметром /DumpConfigToFiles. Минус — в выгрузке много служебных файлов, и фильтровать нужно строго по расширению .bsl, чтобы не посчитать XML-разметку форм.
Способ 3: подсчёт через 1C:EDT
Если разработка ведётся в 1C:Enterprise Development Tools, конфигурация уже хранится как проект в файловой системе. Каждый модуль — отдельный файл .bsl внутри рабочей области, поэтому достаточно посчитать строки по каталогу проекта тем же скриптом.
EDT дополнительно удобна тем, что позволяет импортировать конфигурацию из информационной базы: создайте проект, укажите базу-источник, и после импорта весь код окажется в файлах. Это рабочий обходной путь, когда прямая выгрузка модулей из конфигуратора недоступна.
Способ 4: скрипты и внешние инструменты
Для регулярных замеров удобнее автоматизировать процесс. Популярные варианты: утилита cloc (умеет фильтровать по языкам и показывает отдельно код, комментарии и пустые строки), скрипты на OneScript, связка пакетного конфигуратора и PowerShell.
Пример с cloc после выгрузки модулей: cloc C:\Modules --include-ext=bsl. Утилита покажет количество файлов, пустых строк, комментариев и непосредственно кода — это самая информативная метрика для оценки трудоёмкости.
Сравнение способов
Быстро и просто, но может быть недоступна при полной поддержке без изменений
Работает всегда и автоматизируется, но требует фильтрации служебных файлов
Код уже в файлах, удобно для регулярных замеров, но нужен импорт конфигурации
Самая детальная статистика (код/комментарии/пустые строки), требует установки инструмента
Как исключить комментарии и пустые строки
Для оценки реального объёма логики часто нужны только значимые строки. В PowerShell это делается фильтрацией: исключите пустые строки и строки, начинающиеся с //. Учтите, что блочных комментариев в 1С нет, поэтому простой фильтр по префиксу покрывает большинство случаев.
Пример команды: (Get-ChildItem -Recurse -Filter .bsl | Get-Content | Where-Object { $_ -notmatch '^\s$' -and $_ -notmatch '^\s*//' }).Count. Погрешность возникнет только на строках, где код и комментарий совмещены, — для прикладной оценки она несущественна.
Типичные ошибки при подсчёте
Проверка результата
Чтобы убедиться, что подсчёт корректен, выполните несколько контрольных проверок. Сопоставьте число выгруженных файлов .bsl с ожидаемым количеством модулей: если в конфигурации сотни объектов, а файлов выгрузилось несколько штук — выгрузка прошла не полностью.
Также откройте пару файлов случайным образом: они должны содержать код на встроенном языке, а не XML. Если вместо кода видны служебные данные, вы считаете не тот каталог.
Как проверить результат
Сопоставимо с числом модулей в дереве конфигурации
Файлов заметно меньше — выгрузка неполная
Код на встроенном языке 1С
XML-разметка или двоичные данные
Тысячи–сотни тысяч строк для типовой доработанной конфигурации
Миллионы строк при фильтре по .bsl — вероятно, посчитаны дубли или архивы
Ограничения и частные случаи
Код расширений конфигурации не входит в выгрузку основной конфигурации — его нужно выгружать и считать отдельно. Внешние обработки и отчёты (.epf, .erf) также хранятся отдельными файлами, и их модули извлекаются через открытие в конфигураторе или специальные утилиты разборки.
Если конфигурация поставляется без исходных текстов модулей (закрытые модули поставщика), их код недоступен и в подсчёт не попадёт. Это нормально: в статистику включается только тот код, который вы реально можете читать и изменять.
Что важно запомнить
Строки кода в 1С считают по выгруженным файлам модулей .bsl — через конфигуратор, выгрузку в файлы или EDT-проект. Фильтруйте только .bsl, при необходимости исключайте комментарии и пустые строки, а результат проверяйте по числу файлов и их содержимому.
Частые вопросы
Можно ли посчитать строки прямо в конфигураторе без выгрузки?
Встроенной функции подсчёта строк по всей конфигурации в конфигураторе нет. Можно открыть конкретный модуль и увидеть номер последней строки, но для всей конфигурации потребуется выгрузка модулей в файлы и подсчёт внешними средствами.
Что делать, если команда «Выгрузить модули» недоступна?
Проверьте режим поддержки: при полной поддержке без изменений выгрузка может быть заблокирована. Варианты решения — включить возможность изменения в настройках поддержки, использовать «Выгрузить конфигурацию в файлы» или импортировать конфигурацию в проект EDT.
Считаются ли модули форм при выгрузке?
Да, при выгрузке модулей или конфигурации в файлы модули форм сохраняются в отдельные .bsl-файлы рядом с описанием формы. При фильтрации по расширению .bsl они попадут в общий подсчёт автоматически.
Как посчитать код в расширении конфигурации?
Расширение выгружается отдельно: откройте список расширений в конфигураторе, выделите нужное и используйте выгрузку расширения в файлы. Далее подсчёт выполняется по тем же .bsl-файлам, что и для основной конфигурации.
Какая метрика точнее для оценки трудоёмкости?
Число строк без комментариев и пустых строк, которое показывает, например, утилита cloc. Но и она ориентировочная: для оценки доработок дополнительно смотрят количество изменённых объектов, сложность логики и наличие типового кода под замком поддержки.
Можно ли автоматизировать регулярный подсчёт?
Да. Настройте пакетный запуск конфигуратора с параметром /DumpConfigToFiles по расписанию, затем выполняйте скрипт подсчёта по каталогу выгрузки. Такую связку удобно встроить в процесс сборки или ночное обслуживание.