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