///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// <Заголовок модуля: краткое описание и условия применения модуля.>
// 
// 
// 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс

// Функция - Преобразует CamelCase в обычный текст.
//
// Параметры:
//  ИмяОбъекта	 - 	 - 
// 
// Возвращаемое значение:
// 	Строка  - преобразованный CamelCase в обычный текст. Например "HTTPСервис" => "HTTP сервис"
//
Функция ТекстИзCamelCaseСтроки(Знач СтрокаCamelCase) Экспорт
	
	// вайб-кодинг, нейронка начудила
	СтрокаCamelCase = СтрЗаменить(СтрокаCamelCase, "_", "");
	Результат = "";
	ПредыдущийСимвол = "";
	КоличествоЗаглавныхСимволов = 0;
	
	Для Сч = 1 По СтрДлина(СтрокаCamelCase) Цикл
		
		Символ = Сред(СтрокаCamelCase, Сч, 1);
		ЭтоЗаглавная = (Символ = ВРег(Символ));
		
		// Переход от аббревиатуры к обычному слову
		Если НЕ ЭтоЗаглавная И КоличествоЗаглавныхСимволов >= 2 Тогда
			Результат = Лев(Результат, СтрДлина(Результат) - 1) + " " + Прав(Результат, 1);
			// Начало нового слова
		ИначеЕсли ЭтоЗаглавная И КоличествоЗаглавныхСимволов = 0 И ПредыдущийСимвол <> "" Тогда
			Результат = Результат + " ";
		КонецЕсли;
		
		Результат = Результат + Символ;
		
		Если ЭтоЗаглавная Тогда
			КоличествоЗаглавныхСимволов = КоличествоЗаглавныхСимволов + 1;
		Иначе
			КоличествоЗаглавныхСимволов = 0;
		КонецЕсли;
		
		ПредыдущийСимвол = Символ;
		
	КонецЦикла;
	
	// Приведение к строчному регистра (кроме первого слова и аббревиатур)
	Слова = СтрРазделить(Результат, " ");
	
	Для Сч = 0 По Слова.Количество() - 1 Цикл
		
		Слово = Слова[Сч];
		
		ЭтоАббревиатура = (Слово = ВРег(Слово));
		
		Если Сч > 0 Тогда
			// Однобуквенное слово точно не аббревиатура
			Если СтрДлина(Слово) = 1 Тогда
				
				Слова[Сч] = НРег(Слово);
				
				// Не аббревиатура → делаем первую букву строчной
				
			ИначеЕсли НЕ ЭтоАббревиатура Тогда
				
				Слова[Сч] = НРег(Лев(Слово, 1)) + Сред(Слово, 2);
				
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат СокрЛП(СтрСоединить(Слова, " "));
	
КонецФункции

#КонецОбласти

#Область СлужебныйПрограммныйИнтерфейс

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#КонецОбласти