Как проверить есть ли в пароле одновременно верхний и нижний регистр?
---
создайте массив спец символов и проверяйте если текущий символ в массиве тогда продолжить

```1c
    ЕстьБольшая = Ложь;
    МассивСпецСимволов=Новый массив;
    МассивСпецСимволов.Добавить("%");
    для м = 0 по СтрДлина(объект.Пароль) Цикл
    Сим = Сред(объект.Пароль,м,1);
    Если МассивСпецСимволов.Найти(Сим)<>Неопределено Тогда
    Продолжить;
    КонецЕсли;
    Если Сим = ВРег(Сим) Тогда
    ЕстьБольшая = Истина;
    КонецЕСЛИ;
    КонецЦикла;

    ЕстьМаленькая = Ложь;
    для м = 0 по СтрДлина(объект.Пароль) Цикл
    Сим = Сред(объект.Пароль,м,1);
    Если МассивСпецСимволов.Найти(Сим)<>Неопределено Тогда
    Продолжить;
    КонецЕсли;
    Если Сим = ВРег(Сим) Тогда
    ЕстьМаленькая = Истина;
    КонецЕСЛИ;
    КонецЦикла;

    Если ЕстьБольшая = Ложь Или ЕстьМаленькая = Ложь Тогда
    Сообщить("Пароль должен содержать строчные и заглавные символы");
    КонецЕсли;
```

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

Тогда так :) Но смысл примерно тот же...
---
```1c
    ЕстьБольшая = Ложь;
    для м = 0 по СтрДлина(объект.Пароль) Цикл
    Сим = Сред(объект.Пароль,м,1);
    Если Сим = ВРег(Сим) Тогда
    ЕстьБольшая = Истина;
    КонецЕСЛИ;
    КонецЦикла;

    ЕстьМаленькая = Ложь;
    для м = 0 по СтрДлина(объект.Пароль) Цикл
    Сим = Сред(объект.Пароль,м,1);
    Если Сим = ВРег(Сим) Тогда
    ЕстьМаленькая = Истина;
    КонецЕСЛИ;
    КонецЦикла;

    Если ЕстьБольшая = Ложь Или ЕстьМаленькая = Ложь Тогда
    Сообщить("Пароль должен содержать строчные и заглавные символы");
    КонецЕсли;
```

Сделала так. Но в пароле содержатся спецсимволы, он их определяет всегда как истину и следовательно, пароль всегда верный, хотя я могу не указать заглавную или строчную букву :(
---
лучше делать проверку в одном цикле, зачем 2 раза перебирать

нужно заполнить массив спец символами и проверять в него вхождение, если входит, то пропускать

```1c
    ЕстьБольшая = Ложь;
    ЕстьМаленькая = Ложь;

    Для м = 0 по СтрДлина(объект.Пароль) Цикл
    Сим = Сред(объект.Пароль,м,1);
    Если Сим = ВРег(Сим) Тогда
    ЕстьБольшая = Истина;
    Продолжить;
    КонецЕсли;
    Если Сим = ВРег(Сим) Тогда
    ЕстьМаленькая = Истина;
    Продолжить;
    КонецЕсли;
    Если ЕстьБольшая И ЕстьМаленькая Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если НЕ ЕстьБольшая ИЛИ НЕ ЕстьМаленькая Тогда
    Сообщить("Пароль должен содержать строчные и заглавные символы");
    КонецЕсли;
```
---
создайте массив спец символов и проверяйте если текущий символ в массиве тогда продолжить

```1c
    ЕстьБольшая = Ложь;
    МассивСпецСимволов=Новый массив;
    МассивСпецСимволов.Добавить("%");
    для м = 0 по СтрДлина(объект.Пароль) Цикл
    Сим = Сред(объект.Пароль,м,1);
    Если МассивСпецСимволов.Найти(Сим)<>Неопределено Тогда
    Продолжить;
    КонецЕсли;
    Если Сим = ВРег(Сим) Тогда
    ЕстьБольшая = Истина;
    КонецЕСЛИ;
    КонецЦикла;

    ЕстьМаленькая = Ложь;
    для м = 0 по СтрДлина(объект.Пароль) Цикл
    Сим = Сред(объект.Пароль,м,1);
    Если МассивСпецСимволов.Найти(Сим)<>Неопределено Тогда
    Продолжить;
    КонецЕсли;
    Если Сим = ВРег(Сим) Тогда
    ЕстьМаленькая = Истина;
    КонецЕСЛИ;
    КонецЦикла;

    Если ЕстьБольшая = Ложь Или ЕстьМаленькая = Ложь Тогда
    Сообщить("Пароль должен содержать строчные и заглавные символы");
    КонецЕсли;
```

Примерно так. Ну или делайте при нахождении или ненахождении спецсимвола то что вам нужно.