Route пишет:Добрый день! Есть поле с кодом, например:
{IF order>=100 "запустить макрос1" "запустить макрос2"}
Есть ли код, который позволяет запускать макросы при выполнении условий?
Т.е. если order>=100 тогда запускается макрос1, иначе - запускается макрос2.
Не очень понятно, когда вы собираетесь анализировать условие: когда поле IF только что введено или когда оно обновляется. Я иногда ввожу в документ нестандартные поля, либо параметры полей, чтобы при обновлении полей выполнять дополнительную обработку. Я имею в виду, что я пользуюсь своим макросом обновления всех полей и в процессе его исполнения анализирую поля необходимых типов.
Например, в вашем случае я так бы решал проблему (возможно, этот подход подскажет вам, как решить вашу задачу):
1. Указал бы поле IF нестандартный параметр типа
{ IF "\MYMAC\|ORDER|GE|100|\M1\M2\" \h }/
2. Доработал бы свой макрос обновления полей так, чтобы он отдельно обрабатывал поля IF.
Конечно, сначала второе, потом первое ))
Макрос обновления всех полей в документе должен в том числе обойти поля IF.
Если в поле IF параметр начинается с комбинации символов \MYMAC, то значит необходимо выполнить специальную обработку. Далее, легко разбирая по разделителям остаток параметра поля, макрос должен оценить условие, что подпараметр-пользовательское свойство ORDER больше или равно (GE) чем значение третий подпараметр. Если условие выполняется, то должен быть вызван макрос M1, если нет - то М2. В момент же набора текста поля в документе ничего происходить не будет, а результат поля будет пустым (из-за флага \h).