Страница 1 из 1

Проблема с Alter интерфейса Dogovor

Добавлено: 10 июл 2019, 20:58
Buddy
Появилась задача написать альтер интерфейса Dogovor и изменить в нём поведение стандартного фильтра.

Фильтр в интерфейсе реализован с помощью condition:

Код: Выделить всё

Condition Filters  = CheckDogFilter(Dogovor1.Buffer)
Функция CheckDogFilter объявлена в секции public vipInterface:

Код: Выделить всё

VipInterface Dogovor implements TDocument, tDogovorObjInterfaceV2, IMenuMakerParameters, IExtMenu
…
Public:
…
  Function  CheckDogFilter(buf: type$Dogovor) : boolean;
…
End;
Пишу альтер следующим образом:

Код: Выделить всё

Alter interface Dogovor;
Overload
  function CheckDogFilter(buf: type$Dogovor) : boolean;
end;

Function CheckDogFilter(buf: type$Dogovor) : boolean;
{
  message('CheckDogFilter');
  result := false;
}
end.
И ожидаю, что при попытке установить фильтр увижу множество сообщений, но этого не происходит. Фильтр продолжает работать как и работал – очевидно, вызывается функция из оригинального интерфейса, а не моя. С соседними функциями такой проблемы не возникло – все нормально переопределялись.

Я не могу понять, что такого особенного в этой функции, что не позволяет мне её переопределить.

Re: Проблема с Alter интерфейса Dogovor

Добавлено: 10 июл 2019, 23:42
Den
Buddy писал(а):И ожидаю, что при попытке установить фильтр увижу множество сообщений, но этого не происходит
Вряд ли дело в неправильно описанном Alter (по правилам , описанным в документации он верен, по большому счету).
Значит не активизируется Condition Filters. Вот и все. Видимо, прикладной код при некоторых условиях накладывает только этот кондишн (и, соответсвенно, вызов метода идет этого только тогда...).

Re: Проблема с Alter интерфейса Dogovor

Добавлено: 10 июл 2019, 23:50
Buddy
Спасибо, завтра проверим.

Re: Проблема с Alter интерфейса Dogovor

Добавлено: 11 июл 2019, 00:00
Den
Ctrl+F4
ConditionActiveInLeave(tcFilters, tnDogovor1)

Re: Проблема с Alter интерфейса Dogovor

Добавлено: 11 июл 2019, 15:39
edward_K
Добавьте свои ограничения. и лучше в bounds
Установку пропишите в
Function SetFilterBounds : boolean;
Та срабатывает не при всех фильтрах.

Re: Проблема с Alter интерфейса Dogovor

Добавлено: 11 июл 2019, 15:43
Buddy
Спасибо, проблему решили!