2025-04-16 00:59:02 +05:00

50 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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