#filemaker
#filemaker
Вопрос:
Я работаю над решением FileMaker 18. Одна из вещей, которые я должен решить, — это выполнить внешний скрипт Python и прочитать его результаты обратно. Этот скрипт может выполняться в течение нескольких секунд. Поскольку мое решение должно работать кроссплатформенно (я разрабатываю на macOS, но большинство пользователей будут на Windows), я остановился на плагине Basic Elements для выполнения скрипта.
Поскольку это пользовательский скрипт, который мы доставим вместе с решением, FileMaker необходимо знать, в каком каталоге он находится (а также импортировать полученный XML). К моему удивлению, BE_ExecuteSystemCommand по умолчанию использует корневой каталог, а не каталог, в котором установлено решение.
Какова наилучшая практика для получения и хранения данных или другого каталога, который может быть специфичным для пользователя и / или системы?
Моя текущая мысль заключалась в том, чтобы создать простую таблицу пар ключ / значение «глобалы» для хранения путей и тому подобного, и написать скрипт, который при запуске проверяет, установлено ли значение с ключом «datapath», если да, сохраните его в глобальной переменной, на которую могут ссылаться другие сценарии. Если нет, предложите пользователю в диалоговом окне открытия файла выбрать этот каталог. Ему нужно будет сделать это только один раз, при первом запуске решения.
Прежде чем делать все это самостоятельно, я спрашиваю здесь, есть ли лучшая практика о том, как это сделать, в частности, или я думаю неправильно и должен делать это каким-то другим способом?
Вероятно, мне понадобится каталог данных и для нескольких других целей (импорт данных и т.д.).).
Ответ №1:
Filemaker имеет встроенные функции, которые возвращают некоторые общие пути:
-
Get(FileMakerPath) — путь к приложению FileMaker, в котором запущен текущий файл;
-
Get(FilePath) — путь к текущему файлу;
-
Get(DocumentsPath) — путь к папке документов текущего пользователя;
-
Get(DesktopPath) — путь к папке рабочего стола текущего пользователя;
-
Get(PreferencesPath) — путь к папке настроек текущего пользователя.
-
Get(temporaryPath) — путь к временной папке текущего пользователя;
Обратите внимание, что пути, возвращаемые этими функциями, являются путями Filemaker, а не путями ОС.
Комментарии:
1. Это, вместе с новыми функциями преобразования в FM 19, является решением.