|
Проблема с множественным наследованием |
☑ |
0
jsmith
25.04.12
✎
10:51
|
Так вышло, что в документе есть такая ситуация..
y = f(P1, P2)
P1 = f(A)
P2 = f(А)
в итоге при измении А происходит двойной пересчет y = f(P1, P2)
что делать?
(P1, P2) = f(A)?
|
|
1
orefkov
25.04.12
✎
10:58
|
P1 = f(A)
P2 = f(А)
y = f(P1, P2)
|
|
2
jsmith
25.04.12
✎
11:00
|
если быть точнее, то
P1 - курс договора
P2 - курс цены товара
y - цена товара в валюте договора
A - дата документа
При изменении даты происходит пересчет курсов
Сейчас такая ситуация, что при пересчете каждого курса P1 и P2 вызывается y = f(P1, P2)
|
|
3
jsmith
25.04.12
✎
11:02
|
думаю, если данные класса модифицируются (то бишь меняется дата A), он должен взять управление модификацией своих потомков
то бишь изменить сам курсы P1 и P2 и вызвать функцию y
а в обработчик ПриИзмененииP1 и ПриИзмененииP2 передать параметр.. типа, который показыввал бы, что надо изменять, а что родитель сам уже сделал
то бишь родитель сам управляет множественным наследовванием
|
|
4
jsmith
25.04.12
✎
11:04
|
сейчас ситуация такая
Процедура ПриИзменении_Дата()
Записать_КурсДоговора();
Записать_КурсТовара();
КонецПроцедуры
Процедура Записать_КурсДоговора()
// рутина
ПриИзменении_КурсДоговора();
КонецПроцедуры
Процедура Записать_КурсТовара()
// рутина
ПриИзменении_КурсТовара();
КонецПроцедуры
Процедура ПриИзменении_КурсДоговора()
Записать_Цена();
КонецПроцедуры
Процедура ПриИзменении_КурсТовара()
Записать_Цена();
КонецПроцедуры
|
|
5
jsmith
25.04.12
✎
11:07
|
а сделат вот так вот
Процедура ПриИзменении_Дата()
Записать_КурсДоговора(параметр="сделать только вот это");
Записать_КурсТовара(параметр="сделать только вот это");
Записать_Цена();
КонецПроцедуры
Процедура Записать_КурсДоговора(параметр)
// рутина
ПриИзменении_КурсДоговора(параметр);
КонецПроцедуры
Процедура Записать_КурсТовара(параметр)
// рутина
ПриИзменении_КурсТовара(параметр);
КонецПроцедуры
Процедура ПриИзменении_КурсДоговора(параметр)
если параметр содержит записать цена, то
Записать_Цена();
конецесли
КонецПроцедуры
Процедура ПриИзменении_КурсТовара()
если параметр содержит записать цена, то
Записать_Цена();
конецесли
КонецПроцедуры
|
|
6
jsmith
25.04.12
✎
11:08
|
просто матан по этой теме плохо знаю
|
|
7
jsmith
25.04.12
✎
11:17
|
покурил матан, почти везде всё сводится к квалификации метода (в с++ через две точки)
значит надо квалифицировать вызов, что в принципе я и сделал
|
|
8
jsmith
25.04.12
✎
11:17
|
жуткая вещь
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой