|
Объединение слов в строке с проставлением заглавных букв wolk, Garykom, JeHer, АгентБезопаснойНацио, vicof, Timon1405, Гость из Мариуполя, AAA, Chameleon1980, Гипервизор, Климов Сергей, ДенисСмирнов, JohnGilbert, zva, Доминошник, nick86, Eiffil123, Группа неравнодушных, MAG, rozer76, serpentt, Fish, nysyssimara, Мультук, PR, Бычье сердце, zenik, paramedic, CepeLLlka, 25-11, Злопчинский, Dotoshin, Crusher, d4rkmesa, del123, vbus, alexxx961503, _Batoo
| ☑ | ||
|---|---|---|---|---|
|
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) ИИ - это как сумасшедший говорящий попугай. им тоже все умиляются
|
|||
|
34
Гость из Мариуполя
гуру
19.02.26
✎
17:46
|
(27) Ты вообще ЗУП открывал или просто так... , не подумавши?
Пример: создаю новый показатель "Процент за красивые глазки". тут же идентификатор принимает соответствующее значение. Сам, автоматом, точнее, отрабатывает соответствующая функция. Я в поле "идентификатор" даже не вставал курсором. тут идентификатор - это просто имя предопределённых данных, как оно задано в конфигураторе. ага-ага. Именно за "красивые глазки" именно задано в конфигураторе. Точняк. Какие прозорливые разработчики - предусмотрели, что мне понадобится именно такой показатель и задали его идентификатор в конфигураторе. Телепаты, не иначе. :))) см. скрин. И найди, пожалуйста, этот идентификатор в конфигураторе :)))
|
|||
|
35
Гость из Мариуполя
гуру
19.02.26
✎
19:27
|
(5)
СтрЗаменить(ТРег(Строка), " ", "")
А ничего, что в веб-клиенте метод преобразует только символы латинского алфавита? И твое исходное "Мама мыла раму" будет работать в толстом/тонком и не будет в веб-клиенте? Не, ну если тебе это неважно, если твои юзеры веб-клиентом не пользуются, то и на здоровье. кроме этого, не думал, почему в ЗГУ/ЗУП разработчики не использую Трег() в схожем месте? потому что ТРег() я бы так сказал ммм... портит исходное слово - первый символ преобразуется к верхнему регистру, а все остальные символы — к нижнему регистру. То есть, к примеру, в ЗУП общепринятые сокращения типа к примеру ФНС, ФСС, СФР будут выглядеть некрасиво - Фнс, Фсс, Сфр. А РФ превратится в Рф. А это уже не просто некрасиво :) Опять же, если тебе это неважно, то сойдет и Трег(). Пример работы своей функции в ЗГУ на скрине. Сами функции цитировать сюда не буду, во-первых, это у меня типовая ЗГУ(демо), в ЗУП то же самое, и во-вторых, чтобы не нарушать авторские права. Если надо, сам найдешь в ЗУП.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |