|
Объединение слов в строке с проставлением заглавных букв Eiffil123, nick86, Garykom, ДенисСмирнов, Группа неравнодушных, MAG, rozer76, serpentt, Fish, АгентБезопаснойНацио, nysyssimara, Мультук, PR, Timon1405, Бычье сердце, Гость из Мариуполя, Гипервизор, zenik, paramedic, CepeLLlka, 25-11, Злопчинский, Dotoshin, Crusher, Климов Сергей, d4rkmesa, del123, vbus, alexxx961503, _Batoo, Prog_man, Жеглофф, DiMel_77, nabd, toypaul, Хряк, dnab, kittystark, Stepashkin, qwerty, torgm, RVN, spiller26, Irbis, KJlag, evgeniy_n, aka MIK, Михаил Козлов, unenu, Dragonofdwarfs, Ёпрст, privetik, Builder, ads55, Михаил_, AlexKimp, ildary, Aleksey, корум, Ненавижу 1С, shuhard, Homer
| ☑ | ||
|---|---|---|---|---|
|
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
|
А есть в 1С такой способ обработки строки как у платформы
вот обратную задачу решали |
|||
|
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) ИИ - это как сумасшедший говорящий попугай. им тоже все умиляются
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |