Регенерация конкретного правила iLogic

Автор Тема: Регенерация конкретного правила iLogic  (Прочитано 4201 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Владимир АнаньевАвтор темы

  • ADN DevHelp
  • *
  • Сообщений: 148
  • Карма: 8
Попался мне тут любопытный вопрос про регенерацию одного конкретного правила iLogic.
Способ регенерировать все правила в текущем документе известен.  Для этого достаточно выполнить команду "iLogic.RegenAllRules":

Dim controlDef as ControlDefinition = ThisApplication. _   
    CommandManager.ControlDefinitions.Item("iLogic.RegenAllRules")
controlDef.Execute2(True)

А как можно осуществить регенерацию одного конкретного правила, если нежелательно  трогать остальные?

Специальной функции в API нет, но нашелся вот такой ход.
Если переопределить текст правила iLogic, то список параметров, на которые ссылается данное правило,  очищается (обновляется), что, собственно, и требуется.  После этого можно инициировать выполнение правила.

auto = iLogicVb.Automation
rule0 = auto.GetRule(ThisDoc.Document, "Rule0")
' Reset для текста правила очищает список параметров,
' на которые правило ссылается
rule0.Text = rule0.Text 
auto.RunRuleDirect(rule0)

Метод работает  :)