Лучшая практика FileMaker в отношении каталогов пользовательских данных и т.д.?

#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, является решением.