Функция возвращает значение для выражения. Процедура выполняет действие; её вызов здесь не присваивается переменной.
Где и как запускать
Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.
Подготовка
Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.
Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().
Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.
Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.
Процедура ВыполнитьПример() Экспорт
СуммаПокупки = РассчитатьУчебнуюСумму(100, 3);
ПоказатьУчебнуюСумму(СуммаПокупки);
Сообщить(СуммаПокупки = 300);
КонецПроцедуры
Функция РассчитатьУчебнуюСумму(Цена, Количество)
Возврат Цена * Количество;
КонецФункции
Процедура ПоказатьУчебнуюСумму(Сумма)
Сообщить("Сумма: " + Строка(Сумма));
КонецПроцедурыРазбор по шагам
Передать цену 100 и количество 3 в собственную функцию.
В функции получить произведение и вернуть через Возврат.
Сохранить результат 300 и передать его в свою процедуру вывода.
Проверить значение, независимо от текста сообщения процедуры.
Как проверить результат
Вывести Сумма: 300 и Истина.
Замените количество на 4: сумма станет 400, проверку ожидаемого результата обновите осмысленно.
Ожидаемый результат
Разделены вычисление, возврат результата и действие без результата.
На что обратить внимание
Собственные функции размещаются на уровне модуля, не внутри ВыполнитьПример.
Экспорт относится к доступности процедуры извне модуля, а не к возврату значения.
Отсутствие Возврат в функции не создаёт автоматически нужную сумму.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.