Как разделить в коде 1с строку "ИванИванович" (добавить пробел)
чтобы получилось "Иван Иванович" ?
---
```1c
    Функция ПреобразоватьТРег(Строка)
    Результат = ";
    Для Сч = 1 По Стрдлина(Строка) Цикл
    Символ = Сред(Строка, Сч, 1);
    Если Символ = ВРег(Символ) Тогда
    Результат = Результат + " " + Символ;
    Иначе
    Результат = Результат + Символ;
    КонецЕсли;
    КонецЦикла;
    Возврат Результат;
    КонецФункции
```
---
```1c
    Стр = "ИванИванович";
    Стр = Лев(Стр, 4) + " " + Прав(Стр, 8)
```
---
А если будет КонстантинПетрович?
---
Ответил согласно постановки задачи))
---
Сходи в магазин, купи буханку хлеба, а если будут яйца, то возьми десяток ))))
---
Перебором каждой буквы, выясняешь в каком она регистре, если в верхнем, значит перед ней - пробел
---
```1c
    стрСлитная = "ИванИванович";
    позицияБольшойБуквы = 0;

    Для Й = 2 По СтрДлина(стрСлитная) Цикл

    символ = Сред(стрСлитная,Й,1);
    Если символ = ВРег(символ) Тогда
    позицияБольшойБуквы = Й;
    Прервать;
    КонецЕсли;

    КонецЦикла;

    Если позицияБольшойБуквы = 0 Тогда
    стрСПробелом = стрСлитная;
    Иначе
    стрСПробелом = Лев(стрСлитная,позицияБольшойБуквы - 1) + " " + Сред(стрСлитная,позицияБольшойБуквы);
    КонецЕсли
```
---
надо еще добавить: "и молись чтоб цифр и символов в исходных данных не было"))
---
"Константин♥Петрович" -> "Константин ♥Петрович"
"Иван1Иванович" -> "Иван 1Иванович"

Главное что исключение не вызывает :)
---
```1c
    Функция ПреобразоватьТРег(Строка)
    Результат = ";
    Для Сч = 1 По Стрдлина(Строка) Цикл
    Символ = Сред(Строка, Сч, 1);
    Если Символ = ВРег(Символ) Тогда
    Результат = Результат + " " + Символ;
    Иначе
    Результат = Результат + Символ;
    КонецЕсли;
    КонецЦикла;
    Возврат Результат;
    КонецФункции
```
---
Спасибо за функцию!
---
я протестил в отладке решение в 10

```1c
    ПреобразоватьТРег("ИвановСтепан") " Иванов Степан"
    ПреобразоватьТРег("Дуся2Марфор7внаПет:руш") " Дуся 2 Марфор 7вна Пет :руш"
    ПреобразоватьТРег("Мария анннаРозаСидорчук") " Мария аннна Роза Сидорчук"
    ПреобразоватьТРег("Мария анннаРозаСидорчук") " Мария аннна Роза Сидорчук"
    ПреобразоватьТРег("ИВановИван") " И Ванов Иван"
```

Очевидно, что когда в СлитномФИО не буквы, то результат не тот.
и когда в строке ФИО есть пробел, то этот пробел удваивается.

поэтому я ушел от упрощения и обошел такого рода ошибки.
мой вариант лишен этих недостатков и чтобы он был более полным в него можно добавить еще латиницу.
---
Спасибо, но это не мой случай.
---
а потом буде "ИВановИван"))
---
была такая задача и как-то костлил, а сейчас запили в расширение метод
(по комментам все разжевал)

```1c
    //
    // После первого цикла, например, из строки "ИвановСтепан" получим "ИивановСстепан".
    // Т.е. мы подготовим буквы верхнего регистра для выполнения миссии разделителей
    // и продублируем их в нижнем регистре чтобы не потерять при разделении.
    //
    // Далее стандартное резделение и сборка ФИО с помощью системных строковых функций.
    //
    Функция Расш1_РазделитьЧастиКиррилическогоФИОПоРегистру(СлитноеФио) Экспорт
    СмещениеДоНР = КодСимвола("а") - КодСимвола("А"); // Смещение кода символа от буквы верхнего регистра до буквы нижнего регистра
    Для тКодВР = КодСимвола("А") По КодСимвола("Я") Цикл
    СлитноеФио = СтрЗаменить(СлитноеФио, Символ(тКодВР),Символ(тКодВР)+Символ(тКодВР+СмещениеДоНР));
    КонецЦикла;
    ФИО = ";
    мЧастиФио = СтрРазделить(СлитноеФио, "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЬЪЭЮЯ", Ложь);
    Для каждого тЧасть Из мЧастиФио Цикл
    ФИО = ФИО + тЧасть + " ";
    КонецЦикла;
    Возврат ТРег(СокрП(ФИО));
    КонецФункции
```

результат из табло отладки

Расш1_РазделитьЧастиКиррилическогоФИОПоРегистру("ИвановСтепан") "Иванов Степан"
Расш1_РазделитьЧастиКиррилическогоФИОПоРегистру("ИвановИван") "Иванов Иван"
Расш1_РазделитьЧастиКиррилическогоФИОПоРегистру("Иванов") "Иванов"
Расш1_РазделитьЧастиКиррилическогоФИОПоРегистру("иванов") "Иванов"
Расш1_РазделитьЧастиКиррилическогоФИОПоРегистру("МарияАнннаРозаСидорчук") "Мария Аннна Роза Сидорчук"
Расш1_РазделитьЧастиКиррилическогоФИОПоРегистру("Мария анннаРозаСидорчук") "Мария Аннна Роза Сидорчук"

(11) это уже не в рамках задачи и тут уже необходимо подключать классификаторы имен, тоже можно, но на порядки сложнее.
---
Немного привел к общему случаю:
(12)

```1c
    Функция РазделитьЧастиСловаПоРегистру(Знач Значение, КаждоеСловоСЗаглавной = Истина) Экспорт
    СмещениеДоНР = КодСимвола("а") - КодСимвола("А"); // Смещение кода символа от буквы верхнего регистра до буквы нижнего регистра
    Для тКодВР = КодСимвола("А") По КодСимвола("Я") Цикл
    Значение = СтрЗаменить(Значение, Символ(тКодВР), Символ(тКодВР) + Символ(тКодВР + СмещениеДоНР));
    КонецЦикла;
    РазделеннаяСтрока = ";
    мЧастиСтроки = СтрРазделить(Значение, "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЬЪЭЮЯ", Ложь);
    Для сч = 0 По мЧастиСтроки.ВГраница() Цикл
    тЧасть = СокрЛП(мЧастиСтроки[сч]);
    Если сч = 0 Или КаждоеСловоСЗаглавной Тогда
    тЧасть = ТРег(тЧасть);
    КонецЕсли;
    РазделеннаяСтрока = РазделеннаяСтрока + тЧасть + " ";
    КонецЦикла;
    Возврат СокрП(РазделеннаяСтрока );
    КонецФункции
```
---
Давно ли кириллица является "общим случаем"?
---
по поводу КилиллПтровича, цифр и пр. в слитном фио

Расш1_РазделитьЧастиКиррилическогоФИОПоРегистру("ИВановИван") И Ванов Иван
Расш1_РазделитьЧастиКиррилическогоФИОПоРегистру("ИвановКириллПетрович") Иванов Кирилл Петрович
Расш1_РазделитьЧастиКиррилическогоФИОПоРегистру("Дуся2Марфор7внаПет:руш") Дуся2 Марфор7вна Пет:руш