// Функция - Разрешенное имя переменной из наименования
// Наименование - <Строка> - Входная строка. Может содержать любые символы
// Возвращаемое значение:
// <Строка>, Неопределено - Имя, подходящее для использования в качестве переменных, ключей структур, заголовков ТЗ и пр.
// Генерируемое имя всегда начинается с "_". Если преобразование не удалось, то возвращает Неопределено
Функция РазрешенноеИмяПеременнойИзНаименования(Знач Наименование) Экспорт
Наименование = СокрЛП(Наименование);
Если Не ЗначениеЗаполнено(Наименование) Тогда
Наименование = СтрЗаменить(Наименование, Символы.ВК + Символы.ВТаб + Символы.НПП + Символы.ПС + Символы.ПФ + Символы.Таб, " ");
Наименование = СтрЗаменитьПоРегулярномуВыражению(Наименование, "[^а-яА-ЯёЁa-zA-Z0-9 ]", "", Истина, Ложь);
МассивПодстрок = СтрРазделить(Наименование, " ", Ложь);
Если МассивПодстрок.Количество() = 0 Тогда
Для Каждого Подстрока Из МассивПодстрок Цикл
Подстрока = ВРег(Лев(Подстрока, 1)) + Сред(Подстрока, 1);
МассивПодстрок[0] = "_" + МассивПодстрок[0];
Результат = СтрСоединить(МассивПодстрок, "");
//Максимальная длина имени в 1С - 80 символов
Если СтрДлина(Результат) > 80 Тогда
Результат = Лев(Результат, 80);