Как перейти к правильному макету файловой системы с учетом идентификатора макета? - PullRequest
0 голосов
/ 10 декабря 2018

Файл моментального снимка FileMaker имеет идентификатор макета.Однако использование номера перехода к макету не работает, как я ожидал.

Set Variable [$json; Value:Get(ScriptParameter)]
Set Variable [$layout_id; Value:JSONGetElement ( $json ; "UIState.Layout.@id" )]
Go to Layout [$layout_id] // layout number by calculation 
// ends up on a completely different layout than the one the snapshot file opens.

Я обнаружил, что идентификатор макета и номер макета - это два разных числа ... вот почему переходНе удалось выполнить шаг сценария с номером макета.

Строка JSON, используемая в качестве параметра для вышеуказанного сценария:.

{
    "UIState": {
        "UniversalPathList": "fmnet:/10.1.1.63/Balanced.fmp12\nfmnet:/10.1.1.220/Balanced.fmp12\nfmnet:/169.254.254.47/Balanced.fmp12\nfilemac:/Macintosh HD/source/fmp16/Balanced.fmp12",
        "Rows": {
            "@rowCount": "1",
            "@baseTableId": "131",
            "#text": "21383239"
        },
        "Layout": {
            "@id": "2"
        },
        "View": [

        ],
        "SelectedRow": {
            "@id": "21383239"
        },
        "StatusToolbar": {
            "@visible": "True"
        },
        "Mode": {
            "@value": "browseMode"
        },
        "SortList": {
            "@Maintain": "True",
            "@value": "False"
        }
    }
}

, которую можно запустить из командной строки.Пример

open 'fmp://filemaker.server/Balanced.fmp12?script=snapshot_link&param={ "UIState": { "UniversalPathList": "fmnet:/10.1.1.63/Balanced.fmp12\nfmnet:/10.1.1.220/Balanced.fmp12\nfmnet:/169.254.254.47/Balanced.fmp12\nfilemac:/Macintosh HD/source/fmp16/Balanced.fmp12", "Rows": { "@rowCount": "1", "@baseTableId": "131", "#text": "21383239" }, "Layout": { "@id": "2" }, "View": [], "SelectedRow": { "@id": "21383239" }, "StatusToolbar": { "@visible": "True" }, "Mode": { "@value": "browseMode" }, "SortList": { "@Maintain": "True", "@value": "False" } } }'

Какой хороший способ найти правильный макет для отображения в FileMaker при наличии действительного идентификатора макета?

1 Ответ

0 голосов
/ 10 декабря 2018

Я полагаю, что вы можете вычислить номер макета, найдя номер индекса данного идентификатора макета в списке, возвращаемом функцией LayoutIDs , скажем =

Let ( 
listOfIDs = LayoutIDs ( "" ) 
;
ValueCount ( Left ( listOfIDs ; Position ( ¶ & listOfIDs & ¶ ; ¶ & $layout_ID & ¶ ; 1 ; 1 ) ) )
)
...