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


1С:Предприятие :: 1С:Предприятие 8 общая

Что лучше, &Перед, &После или &Вместо ?

Что лучше, &Перед, &После или &Вместо ?
Я
   Sasha_H
 
15.09.16 - 14:58
Продолжая эту тему.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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