|
Расширения 8.3: передача из ДО в ПОСЛЕ | ☑ | ||
---|---|---|---|---|
0
Euroset1
25.04.18
✎
10:08
|
Скажите. Как передать переменную из процедуры до в процедуру после? Вот для чего это потребовалось:
Есть табличная часть некая. Есть ее реквизит, который типовая процедура портит в процессе выполнения. Но подменять стандартную процедуру я не хочу - велика вероятность, что при очередном обновлении коробки там будут важные изменения. Поэтому нужно перед типовой процедурой запомнить данные, а после нее эти данные вернуть. Конечно, первая мысль - реквизит формы, но есть же еще и бесконтекстные вызовы... |
|||
1
mszsuz
25.04.18
✎
10:49
|
Есть ещё &Вместо. Там сразу и До и После.
|
|||
2
mehfk
25.04.18
✎
11:12
|
(0) Завести переменную модуля формы.
|
|||
3
Ненавижу 1С
гуру
25.04.18
✎
11:13
|
зачем вообще аннотации &Перед и &После, если есть универсальная &Вместо и ПродолжитьВызов()?
|
|||
4
AlvlSpb
25.04.18
✎
11:47
|
(3) Для описанной ситуации не пойдет. Абсолютно правильно в (2)
|
|||
5
Ненавижу 1С
гуру
25.04.18
✎
11:53
|
(4) это почему не пойдет?
|
|||
6
Cyberhawk
25.04.18
✎
12:00
|
(5) Так типовой код меняет данные
|
|||
7
AlvlSpb
25.04.18
✎
12:00
|
(5) Немного не так выразился. Без (2) ваше предложение не поможет.
|
|||
8
Ненавижу 1С
гуру
25.04.18
✎
12:08
|
(6)
1. скопировали данные 2. вызвали ПродолжитьВызов 3. вернули что хотели из копии |
|||
9
Euroset1
25.04.18
✎
13:17
|
(8) (3) А зачем тогда нужны ДО и ПОСЛЕ?
Есть ли задачи, которые можно решить только ими? Только если играться с "у меня в базе 20 расширений и я запутался какое после какого вызывается"?))) (7) Я в топике уже описал, почему (2) не подойдет. Контекст н не всегда доступен, да и помимо всего прочего хорошо бы уметь это делать в модуле объекта. Склоняюсь к (8), ибо эта матрёшка вполне себе выглядит годно. По крайней мере, пока у меня только одним расширением идет доработка данного продукта и другие не планируются |
|||
10
Ненавижу 1С
гуру
25.04.18
✎
14:12
|
(9) зачем &Перед и &После обсуждалось много раз и никто внятно ничего не сказал. Максимум это возможно чуть меньше разматывается стек вызовов
в нормальных ООП есть единый подход использования override методов с возможностью вызова родительских версий через base |
|||
11
Euroset1
26.04.18
✎
09:12
|
(10) Ну я как минимум нашел одну причину.
Есть у тебя непонятки с тем, сколько еще будет расширений по этой процедуре, а тебе нужно гарантированно выполнить код до или после. В таком случае не придется постоянно заботиться о последовательности подключения расширений. |
|||
12
Ненавижу 1С
гуру
26.04.18
✎
11:17
|
(11) не вижу проблем: http://v8.1c.ru/o7/201603module/13.png
|
|||
13
Euroset1
26.04.18
✎
11:21
|
(12) А я вижу. Расширение2 добавляет код, который нужно выполнять прям прям 100% до всего остального. Ты добавляешь Расширение3 и оно выполняется раньше. А если бы ты использовал в Расширение2 ПЕРЕД, то при добавлении Расширение3 она также и будет выполняться ПЕРЕД.
|
|||
14
Ненавижу 1С
гуру
26.04.18
✎
11:28
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |