Имя: Пароль:
1C
1С v8
Что лучше, &Перед, &После или &Вместо ?
,
0 Sasha_H
 
15.09.16
14:58
Продолжая эту тему.

К примеру есть процедура в установке цен которая контролит нужно -ли использовать характеристику и сообщает об ошибке.

По бизнес-логике приложения у меня предполагается по виду цен задавать наценки для товара (ну конечно же по товару в целом без его характеристик)

Для этого и следует поместить на дополнения изменения. Только вот исходя из "зазеркалья" люди пишут нужно хорошо подумать прежде чем использовать "Вместо". Соглашаюсь, но как мне например в даной ситуации не выводить сообщение, потому как оно выходит, что надо заполнить характеристики. Получается без этого никак...
1 Sasha_H
 
15.09.16
15:06
получается, что внося изменения все-таки реально без Вместо не обойтись, потому как например непонятно же где процедура получила Отказ на пустой характеристике или же на пустойй цене.

И как мне кажеться таких замен приходится делать в большинстве случаях, обновляя свои расширения после штатных обновлений и прикручиваться к ним.
2 В тылу врага
 
15.09.16
15:15
&Перед или &После это частные случаи &Вместо + ПродолжитьВызов

1С-ники велосипедисты. Во всем мире это override (переопределение)
3 Sasha_H
 
15.09.16
15:18
(2) а я разве написал на форум по вопросу который относиться не к 1С? Какой смысл этого высказывания?...
4 Nuobu
 
15.09.16
15:18
(3) Такой, что не один ты задаёшь такой вопрос, остальные тоже недоумевают.
5 Sasha_H
 
15.09.16
15:21
В даном случае идет разговор, о том, что &Вместо + ?(Не БезусловнаяЗамена, + ПродолжитьВызов, ОбработатьВМодуле)

Что именно оно ббудет использовано думаю в 80% случаев (возможно это занижено) чем &Перед или &После

Просто разработчики пальцом настараживают мол так делать можно но это плохо...
6 Sasha_H
 
15.09.16
15:21
(4) я не в доумении...  совершенно верно.
7 Sasha_H
 
15.09.16
15:23
Собственно вот цитата из зазеркалья, которы мне скинули постом выше:

И, наконец, самый «нехороший» вариант – это полное перекрытие типового метода перехватчиком &Вместо.

https://wonderland.v8.1c.ru/blog/rasshirenie-moduley/
8 Fragster
 
гуру
15.09.16
15:26
Что лучше, &Перед, &После или &Вместо?

Когда вы перехватываете методы типовой конфигурации, всегда полезно помнить о двух вещах:

    После того, как вы написали своё расширение, типовая конфигурация будет изменяться;
    Ваша цель – добавить свою функциональность, а не навсегда отказаться от того, что есть, и что будет в типовой конфигурации.

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

Также вполне приемлемым является использование перехватчика &Вместо и метода ПродолжитьВызов(). Однако тут у вас появляется возможность и соблазн вызывать типовой метод не всегда, а в зависимости от каких-то своих собственных условий. К этому нужно подходить осторожно и помнить, что в тот момент, когда вы отказываетесь от вызова типового метода, вы отказываетесь от вызова не только того метода, который есть в конфигурации сейчас, но и от всех его вариантов, которые появятся в будущем. А в будущем, например, в нём могут появиться важные и полезные изменения.

И, наконец, самый «нехороший» вариант – это полное перекрытие типового метода перехватчиком &Вместо. В этом случае типовой обработчик безусловно не будет выполняться ни сейчас, ни в будущих версиях. То есть всю ответственность за работу будущих версий конфигурации вы берёте на себя, на своё расширение. Наверняка есть ситуации, когда такое полное перекрытие необходимо, но мы призываем вас подходить к его использованию очень взвешенно и осторожно.
9 В тылу врага
 
15.09.16
15:26
(5) скорее всего &Перед или &После это последовательное выполнение методов, а &Вместо + ПродолжитьВызов это увеличение стека вызовов методов
10 Fragster
 
гуру
15.09.16
15:26
Также вполне приемлемым является использование перехватчика &Вместо и метода ПродолжитьВызов(). Однако тут у вас появляется возможность и соблазн вызывать типовой метод не всегда, а в зависимости от каких-то своих собственных условий. К этому нужно подходить осторожно и помнить, что в тот момент, когда вы отказываетесь от вызова типового метода, вы отказываетесь от вызова не только того метода, который есть в конфигурации сейчас, но и от всех его вариантов, которые появятся в будущем. А в будущем, например, в нём могут появиться важные и полезные изменения.
11 Fragster
 
гуру
15.09.16
15:27
вполне приемлемым является использование перехватчика &Вместо и метода ПродолжитьВызов()
12 Fragster
 
гуру
15.09.16
15:27
помнить, что в тот момент, когда вы отказываетесь от вызова типового метода, вы отказываетесь от вызова не только того метода, который есть в конфигурации сейчас, но и от всех его вариантов, которые появятся в будущем
13 Fragster
 
гуру
15.09.16
15:27
вот и всё
14 В тылу врага
 
15.09.16
15:28
(8) и как без подобных указаний живут разработчики C#/Java бедные
15 Fragster
 
гуру
15.09.16
15:31
(14) В ООП нет &Перед и &После, только &Вместо. Ну и ключевое слово для вызова оригинального метода.
16 Fragster
 
гуру
15.09.16
15:32
проблема в том, что люди разучились читать тексты длиннее 140 символов...
17 Sasha_H
 
15.09.16
15:33
Fragster -  я не понял какого икса ты тут переписываешь,  то что в статье!
18 Sasha_H
 
15.09.16
15:34
(16) проблема в том, что есть умники которые сидят в очках с толщинной линз в двадцать сантиметров и которым не чем заняться и тупо памят форумы.
19 Sasha_H
 
15.09.16
15:36
(14) это большая тема для разговора.

На самом деле расширения нужны только для того, чтобы обновлять без проблем не мення штатный код вот и все его таинственное исполнение на 1С.
20 Fragster
 
гуру
15.09.16
15:37
(17) потому что в статье написано, что это всё монопенисуально, единственная проблема которая может быть в том, что оригинальная база имеет свойство обновляться, и ты должен это учитывать.
21 В тылу врага
 
15.09.16
15:38
(15) я уже писал в (2)
22 Sasha_H
 
15.09.16
15:38
(20) да ладно, а что действительно база еще и обновляется....
23 Sasha_H
 
15.09.16
15:39
Умники: "  Fragster" и "  В тылу врага"
когда потребуется обсуждать языки использующие ООП я обязательно обращусь именно к Вам!
24 Sasha_H
 
15.09.16
15:40
Начинается ка кобычно тупо - срач. Модеры закрывайте веть!
25 Fragster
 
гуру
15.09.16
15:41
(23) а тогда в чем у тебя вопрос в (0)?
26 Sasha_H
 
15.09.16
15:41
этот форум с такими умники все чаще стает просто безсмыслен.
27 Fragster
 
модератор
15.09.16
15:41
обязательно
28 Sasha_H
 
15.09.16
15:43
А в том, что 1С говорят лучше этого не использовать, потому как при обновлениях может возникнуть лажа. Ну так это и все вкурсе.

И они мол такие используйте лучше &Перед или &После

А пофакту-то, использоваться они будут крайне редко
29 Fragster
 
гуру
15.09.16
15:45
(28) если в одном случае они не подходят, не значит, что они будут использоваться редко. На моей практике при доработке типовых в итоге как раз чаще всего вставлялась одна-две строки в начало или в конец типовой функции (с вызовом функции своего общего модуля).
30 Sasha_H
 
15.09.16
15:48
(29) Собственно дополнения должны использоваться, чтоб какраз-таки не менять типовой функционал и удобно обновляться.

Проще дорабатывать расширения, чем обновляться нетипово.