Условия в 1С (11 из 100 дней)
Условия
- Условия - одна из важнейших частей программирования
Условия позволяют машине реагировать на внешние факторы и принимать решения.
Без условий весь код был бы линейным - то есть всегда выполнялась одна и та же последовательность команд. Условия нужны для того, чтобы выполнять некоторый код только в некоторых ситуациях, а не всегда.
Условный оператор
Оператор условного выполнения сообщает платформе, что часть кода нужно выполнять лишь при некотором условии.
Синтаксис
Для читаемости следует:
1. Сдвигать содержимое блоков с помощью табуляции
2. Размещать каждое ключевое слово на отдельной строке
Неправильно делать так:
Посмотрим на практике:
1. Создадим в справочнике новую переменную "ДатаРождения"
2. Создадим новый параметр сеанса с типом данных "СправочникСсылка.Сотрудники" и в модуле сеанса пропишем следующий код:
3. В модуле "СеансВызовСервера" пропишем код:
4. В модуле приложения пропишем следующий код с условием (Не забудьте заполнить справочник с наименованием "Администратор" и указать дату рождения):
5. Запустим платформу и увидим
Логические выражения
Условия бывают сложными и соединенными логическими операторами:
- Операция "И" - требует выполнения обоих вариантов
- Операция "Или" - требует выполнения хотя бы одного варианта
- Операция "Не" - выполняет отрицание варианта
Примеры работы логических операторов:
Сокращенные вычисления
Платформа проверяет лишь минимально необходимую часть условия
- Ложь И <Уже неважно>
- Истина Или <Уже неважно>
Это можно использовать и ставить на второе место:
- Вычислительно тяжелые условия
- Условия, проверка которых может завершиться ошибкой
Например:
Самодокументируемый код
Поскольку в качестве выражения может быть любое значение типа "булево", часто применяют пример улучшения читабельности кода.
Например, называют переменную так, чтобы читалась со словом ЕСЛИ:
Получается, что:
- Самодокументируемый код - это приемы присвоения имен и структурирования кода для улучшения его читабельности и общего дизайна программы.
Было - длинное выражение в коде:
Стало - замена выражения на понятную переменную:
Альтернативные ветки выполнения
Блоки условий могут иметь дополнительные альтернативные блоки логики:
- Блок "Иначе" предназначен для выбора действий из двух вариантов: когда условие истинно или когда ложно:
- Может быть только один и располагается в конце
- Блок "ИначеЕсли" предназначен для выбора из нескольких вариантов
Он позволяет объединить альтернативных условий в одно:
- Может быть много
- Проверяться блоки будут последовательно сверху вниз
- Будет выполнен один из вариантов уведомления, в зависимости от значения в блоке "Если".
Вложенность условий
Допускается вложенность условий. Внутри блока условий можно написать абсолютно любой код, в том числе и другие условия:
Посмотрим все на практике:
1. Создадим новый справочник "Контрагенты", зададим ему реквизиты: ДеньРождения, ТипКонтрагенты, КПП (укажем для каждого соответствующий тип данных)
2. Сделаем так, что при определении типа контрагенты появлялся: КПП или ДеньРождения. Пропишем следующий код:
- Мы создаем две обработки, которые от выборного типа контрагенты выводит нам на форму элемент, а также одновременно с этим очищает не нужный.
3. Посмотрим, что получилось
Отдельные случаи записи условий
Тернарный оператор
Для условий, которые подразумевают присваивание какого-либо одного значения, предусмотрен специальный оператор "?()" (Тернарный оператор).
Например, код можно переписать с помощью оператора "?()"
Тернарный оператор - это оператор над тремя операндами
В результат устанавливается второй операнд, если первый - условие - истинно
В противном случае в результат устанавливается третий операнд.
- Часто тернарный оператор упрощает код
- Но тернарные операторы со сложными условиями и выражениями плохо читаются
- Заменяйте их на операторы условного выполнения или упрощайте выражения, ввода временные переменные
Разберем на практике:
1. Создадим обработку, создадим новый реквизит "ЧислоПример" и команду "ПроверитьЧисло"
2. В модуле формы пропишем следующий код
3. Запустим программу и убедимся, что условие прописанное в две строки отрабатывает и выдает корректный ответ
Присваивание типа "Булево"
Если условие устанавливается значение в переменную с типом "булево", имеет смысл отказаться от условия совсем.
Например, вместо условия написать одну строку:
Проверка заполненности
Можно сравнивать значение с пустым значением:
Можно также воспользоваться специальными функциями:
Но проще воспользоваться универсальной функцией:
Точка останова с условием
Иногда ошибка находится в коде, выполняемом многократно, и воспроизводится только при определенном сочетании значений переменных
- В таких случаях ставят Точку останова с условием: Откладка - Точка останова с условием
- Выполнение остановится, когда условие станет истинным
Чтобы точка срабатывала не каждый раз при переходе программы к ней, можно установить точку останова с условием
1. Для этого надо нажать специальную кнопу в панели конфигуратора
2. Затем в открывшемся поле ввода прописать условие, при котором выполнение должно прерваться
3. Такая точка будет отображаться - синим кружком
Встретимся с вами уже завтра с ЦикламиЦикламиЦИКЛАМИ.