// Моя первоначальная функция
// Формирует синоним переменной.
// Пример: на входе "ИмяПеременнойАБВГ", на выходе "Имя переменной АБВГ"
//
// Параметры
// ИмяРеквизита - Строка. Имя переменной, имя колонки таблицы
//
// Возвращаемое значение:
// Строка - Представление переменной
//
Функция СформироватьСиноним(ИмяРеквизита)
Перем Синоним, ъ, Символ, ПредСимвол, СледСимвол, Прописная, ПредПрописная, СледПрописная, ДлинаСтроки;
Синоним = ВРег(Сред(ИмяРеквизита, 1, 1));
ДлинаСтроки = СтрДлина(ИмяРеквизита);
Для ъ=2 По ДлинаСтроки Цикл
Символ = Сред(ИмяРеквизита, ъ, 1);
ПредСимвол = Сред(ИмяРеквизита, ъ-1, 1);
СледСимвол = Сред(ИмяРеквизита, ъ+1, 1);
Прописная = Символ = ВРег(Символ);
ПредПрописная = ПредСимвол = ВРег(ПредСимвол);
СледПрописная = СледСимвол = ВРег(СледСимвол);
// Варианты:
Если НЕ ПредПрописная И Прописная Тогда
Синоним = Синоним + " " + Символ;
ИначеЕсли Прописная И НЕ СледПрописная Тогда
Синоним = Синоним + " " + Символ;
Иначе
Синоним = Синоним + Символ;
Конецесли;
КонецЦикла;
Возврат Синоним;
КонецФункции // СформироватьСиноним()
// Переделанная nick-max функция
Функция Синоним(Знач Имя) Экспорт
НовоеИмя = "";
Имя = СтрЗаменить(Имя, "СНДС", "_сНДС");
Имя = СтрЗаменить(Имя, "ВПФР", "_вПФР");
Длина = СтрДлина(Имя);
Для Индекс = 1 По Длина Цикл
Символ = Сред(Имя, Индекс, 1);
Если Символ = НРег(Символ) Тогда
НовоеИмя = НовоеИмя + Символ;
Продолжить;
КонецЕсли;
Если Символ = ВРег(Символ) Тогда
Если Индекс > 1 Тогда
НовоеИмя = НовоеИмя + " "
КонецЕсли;
Аббревиатура = (Сред(Имя, Индекс, 3) = ВРег(Сред(Имя, Индекс, 3))) И (Длина - Индекс > 1);
Предлог = (Сред(Имя, Индекс, 2) = ВРег(Сред(Имя, Индекс, 2))) И (Длина > Индекс);
Если Аббревиатура Тогда
ДлинаАббревиатуры = 3;
Пока Сред(Имя, Индекс, ДлинаАббревиатуры) = ВРег(Сред(Имя, Индекс, ДлинаАббревиатуры))
И Индекс + ДлинаАббревиатуры <= Длина + 1 Цикл
ДлинаАббревиатуры = ДлинаАббревиатуры + 1
КонецЦикла;
ДлинаАббревиатуры = ДлинаАббревиатуры - 1;
Если (Индекс + ДлинаАббревиатуры - 1) = Длина Тогда
НовоеИмя = НовоеИмя + Сред(Имя, Индекс, ДлинаАббревиатуры);
Иначе
ДлинаАббревиатуры = ДлинаАббревиатуры - 1;
НовоеИмя = НовоеИмя + Сред(Имя, Индекс, ДлинаАббревиатуры) + " " + НРег(Сред(Имя, Индекс + ДлинаАббревиатуры, 1));
КонецЕсли;
Индекс = Индекс + ДлинаАббревиатуры;
Продолжить;
КонецЕсли;
Если Предлог Тогда
НовоеИмя = НовоеИмя + НРег(Символ) + " " + НРег(Сред(Имя, Индекс + 1, 1)) + " ";
Индекс = Индекс + 1;
Продолжить;
КонецЕсли;
НовоеИмя = НовоеИмя + НРег(Символ);
КонецЕсли;
КонецЦикла;
НовоеИмя = СтрЗаменить(НовоеИмя, "_", " ");
НовоеИмя = ВРег(Лев(НовоеИмя, 1)) + Прав(НовоеИмя, СтрДлина(НовоеИмя) - 1);
Возврат НовоеИмя;
КонецФункции