---
title: Разрешенное имя переменной из любой строки
slug: примеры-сниппеты-общее-прочее/разрешенное-имя-переменной-из-любой-строки
---
```bsl
// Функция - Разрешенное имя переменной из наименования
//
// Параметры:
//  Наименование - <Строка> - Входная строка. Может содержать любые символы
// 
// Возвращаемое значение:
// <Строка>, Неопределено  - Имя, подходящее для использования в качестве переменных, ключей структур, заголовков ТЗ и пр.
//  Генерируемое имя всегда начинается с "_". Если преобразование не удалось, то возвращает Неопределено
//
Функция РазрешенноеИмяПеременнойИзНаименования(Знач Наименование) Экспорт
    
    Наименование = СокрЛП(Наименование);
    
    Если Не ЗначениеЗаполнено(Наименование) Тогда
        Возврат Неопределено;
    КонецЕсли;
    
    Наименование = СтрЗаменить(Наименование, Символы.ВК + Символы.ВТаб + Символы.НПП + Символы.ПС + Символы.ПФ + Символы.Таб, " ");

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