Вместо заменяет вход в функцию, но позволяет явно вызвать исходную реализацию и использовать ее результат.
Где и как запускать
Модуль объекта собственной заимствованной обработки в расширении; сервер.
Подготовка
В модуле объекта своей обработки УчебныйРасчет разместите исходную экспортную функцию из отдельного блока ниже.
Заимствуйте обработку в свое расширение. Блок поместите в модуль объекта расширения. Создайте настоящий объект обработки и вызовите РассчитатьУчебнуюСумму(250, 4).
&Вместо("РассчитатьУчебнуюСумму")
Функция УчебнаяСуммаСоСкидкой(Цена, Количество)
СуммаДоСкидки = ПродолжитьВызов(Цена, Количество);
Скидка = СуммаДоСкидки * 0.1;
Сообщить("Учебная скидка: " + Строка(Скидка));
Возврат СуммаДоСкидки - Скидка;
КонецФункцииИсходный модуль объекта УчебныйРасчет
Исходная учебная конфигурация → Обработки → УчебныйРасчет → Модуль объекта
Серверный модуль собственного объекта; это исходный код, не модуль расширения.
Функция РассчитатьУчебнуюСумму(Цена, Количество) Экспорт
Возврат Цена * Количество;
КонецФункцииРазбор по шагам
Объявите исходную функцию и два параметра.
Перехватите ее через Вместо.
Получите исходный результат и верните сумму с десятипроцентной скидкой.
Как проверить результат
Исходная сумма 1000, возвращаемая сумма 900.
Цена и Количество передаются в ПродолжитьВызов в исходном порядке.
Ожидаемый результат
Расширение использует исходный расчет, а не дублирует его произвольной константой.
На что обратить внимание
Без ПродолжитьВызов исходная функция не выполняется. Совпадать должны число параметров и признаки передачи по значению; аннотация не исправляет несовместимую сигнатуру.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.