Для презентации мне потребовалось подсчитать количество используемых в конфигурации объявлений процедур и функций, количество строк с кодом. Прям точные значения мне не требовались. Главное было отразить тенденции роста и т.п.
Для подсчета вы можете сделать обработку (как я, либо воспользоваться любой консолью кода). Я свою обработку не выкладываю, т.к. код очень прост и любой разберётся в нём.
Итак, приступаем. Всё чрезвычайно просто.
Первое, с чего нужно начать - в режиме конфигуратора выгрузить конфигурацию в файлы в какой-нибудь каталог. См. Рис.1.
Второе - читаем все файлы "*.bsl" из этого каталога в массив. В этих (кодовых) файлах и лежит текст программ.
Третье - последовательно построчно читаем файлики с предыдущего шага и считаем, что там нам нужно.
Четвертое - просто выводим результат.
Процедура КнопкаВыполнитьНажатие(Кнопка)
МассивФайлов = НайтиФайлы(КаталогСФайлами, "*.bsl", Истина);
МойРезультат = Новый Структура;
МойРезультат.Вставить("СчКодовыхФайлов", 0);
МойРезультат.Вставить("СчОбъявленийПроцедурФункций", 0);
МойРезультат.Вставить("СчКомментариев", 0);
МойРезультат.Вставить("СчСтрокКода", 0);
МойРезультат.Вставить("СчПустыхСтрок", 0);
МойРезультат.Вставить("СчВсегоСтрок", 0);
Для Каждого Файл Из МассивФайлов Цикл
ПросчитатьФайл(Файл.ПолноеИмя, МойРезультат);
КонецЦикла;
Для Каждого Показатель Из МойРезультат Цикл
Сообщить(Показатель.Ключ + ": " + Формат(Показатель.Значение, "ЧН=0; ЧГ=0"));
КонецЦикла;
КонецПроцедуры
Процедура ПросчитатьФайл(ПолноеИмяФайла, МойРезультат)
МойРезультат["СчКодовыхФайлов"] = МойРезультат["СчКодовыхФайлов"] + 1;
Текст = Новый ЧтениеТекста(ПолноеИмяФайла, КодировкаТекста.ANSI);
Стр = Текст.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки
ПросчитатьСтроку(Стр, МойРезультат);
Стр = Текст.ПрочитатьСтроку();
КонецЦикла;
КонецПроцедуры
Процедура ПросчитатьСтроку(Стр, МойРезультат)
МойРезультат["СчВсегоСтрок"] = МойРезультат["СчВсегоСтрок"] + 1;
ТекСтрока = СокрЛП(Стр);
Если ТекСтрока = "" Тогда
МойРезультат["СчПустыхСтрок"] = МойРезультат["СчПустыхСтрок"] + 1;
Иначе
НачСтроки = Лев(СокрЛП(Стр), 2);
Если НачСтроки = "//" Тогда
МойРезультат["СчКомментариев"] = МойРезультат["СчКомментариев"] + 1;
ИначеЕсли ВРег(НачСтроки) = "ФУ" ИЛИ ВРег(НачСтроки) = "ПР" Тогда
МойРезультат["СчОбъявленийПроцедурФункций"] = МойРезультат["СчОбъявленийПроцедурФункций"] + 1;
Иначе
МойРезультат["СчСтрокКода"] = МойРезультат["СчСтрокКода"] + 1;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
На выходе программы получим результат: