Внимание! С версии MultiMaps 6.1 изменен синтаксис макроязыка!

Ранее двоеточие применялось для разделения как операторов, так и параметров. С таким синтаксисом макроязык не может далее развиваться. Сейчас операторы отделяются друг от друга переводом строки или символами ">>", а параметры - двоеточием.

Ранее: week:0:complete:100:resource:Иванов

Сейчас: week:0 >> complete:100 >> resource:Иванов

Кроме этого, изменен также синтаксис некоторых операторов. Например, ранее: requirestartdate, сейчас: require:startdate. Операторы с измененным синтаксисом обозначены ниже в таблице красным цветом. Теоретически они почти все будут продолжать работать, но через какое-то время перестанут.

Если в ваших картах применяются ключевые слова с операторами макроязыка, обязательно сверьте их с новой версией!

Также добавлено довольно много новых оператаров.

Движок сбора данных узнает, что и как нужно собирать для каждого ключевого слова, по кодовым словам, которые находятся в примечаниях темы ключевого слова в конфигурационной карте, или в примечаниях темы в ветке сбора.

Конфигурационная карта находится в:

Мои Документы\Palmaross\MultiMaps\Resources\Data collection\dashboards_config.mmap

Подробнее о ней читайте здесь.

Таким образом, мы имеем такой совсем небольшой, но язык программирования.

Как и любой язык, он состоит из операторов (кодовые слова) и их параметров.

Можно употреблять один оператор для каждой темы, а можно конструировать кодовую фразу из нескольких операторов. Таким образом, можно даже в одной теме задать каскад фильтров.

С помощью этого макроязыка вы можете настроить критерии сбора чрезвычайно гибко.

Операторы отделяются друг от друга переводом строки (каждый оператор на новой строке), либо символами ">>". Параметры определяются через двоеточия.

Движок смотрит в примечания темы сбора - начинаются ли они с какого-то из знакомых ему операторов. Если да, то он начинает обработку операторов, пока не встретит один из знаков, сообщающих ему о том, что дальше операторов уже нет (дальше может быть просто любой текст пользователя, обычно - пояснение для темы сбора).

Знаками окончания блока операторов могут быть:

; (точка с запятой)

слово "comment"

Пример программирования ключевого слова через его примечания:

day:1
;
Собираются задачи, по своим датам попадающие под завтрашний день

или так:

week:0
complete:100
resource:Иванов

comment: Собираются завершенные задачи, по своим датам попадающие в эту неделю. Ответственный - Иванов.

предыдущий блок можно записать и так:

week:0 >> complete:100 >> resource:Иванов
;
Собираются завершенные на этой неделе задачи с ресурсом "Иванов".
(здесь операторы разделены символами ">>")

Больше примеров вы найдете в конфигурационной карте надстройки.

В каком точно порядке работает движок сбора данных смотрите здесь.

Для лучшего понимания действия операторов нужно понимать отличие стандартной темы карты от темы-задачи.

Задача это тема, имеющая хотя бы один из следующих атрибутов: ход выполнения (0 - 100%), дата начала, дата окончания, трудозатраты или ресурcы. Если ни один из этих атрибутов не присутствует на теме, это не задача.

Ниже таблица операторов, которым обучен движок сбора данных.

Оператор Значение
Диапазоны дат ! Все операторы из этого раздела взаимоисключающие. Если определено больше одного, "победит" последний.
day:N задает день. N - смещение от текущего дня (0). Таким образом, day:0 = сегодня, day:1 = завтра, day:-1 = вчера, и т.д.

Результат: собираются задачи, по датам попадающие под выполнение в заданный день.

Пример: ключевое слово Сегодня (day:0)
days:N задает диапазон дней от текущего (0). Таким образом, days:2 = ближайшие три дня (0,1,2), days:6 = ближайшая неделя, days:-3 = прошедшие три дня и т.д.

Результат: собираются задачи, по датам попадающие под выполнение в указанный диапазон.

Пример: ключевое слово Ближайшие три дня (days:2)
week:N аналогично для недель
weeks:N  
month:N аналогично для месяцев
months:N  
today синоним для day:0
tomorrow синоним для day:1
yesterday синоним для day:-1
Задачи Задачи это темы, имеющие хотя бы один из атрибутов задачи: ход выполнения, дата начала, дата окончания, трудозатраты или ресурcы.

task

task:nodates

собирает задачи

task:nodates - собирает задачи, на которых отсутствуют обе даты (начала и окончания)
nodates устаревший! не применять! Использовать task:nodates

requiere:progress

require:priority

require:startdate

require:duedate

require:bothdates

require:anydate

Вы можете потребовать, чтобы у задач обязательно присутствовали:

progress: любой значок Прогресса (хода выполенения)
priority: любой значок Приоритета (можно применять не только к задачам)

! Все операторы ниже взаимоисключающие. Если определено больше одного, "победит" последний.

startdate: дата начала
duedate: дата окончания
bothdates: обе даты
anydate: одна из дат
requirestartdate
requireduedate
устаревшие! не применять!
Использовать require:startdate и require:duedate

match:startdate

match:duedate

match:bothdates

match:anydate

! Все операторы здесь взаимоисключающие. Если определено больше одного, "победит" последний.

собираются задачи, у которых в диапазон попадают указанные даты. Например, на теме ключевое слово - Эта неделя, а в примечаниях темы стоит этот оператор. В этом случае будут собираться задачи, которые:

startdate: начинаются на этой неделе
duedate: заканчиваются на этой неделе
bothdates: начинаются И заканчиваются на этой неделе
anydate: либо начинаются, либо заканчиваются на этой неделе. Этот параметр применяется по умолчанию (если оператор match отсутствует).
startdate, duedate
bothdates, anydate
устаревшие! не применять!
Использовать вышеуказанный синтаксис

overdue

собирает просроченные задачи: Прогресс менее 100% (либо нет значка Прогресса) И дата окончания ранее, чем сегодня.

Пример: ключевое слово Просроченные в конфигурационной карте надстройки.

duration:min:N

duration:hours:N

duration:days:N

duration:months:N

собирает задачи, имеющие указанную в параметрах длительность задачи. N - количество единиц времени (или диапазон времени).

duration:hours:4 - собираются задачи, на которых стоит длительность 4 часа
duration:days:1 - собираются задачи, на которых стоит длительность 1 день
duration:days:1-3 - собираются задачи, на которых стоит длительность от 1 до 3 дней

effort:min:N

effort:hours:N

effort:days:N

effort:months:N

собирает задачи, имеющие указанные в параметрах трудозатраты.
N - количество единиц времени (или диапазон времени).

Примеры:
effort:min:15 - собираются задачи, на которых стоят трудозатраты 15 минут.
effort:min:15-30 - собираются задачи, на которых стоят трудозатраты от 15 до 30 минут
effort:hours:1-4 - собираются задачи, на которых стоят трудозатраты от 1 до 4 часов
effort:days:1 - собираются задачи, на которых стоят трудозатраты 1 день
complete:N

complete:N-M
собирает темы с соответствующим Прогрессом (ходом выполения).

Примеры:
complete:50 --- соберет все задачи c Прогрессом 50%.
complete:0-50 --- соберет все задачи с Прогрессом от 0 до 50%
complete:0-99 --- соберет все незавершенные задачи
deadline собирает задачи, на которых обязательно присутствует дата окончания И значок дедлайна.

На теме сбора обязательно должен быть значок дедлайна, им обычно является значок восклицательного знака.

См. ключевое слово Дедлайны в конфигурационной карте надстройки.
rollup собирает темы, для которых включен чекбокс "Комбинировать информацию о задании" (в панели задач "Информация о задании")
asap
(as soon as possible)
(при первой возможности)
собирает задачи, на которых стоит только одна дата, либо нет дат.

Такие задачи называются "Возможные". Срок их исполнения точно не определен (поскольку одна дата или нет дат). поэтому выполнять их следует либо начиная с даты начала, либо до даты окончания, в любое подходящее время.

Пример: на теме сбора указан период Эта неделя, и в примечаниях стоит этот оператор.

При сборе:
(1) если у задачи есть только дата начала, и она ранее или внутри текущей недели, возможно, ей уже следует заняться. Задача попадает в сбор;
(2) если у задачи есть только дата окончания, и она позже или внутри текущей недели, возможно, ей следует заняться. Задача попадает в сбор;
(3) если у задачи нет дат, задача также попадает в сбор. Когда-то ведь ей нужно заняться?

Этот оператор стоит в ключевом слове Возможные в конфигурационной карте надстройки.
advance собирает темы (вместе с их подтемами), на которых стоят значки и .

Эти значки означают, что это суммарная задача (состоит из подзадач), и она еще не до конца проработана (нужно определить ее подзадачи, определить шаги).

Если задача имеет дату начала, то она попадет в сбор, когда эта дата окажется ранее или внутри указанного в ключевом слове периода.

Если значок вы уже привыкли использовать для других целей - в конфигурационной карте надстройки найдите тему Продвинуть и просто замените на ней этот значок на нужный вам.

Прочие операторы

 

nocheckdates

игнорировать фильтры по датам

Пример: вы хотите собрать все темы, на которых стоит значок вопроса, независимо от того, попадают они или не попадают под фильтр, установленный предыдущим ключевым словом (например, "Эта неделя"). Вам поможет этот оператор.

Применяется в конфигурационной карте во многих ключевых словах со значками.

inherit

собирает в подтему унаследованное от фильтров родительской темы. Пример - ключевое слово Все (применяется в разных демо-шаблонах сбора данных).

formula

собирает темы, имеющие формулы

topicname

собирает темы, название которых совпадает с названием темы сбора.

topictext:contains

topictext:startswith

topictext:endswith

topictext:equals

ТЕКСТ - название темы сбора.

Данный оператор собирает темы, текст которых:

contains - содержит ТЕКСТ
startswith - начинается с ТЕКСТ
endswith - заканчивается на ТЕКСТ
equals - в точности совпадает с ТЕКСТ

Также есть необязательный параметр wholeword. Если он добавляется, то ищется ТЕКСТ как целое слово (то есть именно слово "текст", а не слова "текстовый", "текстура" и пр.).

topictext:startswith:wholeword

может быть еще один параметр - искомый текст. В этом случае название темы сбора может быть каким угодно:

topictext:contains:собрани - собирает темы, текст которых содержит "собрани" (собрание, собрания, собранием и т.п.)

topictext:startswith:wholeword:срочно - собирает темы, текст которых начинается с целого слова "срочно"

casesensitive:topictext

casesensitive:resources

casesensitive:properties

casesensitive:tags

casesensitive:all

В MindManager имена ресурсов, тегов и Свойств чувствительны к регистру. Т.е. ресурс "Росс" и ресурс "росс" это разные ресурсы. Тег "Сделано" и тег "сделано" это разные теги. Свойство "Расходы" и свойство "расходы" это разные Свойства.

По умолчанию, при сборе данных регистр не учитывается: если на теме сбора указан ресурс "Росс", то будут собраны как темы с ресурсом "Росс", так и темы с ресурсом "росс".

Этот оператор позволяет учитывать регистр букв для:

Текста темы (см. выше операторы topicname и topictext)
Ресурсов
Свойств темы
Тегов

Например, если на теме сбора стоит ресурс "Росс", а в примечаниях оператор casesensitive:resources, то будут собраны темы с ресурсом "Росс", но не будут собраны темы с ресурсом "росс"!

casesensitive:all учитывает регистр для всех вышеуказанных критериев.

resource:res1, res2, res3...

------------------------------

resource:условие:
ТЕКСТ

-----------------------------

resource:me

собирает темы с указанными ресурсами

resource:Иванов
собирает темы с ресурсом "Иванов"

resource:Иванов, Петр Петров, Н.И. Кузнецов
собирает темы с указанными ресурсами


resource:условие:ТЕКСТ

Данные операторы собирают темы, у которых есть ресурс, имя которого подпадает под условие:

contains - содержит ТЕКСТ
startswith - начинается с ТЕКСТ
endswith - заканчивается на ТЕКСТ
equals - в точности совпадает с ТЕКСТ

resource:contains:иван
соберет темы, у которых есть ресурс: Иванов или Иван Рогов или Поливанов.
resource:me

Собирает темы, на которых ресурсом назначены вы. Перед тем, как использовать этот оператор, вы должны обязательно определить свое имя в опциях Сбора Данных (Настройки MultiMaps на Ленте), в поле "resource:me".

Допустима конструкция:
resource:Иванов, me, Петр Петров

Этот оператор используется в ключевом слове "Мои задачи" в конфигуационной карте.

resources:all

resources:any

resources:yes

resources:no

all - собирает темы, на которых есть все ресурсы, присутствующие на теме сбора и/или указанные операторами resource.

any - собирает темы, на которых есть любой из ресурсов, присутствующий на теме сбора и/или указанный операторами resource. Этот оператор используется по умолчанию.

yes - собирает темы, на которых есть ресурсы

no - собирает задачи, на которых нет ресурсов
resources Устаревший! Исправить в своих картах! Использовать resources:yes.
resources_me Устаревший! Исправить в своих картах! Использовать resource:me.
no_resources Устаревший! Исправить в своих картах! Использовать resources:no.

ignoreresource:res1, res2...

ignoreresource:me

при сборе данных темы с указанными ресурсами игнорируются.

ignoreresource:Иванов
тема с ресурсом Иванов будет проигнорирована при сборе

ignoreresource:Иванов, Петр Петров, Н.И. Кузнецов
при сборе будут проигнорированы темы с указанными ресурсами

ignoreresource:me

при сборе игнорируются темы, на которых стоит ресурс, имеющий имя, совпадающее с тем, которое стоит у вас в Параметрах MindManager (Файл > Параметры > Информация о пользователе > Имя пользователя)

Примечание: оператор ignoreresource сам по себе ничего не собирает! Он просто игнорирует при сборе темы с указанными в параметрах ресурсами.

ignoreresources:all

ignoreresources:any

all - при сборе игнорируются темы, на которых есть все ресурсы, указанные в операторах ignoreresource.

any - при сборе игнорируются темы, на которых есть любой из ресурсов, указанных в операторах ignoreresource. Этот оператор используется по умолчанию.

tag:ГруппаТегов:Тег

tag:ГруппаТегов

tag:?:Тег

 

 

 

tag:name:условие:ТЕКСТ

tag:groupname:условие:
ТЕКСТ

собирает темы, на которых есть указанные теги

tag:Контексты:Телефон соберет темы, на которых есть тег "Телефон" из группы тегов "Контексты".

tag:Контексты соберет темы, на которых есть любой из тегов группы Контексты.

tag:?:готово соберет темы с тегом "готово" из любых групп тегов.

Сбор по нескольким тегам:

tag:Контексты:Телефон
tag:Контексты:Звонки

и т.д.


Операторы с условием собирают темы, у которых имя тега (tag:name) или название группы тегов (tag:groupname) подпадает под условие:

contains - содержит ТЕКСТ
startswith - начинается с ТЕКСТ
endswith - заканчивается на ТЕКСТ
equals - в точности совпадает с ТЕКСТ

tag:name:contains:обраб - соберет темы, у которых есть тег с именем Обработано или Обработка или В обработке. Группа тегов (в данном случае) не важна.

Возможны конструкции:

tag:groupname:equals:ТЕКСТ1:name:contains:ТЕКСТ2
tag:name:startswith:ТЕКСТ1:groupname:equals:ТЕКСТ2

в этом случае важно И название группы тегов
И имя тега.
tags:ГруппаТегов Устаревший! Исправить в своих картах!
Использовать tag:ГруппаТегов

tags:all

tags:any

tags:yes

tags:no

all - собирает темы, на которых есть все теги, присутствующие на теме сбора и/или указанные операторам tag.

any - собирает темы, на которых есть любой из тегов, присутствующий на теме сбора и/или указанный операторам tag. Этот оператор используется по умолчанию.

yes - собирает темы, на которых есть теги.

no - собирает темы, на которых нет тегов.

ignoretag:ГруппаТегов:
Тег

ignoretag:ГруппаТегов

ignoretag:?:Тег

Темы, на которых есть указанный тег из указанной группы тегов, будут проигнорированы при сборе.

Возможна конструкция из нескольких операторов:

ignoretag:Этапы:выполнено
ignoretag:Этапы:на контроле
...
в данном случае при сборе будут проигнорированы темы с тегами "выполнено" и "на контроле" из группы тегов "Этапы".

Синтаксис оператора такой же, как у оператора tag (см. выше).

Примечание: оператор ignoretag сам по себе ничего не собирает! Он просто игнорирует при сборе темы с указанными в операторе тегами.

ignoretags:all

ignoretags:any

all - темы, на которых присутствует все теги, указанные в операторах ignoretag, исключаются из сбора

any - темы, на которых присутствует любой из тегов, указанный в операторах ignoretag, исключаются из сбора

icons:all

icons:any

all - собирает темы, на которых присутствуют все значки, имеющиеся на теме сбора

any - собирает темы, на которых присутствуют любой из значков, имеющихся на теме сбора. Этот оператор применяется по умолчанию

ignoreIcons:all

ignoreIcons:any

all - темы, на которых присутствует все значки, имеющиеся в теме сбора, исключаются из сбора.

any - темы, на которых присутствует любой из значков, имеющихся в теме сбора, исключаются из сбора.

Важно! Если используются операторы ignoreIcons, значки на теме сбора не для того, чтобы собирать темы, на которых есть эти значки, а для того, чтобы игнорировать темы, на которых есть эти значки!

property:ИмяСвойства:
Значение:ТипСвойства

property:ИмяСвойства:
Значение

property:ИмяСвойства

 

 

property:name:условие:
ТЕКСТ

property:value:условие:
ТЕКСТ

собирает темы, на которых пристутствуют указанные Свойства.

Тип Свойства может быть: text (Текст, Многострочный текст, Список), currrency или cur (Валюта), number (Число), integer (Целое число).

Если тип Свойства числовой, это может быть также диапазон чисел, например:property:Расходы:0-20000:cur, будут собираться темы, в которых значение будет от 0 руб. до 20000 руб.

property:Город:Сочи:text - ищет темы, которые имеют Свойство с названием "Город", значение Свойства - "Сочи", и имеют тип Свойства "Текст", или "Многострочный текст", или "Список".

Варианты:

property:Город:Сочи - ищет темы, которые имеют Свойство с названием "Город", значение Свойства - "Сочи", тип свойства неважен.

property:Город - ищет темы, которые имеют Свойство с названием "Город", значение и тип не важны.

property:?:Сочи - ищет темы, которые имеют значение Свойства - "Сочи", название Свойство - любое, и тип Свойства неважен.

property:?:number - ищет темы, которые имеют тип Свойства - Число. Имя Свойства и значение неважны.

и т.д. - вопросительный знак говорит о том, что это поле может быть любым.

Возможна конструкция из нескольких операторов:

property:Расходы:0-10000
property:Город:Сочи


Операторы с условием собирают темы, у которых имя Свойства (property:name) или значение Свойства (property:value) подпадает под условие:

contains - содержит ТЕКСТ
startswith - начинается с ТЕКСТ
endswith - заканчивается на ТЕКСТ
equals - в точности совпадает с ТЕКСТ

Эти операторы работают только с текстовыми Свойствами .

property:name:contains:расход - соберет темы, у которых есть Свойство с именем Расходы или Расход или Расходовано.

Возможны конструкции:

property:name:equals:ТЕКСТ:value:contains:ТЕКСТ
property:value:startswith:ТЕКСТ:name:equals:ТЕКСТ

в этом случае важно И имя Свойства И значение Свойства.
property:ИмяСвойства:
Тип:Значение
Устаревший! Исправить в своих картах!
Использовать формат, описанный выше.

properties:all

properties:any

properties:yes

properties:no

all - собирает темы, на которых есть все Свойства, имеющиеся на теме сбора и/или указанные операторам property

any - собирает темы, на которых есть любое из Свойств, имеющихся на теме сбора и/или указанное операторам property. Этот оператор применяется по умолчанию

yes - собирает темы, на которых есть Свойства

no - собирает темы, на которых нет Свойств

ignoreproperty:
ИмяСвойства:
Значение:ТипСвойства

Темы, на которых есть указанное Свойство с указанным значением и указанным типом Свойства, будут проигнорированы при сборе.

Возможна конструкция из нескольких операторов:

ignoreproperty:Расходы:0-10000
ignoreproperty:Город:Сочи
...
в данном случае при сборе будут проигнорированы темы со Свойством "Расходы" и значением от 0 до 10000, а также со Свойством "Город" и значением "Сочи".

Синтаксис оператора такой же, как у оператора property (см. выше).

Примечание: оператор сам по себе ничего не собирает. Он просто игнорирует при сборе темы с указанным в операторе Свойством.

ignoreproperties:all

ignoreproperties:any

all - темы, на которых присутствуют все Свойства, указанные в операторах ignoreproperty, исключаются из сбора.

any - темы, на которых присутствует любое из Свойств, указанное в операторах ignoreproperty, исключаются из сбора.

Управление копированием
branch копируется целиком ветка найденной темы (вместе с самой темой)
subtopicsonly копируется все подтемы найденной темы без самой темы .
hassubtopics если у найденной темы нет подтем, она копироваться не будет (исключается из сбора)
centraltopictext перед копируемой темой добавляется тема с текстом Центральной темы карты ( = названием карты или проекта). На эту тему ставится ссылка на Центральную тему карты-оригинала
maintopictext перед копируемой темой добавляется тема с текстом Основной темы ветки, к которой принадлежит копируемая тема (например, название подпроекта). На эту тему ставится ссылка на упомянутую выше Основную тему карты-оригинала
parenttopictext перед копируемой темой добавляется тема с текстом Родительской темы копируемой темы (например, название подпроекта). На эту тему ставится ссылка на упомянутую выше родительскую тему карты-оригинала
filterdoubles_map после того, как сбор данных завершен, из ветки темы, в которой стоит этот оператор, убираются все подтемы, дубли которых присутствуют во всей карте
fd_map синоним оператора filterdoubles_map
filterdoubles_branch после того, как сбор данных завершен, из ветки темы, в которой стоит этот оператор, убираются все подтемы, дубли которых присутствуют выше в ветке этой темы (но не во всей карте)
fd_branch синоним для filterdoubles_branch


Комбинируя операторы макроязыка, можно создавать новые критерии сбора.

Создайте тему с подходящим ключевым словом/фразой и поместите нужные операторы в ее примечания, например:

Возможное ключевое слово/фраза Операторы Что будет собираться
Мои задачи на сегодня today
resource:me
мои задачи (resource:me), попадающие под выполнение сегодня (today).
Контроль за графиком программистов overdue
recource:Иванов
recource:Петров
recource:Сидоров
просроченные (overdue) задачи, за которые отвечают Иванов, Петров и Сидоров.
Быстрые задачи day:0
resource:me
effort:min:5-30
у меня есть около получаса, хочу увидеть мои задачи (resource:me) на сегодня (day:0), выполнение которых занимает** от 5 до 30 минут (effort:min:5-30).

** "Трудозатраты" в панели "Информация о задании"