Сегодня 3 марта 2024 года 12 часов 20 минут, +3, солнечно.
Всем доброго дня! Прошу прощения, что пропал из горизонта на некоторое время. Был очень бурный 2023 год, да и начало 2024 тоже выдалось жарким.
Продолжаю работу в крупной компании. Очень доволен, много места для развития. Собака растет, уже 1,5 года.
Но, вернемся к нашей теме собеседований. Раньше опыта работы с расширениями было немного и вопрос "в каком случае в расширениях используется метод ПродолжитьВызов()" вызвал у меня затруднение.
Начнем по порядку. В расширениях часто используют директиву &Вместо.
Гораздо реже используются &Перед и &После. Кроме этого, эти директивы нельзя применять для функций. Их можно применять только для процедур.
- Какая несправедливость! Воскликнет начинающий программист и будет прав.
Именно для устранения этой несправедливости и существует метод ПродолжитьВызов()
В подменяемой в расширении функции под директивой &Вместо мы можем выполнить определенные действия перед и после выполнения функции.
Например:
&Вместо("ВыполнитьОбработку")
Функция Расш1_ ВыполнитьОбработку ()
//выполняем действия перед
...
//вызываем оригинальную функцию
ПродолжитьВызов();
//возврат в расширяемую функцию
//выполняем действия после
...
КонецФункции
Такая конструкция работает и для процедур. В качестве конкретного примера, стояла задача вызывать процедуру по конкретному условию через расширение:
&Вместо("ВыполнитьОбработку")
Процедура Расш1_ ВыполнитьОбработку ()
//выполняем действия перед
Если НеВыполнять Тогда
Возврат;
Иначе
//вызываем оригинальную функцию
ПродолжитьВызов();
КонецЕсли;
КонецПроцедуры
Вот, в общем-то и все тонкости метода "ПродолжитьВызов()"
PS: В других публикациях не отсылайте на кошелек "Автору на похлебку". Новый, всем хорошо известный, владелец Юманей просто отбирал у меня деньги за обслуживание и я закрыл кошелек.