В собственном серверном модуле выбираем ветку компиляции, а затем выполняем обычный расчёт и обычное Если над числом.
Где и как запускать
Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.
Подготовка
Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.
Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().
Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.
Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.
Процедура ВыполнитьПример() Экспорт
#Область УчебныйРасчёт
#Если Сервер Тогда
СредаКомпиляции = "Сервер";
#Иначе
СредаКомпиляции = "Другой контекст";
#КонецЕсли
Количество = 3;
Сумма = Количество * 250;
Если Количество > 0 Тогда
Сообщить(Сумма = 750);
Иначе
ВызватьИсключение "Количество для учебного расчёта должно быть положительным";
КонецЕсли;
Сообщить(СредаКомпиляции = "Сервер");
#КонецОбласти
КонецПроцедурыРазбор по шагам
Использовать именно серверный общий модуль из подготовки. Символ Сервер — символ препроцессора, не переменная с числом или строкой.
При компиляции #Если выбирает доступную ветку исходного текста. Другой вариант присваивания не превращается в обычную проверку при каждом вызове.
Символ # требуется перед Если, Иначе и КонецЕсли в блоке препроцессора. У обычной проверки количества таких символов нет.
После выбора ветки обычные операторы задают количество, вычисляют сумму и проверяют положительность при выполнении.
#Область и #КонецОбласти охватывают целый внутренний блок и не пересекаются с обычным Если. Область помогает сворачивать текст, но не задаёт новый контекст или переменную.
Как проверить результат
В указанном серверном модуле две Истина: сумма 750 и выбранная среда Сервер.
Измените количество на 5: выбранная среда остаётся Сервер, сумма становится 1250. Изменение данных при запуске не переключает #Если.
Ожидаемый результат
Препроцессор и обычное ветвление сопоставлены в одном полностью ограниченном учебном модуле.
На что обратить внимание
Не пишите #Если Количество > 0: это не поддерживаемый символ препроцессора. Для переменных времени исполнения используется обычное Если.
Не переносите без изменения пример на клиент и не ожидайте серверной ветки: настройки модуля и режим клиента определяют символы.
#Область не создаёт изоляцию данных. Её границы не должны пересекать границы процедуры, функции или других группируемых блоков.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.