Вход | Регистрация


Расширения 8.3: передача из ДО в ПОСЛЕ

Расширения 8.3: передача из ДО в ПОСЛЕ
Я
   Euroset1
 
25.04.18 - 10:08
Скажите. Как передать переменную из процедуры до в процедуру после? Вот для чего это потребовалось:

Есть табличная часть некая. Есть ее реквизит, который типовая процедура портит в процессе выполнения. Но подменять стандартную процедуру я не хочу - велика вероятность, что при очередном обновлении коробки там будут важные изменения. Поэтому нужно перед типовой процедурой запомнить данные, а после нее эти данные вернуть.

Конечно, первая мысль - реквизит формы, но есть же еще и бесконтекстные вызовы...
 
 
   mszsuz
 
1 - 25.04.18 - 10:49
Есть ещё &Вместо. Там сразу и До и После.
   mehfk
 
2 - 25.04.18 - 11:12
(0) Завести переменную модуля формы.
   Ненавижу 1С
 
3 - 25.04.18 - 11:13
зачем вообще аннотации &Перед и &После, если есть универсальная &Вместо и ПродолжитьВызов()?
   AlvlSpb
 
4 - 25.04.18 - 11:47
(3) Для описанной ситуации не пойдет. Абсолютно правильно в (2)
   Ненавижу 1С
 
5 - 25.04.18 - 11:53
(4) это почему не пойдет?
   Cyberhawk
 
6 - 25.04.18 - 12:00
(5) Так типовой код меняет данные
   AlvlSpb
 
7 - 25.04.18 - 12:00
(5) Немного не так выразился. Без (2) ваше предложение не поможет.
   Ненавижу 1С
 
8 - 25.04.18 - 12:08
(6)
1. скопировали данные
2. вызвали ПродолжитьВызов
3. вернули что хотели из копии
   Euroset1
 
9 - 25.04.18 - 13:17
(8) (3) А зачем тогда нужны ДО и ПОСЛЕ?
Есть ли задачи, которые можно решить только ими? Только если играться с "у меня в базе 20 расширений и я запутался какое после какого вызывается"?)))

(7) Я в топике уже описал, почему (2) не подойдет. Контекст н не всегда доступен, да и помимо всего прочего хорошо бы уметь это делать в модуле объекта. Склоняюсь к (8), ибо эта матрёшка вполне себе выглядит годно. По крайней мере, пока у меня только одним расширением идет доработка данного продукта и другие не планируются
   Ненавижу 1С
 
10 - 25.04.18 - 14:12
(9) зачем &Перед и &После обсуждалось много раз и никто внятно ничего не сказал. Максимум это возможно чуть меньше разматывается стек вызовов

в нормальных ООП есть единый подход использования override методов с возможностью вызова родительских версий через base
 
 Рекламное место пустует
   Euroset1
 
11 - 26.04.18 - 09:12
(10) Ну я как минимум нашел одну причину.
Есть у тебя непонятки с тем, сколько еще будет расширений по этой процедуре, а тебе нужно гарантированно выполнить код до или после. В таком случае не придется постоянно заботиться о последовательности подключения расширений.
   Ненавижу 1С
 
12 - 26.04.18 - 11:17
(11) не вижу проблем: http://v8.1c.ru/o7/201603module/13.png
   Euroset1
 
13 - 26.04.18 - 11:21
(12) А я вижу. Расширение2 добавляет код, который нужно выполнять прям прям 100% до всего остального. Ты добавляешь Расширение3 и оно выполняется раньше. А если бы ты использовал в Расширение2 ПЕРЕД, то при добавлении Расширение3 она также и будет выполняться ПЕРЕД.
   Ненавижу 1С
 
14 - 26.04.18 - 11:28

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует