нет switch
?() вычисляет обе ветки
И/ИЛИ — с замыканием

Нет switch/case

В BSL нет оператора множественного выбора по значению — только цепочка ИначеЕсли:

Если Статус = "Новый" Тогда
    Действие = "создать";
ИначеЕсли Статус = "ВРаботе" Тогда
    Действие = "обработать";
ИначеЕсли Статус = "Закрыт" Тогда
    Действие = "архивировать";
Иначе
    Действие = "неизвестно";
КонецЕсли;

Если веток много и они проверяют одну и ту же переменную на равенство разным константам — альтернатива без длинной цепочки: сложить пары «значение → результат» в Соответствие и вызвать Получить() вместо ИначеЕсли.

?() вычисляет обе ветки всегда

Самая частая ошибка при переходе от Если к ?() — забыть, что это функция, а не сокращённая запись Если: оба значения-аргумента вычисляются, даже то, которое в итоге не вернётся. Подробности и примеры — в заметке про тернарный оператор.

В отличие от ?(), у логических операторов И/ИЛИ короткое замыкание есть — платформа не вычисляет второй операнд, если результат уже ясен по первому. Проверка на <> Неопределено перед обращением к свойству безопасна одной строкой через И, но только если предохранитель стоит первым операндом.

Сравнение через одиночный =

В условиях = — это сравнение на равенство, а не присваивание, несмотря на тот же символ, что и в Переменная = Значение. Разбор без неоднозначности — по контексту (после Если/ИначеЕсли/внутри ?() это всегда сравнение), но при чтении кода легко визуально спутать со присваиванием, особенно в сложных условиях с несколькими =.

Условные операторы