GoldenSoftwareLtd / gedemin

21 stars 13 forks source link

Вызов СФ ТО в случае наследования документов #3581

Closed gsbelarus closed 9 years ago

gsbelarus commented 9 years ago

Originally reported on Google Code with ID 3581

Имеем документ с настроенными СФ типовой операции для шапки и позиции.

Наследуем от этого документа.

Надо:

1) если у наследованного документа СФ шапки, или СФ позиции, не заданы, то
при его сохранении должны вызываться СФ родительского документа.

2) если заданы, то вызываются СФ наследованного документа

Reported by gs1994 on 2015-05-11 11:50:41

gsbelarus commented 9 years ago
Я не помню что именно, но этому варианту что то мешало, поэтому решили сделать, что
конструктор формирует у наследника новую СФ из родительской.

Reported by PZholnerovich on 2015-05-11 13:01:58

gsbelarus commented 9 years ago
не знаю, мне кажется, две одинаковые ф-и - это не оч. хорошо. Может, найдете как обойти
то, что мешало?

Reported by alexandra.gsoftware on 2015-05-11 13:03:44

gsbelarus commented 9 years ago
будем делать как сказал директор, потом когда он передумает - переделаем

Reported by PZholnerovich on 2015-05-11 17:45:18

gsbelarus commented 9 years ago
У наследника не указана ф-я - вызываем родительскую. Но, если вдруг из наследника пытаемся
ее отредактировать - тогда создается новая ф-я, копия. Если мы хотим, чтоб у наследника
вообще ничего не вызывалось, создаем ему новую ф-ю с пустым телом. Правильно?

Reported by alexandra.gsoftware on 2015-05-11 18:37:21

gsbelarus commented 9 years ago
вроде как правильно, но один момент смущает, если создаем функцию то происходит создание
копии родительской, и чтобы создать пустую придется вручную редактировать или сделать
две кнопки создать от родителя или создать пустую? опять же добавив новый элемент на
форму можно погареть на перекрытом dfm. как вариант вызов диалогового окна

Reported by PZholnerovich on 2015-05-11 18:45:08

gsbelarus commented 9 years ago
1) создаем тип документа, наследник от типа, у которого есть СФ
2) у созданного типа поле СФ пустое на экране, в базе данных -- НУЛЛ
3) если создается экземпляр такого типа, то система смотрит в gdClassList и видит,
что функшнкей там <=0. Тогда система смотрит, а не наследован ли этот тип документа
(через gdClassList, через TgdDocumentEntry, смотрит! ) если наследован, то смотрит
у родителя, есть ли функция? если есть, то вызывает ее. если нет, то смотрит на родителя
родителя и т.п.
4) если в диалоговом окне типа документа мы нажимаем кнопку Скрипт-функция, а этот
тип документа наследован и у родителя она (скрипт-функция) есть, то в этот момент,
без всяких дополнительных вопросов, она (скрипт-функция) копируется и открывается пользователю,
как скрипт функция текущего документа. Если ему надо пустая -- ничего страшного --
в окне редактора скрипт-функций он элементарно удалит все блоки и получит пустую СФ.
Никаких отдельных кнопок для этого делать не надо.
5) разумеется, с этого момента, это две разные сф, которые будут жить своей жизнью.
и это нормально.

Reported by gs1994 on 2015-05-12 07:26:57

gsbelarus commented 9 years ago
по четвертому пункту вопрос:

если у родителя СФ нет, а есть у прародителя, что в этом случае? брать прародительскую?

Reported by PZholnerovich on 2015-05-12 14:33:01

gsbelarus commented 9 years ago
да

Reported by gs1994 on 2015-05-12 14:33:39

zholnerovich commented 9 years ago

Сделано