Найти тему

Опыт собеседований: немного о расширениях в 1С.

Изображение с сайта sparklogic.ru
Изображение с сайта sparklogic.ru

Сегодня 3 марта 2024 года 12 часов 20 минут, +3, солнечно.

Всем доброго дня! Прошу прощения, что пропал из горизонта на некоторое время. Был очень бурный 2023 год, да и начало 2024 тоже выдалось жарким.

Продолжаю работу в крупной компании. Очень доволен, много места для развития. Собака растет, уже 1,5 года.

Но, вернемся к нашей теме собеседований. Раньше опыта работы с расширениями было немного и вопрос "в каком случае в расширениях используется метод ПродолжитьВызов()" вызвал у меня затруднение.

Начнем по порядку. В расширениях часто используют директиву &Вместо.

Гораздо реже используются &Перед и &После. Кроме этого, эти директивы нельзя применять для функций. Их можно применять только для процедур.

- Какая несправедливость! Воскликнет начинающий программист и будет прав.

Именно для устранения этой несправедливости и существует метод ПродолжитьВызов()

В подменяемой в расширении функции под директивой &Вместо мы можем выполнить определенные действия перед и после выполнения функции.

Например:

&Вместо("ВыполнитьОбработку")
Функция Расш1_ ВыполнитьОбработку ()
//выполняем действия перед
...
//вызываем оригинальную функцию
ПродолжитьВызов();

//возврат в расширяемую функцию
//выполняем действия после
...
КонецФункции

Такая конструкция работает и для процедур. В качестве конкретного примера, стояла задача вызывать процедуру по конкретному условию через расширение:

&Вместо("ВыполнитьОбработку")
Процедура Расш1_ ВыполнитьОбработку ()
//выполняем действия перед
Если НеВыполнять Тогда
Возврат;
Иначе
//вызываем оригинальную функцию
ПродолжитьВызов();
КонецЕсли;
КонецПроцедуры

Вот, в общем-то и все тонкости метода "ПродолжитьВызов()"

PS: В других публикациях не отсылайте на кошелек "Автору на похлебку". Новый, всем хорошо известный, владелец Юманей просто отбирал у меня деньги за обслуживание и я закрыл кошелек.