Расширение: изменить результат функции через ПродолжитьВызов

Учебные задачи

Вместо заменяет вход в функцию, но позволяет явно вызвать исходную реализацию и использовать ее результат.

Где и как запускать

Модуль объекта собственной заимствованной обработки в расширении; сервер.

Подготовка

  1. В модуле объекта своей обработки УчебныйРасчет разместите исходную экспортную функцию из отдельного блока ниже.

  2. Заимствуйте обработку в свое расширение. Блок поместите в модуль объекта расширения. Создайте настоящий объект обработки и вызовите РассчитатьУчебнуюСумму(250, 4).

&Вместо("РассчитатьУчебнуюСумму")
Функция УчебнаяСуммаСоСкидкой(Цена, Количество)
    СуммаДоСкидки = ПродолжитьВызов(Цена, Количество);
    Скидка = СуммаДоСкидки * 0.1;
    Сообщить("Учебная скидка: " + Строка(Скидка));
    Возврат СуммаДоСкидки - Скидка;
КонецФункции
Исходный модуль объекта УчебныйРасчет

Исходная учебная конфигурация → Обработки → УчебныйРасчет → Модуль объекта

Серверный модуль собственного объекта; это исходный код, не модуль расширения.

Функция РассчитатьУчебнуюСумму(Цена, Количество) Экспорт
    Возврат Цена * Количество;
КонецФункции

Разбор по шагам

  1. Объявите исходную функцию и два параметра.

  2. Перехватите ее через Вместо.

  3. Получите исходный результат и верните сумму с десятипроцентной скидкой.

Как проверить результат

  1. Исходная сумма 1000, возвращаемая сумма 900.

  2. Цена и Количество передаются в ПродолжитьВызов в исходном порядке.

Ожидаемый результат

Расширение использует исходный расчет, а не дублирует его произвольной константой.

На что обратить внимание

  1. Без ПродолжитьВызов исходная функция не выполняется. Совпадать должны число параметров и признаки передачи по значению; аннотация не исправляет несовместимую сигнатуру.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.