Имя: Пароль:
1C
 
Объединение слов в строке с проставлением заглавных букв
0 Dragonofdwarfs
 
19.02.26
11:44
Коллеги, всем доброго времени суток! Есть ли в БСП функция, которая может превратить строку "Мама мыла раму" в "МамаМылаРаму"?
1 Homer
 
19.02.26
11:46
ТРег
2 Dragonofdwarfs
 
19.02.26
11:49
(1) О, спасибо большое! Ну от пробелов понятно как избавиться)
3 Мультук
 
гуру
19.02.26
11:54
Доверяй, но...

Спросил google-ИИ:

1С БСП стандартная функция которая сделает из "Мама мыла раму" строку "МамаМылаРаму"

Ответ:
// Пример использования:
Текст = "мама мыла раму";
Результат = СтроковыеФункцииКлиентСервер.ВКамелКейс(Текст);
// Результат: "МамаМылаРаму"



Засомневался в имени функции и переспросил:

1С существует ли функция БСП ВКамелКейс

Ответ:

Нет, функции с названием
ВКамелКейс в типовом общем модуле СтроковыеФункцииКлиентСервер (БСП) не существует.
4 rozer76
 
19.02.26
12:18
(3) 🔥
5 Dragonofdwarfs
 
19.02.26
12:23
Теперь интересно, есть ли обратная по смыслу функция?))) Понимаю как самому написать, но это уже сложнее чем: СтрЗаменить(ТРег(Строка), " ", "")
6 Garykom
 
гуру
19.02.26
12:25
(0) Задача явно учебная
Если это не создание паролей ))

В этом случае лучше ее решать более низкоуровнево
Путем работы с символами в строке а не функциями высокого уровня
7 Мультук
 
гуру
19.02.26
12:28
(5)

Если понимаешь, дык напиши, покажи
8 Dragonofdwarfs
 
19.02.26
12:29
(6) В том то и дело, что нет) Смысл в том, чтобы не допускать  создания элементов справочника "Команды" с наименованиями содержащими пробел, т.к код, который написан до меня их не обработает) Поэтому в модуле объекта при записи нужна эта тема
9 Dragonofdwarfs
 
19.02.26
12:32
(7)так смысл писать если вдруг она есть в бсп) Если учитывать, что есть аббревиатуры, то будет ещё сложнее чем я думаю
10 rozer76
 
19.02.26
12:33
# Функция разделения верблюжьей нотации

Данная функция преобразует строки из формата "верблюжьей нотации" (camelCase) в строки с пробелами между словами.

## Функция

```bsl
Функция РазделитьВерблюжьюНотацию(Знач Строка)
    Если ПустаяСтрока(Строка) Тогда
        Возврат "";
    КонецЕсли;
    
    Результат = "";
    Для Сч = 1 По СтрДлина(Строка) Цикл
        ТекСимвол = Сред(Строка, Сч, 1);
        
        // Если это не первый символ и текущий символ - заглавная буква
        Если Сч > 1 И Строка(ТекСимвол) = ВерхнийРегистр(ТекСимвол) Тогда
            Результат = Результат + " ";
        КонецЕсли;
        
        Результат = Результат + ТекСимвол;
    КонецЦикла;
    
    Возврат Результат;
КонецФункции;
```

## Примеры использования

- `"МамаМылаРаму"` → `"Мама Мыла Раму"`
- `"ОдинДваТри"` → `"Один Два Три"`
- `"simpleText"` → `"simple Text"`
- `"XMLHttpRequest"` → `"XML Http Request"`

## Особенности

Функция работает путем обнаружения заглавных букв в строке и вставки пробела перед ними (за исключением первой буквы в строке).
11 rozer76
 
19.02.26
12:34
(10) ваш qwen3-coder-plus )
12 Garykom
 
гуру
19.02.26
12:38
(8) В этом случае делают не так
Имена команд или других сущностей (элементов формы) создаешь просто индексированные по порядку
Команда001, Команда002, Команда003 и т.д.
И отдельно хранишь соответствие имен команд и полных названий/синонимов
13 АгентБезопасной Нацио
 
19.02.26
12:39
(10) - `"XMLHttpRequest"` → `"XML Http Request"`
ага, щазз, конечно...
14 Garykom
 
гуру
19.02.26
12:46
(12)+ Ибо преобразовывать ненадежно
Всегда может встретиться непредусмотренное (не поддерживаемое как имена команд/элементов в 1С)
Например символы "+", "-" или нечто еще в исходной строке
15 d4rkmesa
 
19.02.26
12:53
(9) СтандартныеПодсистемыСервер.ПреобразоватьСтрокуВДопустимоеНаименованиеКолонки(...)
16 Злопчинский
 
19.02.26
13:01
(10) мудачный код
Строка(тектмвол) - нафейхоа это если тексимвол и так строка?
Фейхоа проверять сч > 1 в цикле охулиард раз если достаточно после цикла сделать один раз СокрЛ(результат)..?
.
Этот код ИИ писал что ли?
17 rozer76
 
19.02.26
13:21
(16) ага )) см (11) и (3). Как доказательство что не скоро ИИ заменит одинесников.
18 Stepashkin
 
19.02.26
13:33
(3) 🔥
19 nabd
 
19.02.26
13:44
20 Климов Сергей
 
19.02.26
14:34
Спросим у своего, у родненького )))
21 Гость из Мариуполя
 
гуру
19.02.26
15:40
(6) ну почему учебная?
в той же ЗУП, к примеру, есть справочник "Показатели расчета зарплаты". А там есть поле идентификатор, см. скрин.
22 Garykom
 
гуру
19.02.26
15:44
(21) Ну да такое может быть полезно для использования идентификаторов внутри формул например

Т.е. забиваем Наименование и Краткое наименование, а Идентификатор система сама предлагает
Если он не нравится то можно его подправить вручную
И обязательно добавить проверку корректности Идентификатора перед записью
23 Garykom
 
гуру
19.02.26
15:45
(22)+ Но вот обратная задача не имеет смысла и не может быть всегда выполнена
Ибо функция необратима по сути
24 Гипервизор
 
19.02.26
15:52
(23) Например, заполнить заголовки колонок таблицы по именам.
25 АгентБезопасной Нацио
 
19.02.26
15:57
(24) В общем случае не получится. Ибо (13)
26 Garykom
 
гуру
19.02.26
15:58
(24) Угу и получить там кривизну
Например из "СреднийЗаработокФСС" что будет?
"Средний заработок ф с с"?
Ладно когда в сокращении все заглавные можно разрешить правильно
Но когда сокращения с разным регистром?
Например "ЗиК" или нечто вроде?
А когда в исходном были разные спецсимволы, которые утеряны?
Типа "/.," или скобок?
27 Fish
 
гуру
19.02.26
15:59
(21) Ну так тут идентификатор - это просто имя предопределённых данных, как оно задано в конфигураторе.
28 АгентБезопасной Нацио
 
19.02.26
16:00
(26) Это можно регуляркой разрешить.
29 Garykom
 
гуру
19.02.26
16:01
(28) Нельзя
Еще раз, обратная задача нерешаема
В общем случае, только в некоторых частных
Главная проблема что нельзя понять когда случай общий (кривой) а когда частный (правильный)
30 АгентБезопасной Нацио
 
19.02.26
16:01
+(28) Хотя и XMLHttpRequest тоже
31 Garykom
 
гуру
19.02.26
16:04
Единственный выход это применение спецкодировок
Той же Base64 или иных аналогов аля URLEncode
Чтобы все "неправильные" символы исходного Наименования заменять для Идентификатора, подходящего для имен
Только в этом случае будет возможно и обратное правильное преобразование
32 АгентБезопасной Нацио
 
19.02.26
16:31
(31) чойто типа
&НаСервере
Процедура НайтиРВ(ИсходнаяСтрока)                  
    Результат = ИсходнаяСтрока;
    резПоиска=СтрНайтиВсеПоРегулярномуВыражению(ИсходнаяСтрока,"[а-яa-z][А-ЯA-Z]");
    Для каждого эл из резПоиска Цикл
        Результат = СтрЗаменить(Результат, эл.Значение, Лев(эл.Значение,1)+" "+Прав(эл.Значение,1) );
    КонецЦикла;    
    резПоиска=СтрНайтиВсеПоРегулярномуВыражению(ИсходнаяСтрока,"[А-ЯA-Z][а-яa-z]");
    Для каждого эл из резПоиска Цикл
        Результат = СтрЗаменить(Результат, эл.Значение, НРег(" "+эл.Значение) );
    КонецЦикла;    
Результат = СтрЗаменить(Результат, "  ", " ");
Результат = СокрЛП(Результат);
Сообщить(Результат);
КонецПроцедуры
33 Eiffil123
 
19.02.26
16:54
(3) ИИ - это как сумасшедший говорящий попугай. им тоже все умиляются
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.