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