MBS FileMaker Plugin Update 2022

Welcome to my presentation about the MBS FileMaker plug-in

My name is Christian Schmitz from Monkeybread Software

The MBS FileMaker Plugin

Let me give you an update

A lot changed this year.

If you like to learn more, we have a few videos on the website with older presentations.

The MBS FileMaker Plugin has been in development since 2006.

That is already 16 years

If that would be a child, it would now be allowed to drink beer in Germany or to drive a car in the USA.

We currently have over 6800 function so there should be something for everyone.

About 200 functions are new this year and we are adding more for our customers.

We have over 600 example databases. If you have a week of vacation, you can try them all. But mostly you will look into an example and copy a script to get a job done quickly.

One File

MBS FileMaker Plugin is delivered as one plugin file. And only the parts used are loaded and active, so we have a low memory footprint.

Our plugin is easy to install or update because you only copy one file to the extensions folder. You can automate installation with the install plug-in file script step and we have an example database called install plug-in update if needed where you can copy the script.

We support a lot of FileMaker versions from ancient version 7 to the current 19.5 and the upcoming 19.6 version. Claris Pro and Server are supported since version 12.5

Platforms

On the FileMaker Platform we support

Claris Pro and FileMaker Pro

Claris Server and FileMaker Server You can use our plugin with Perform Script on Server, with scheduled scripts and with Web Direct On macOS Windows and Linux For Linux we are proud to have one plugin to run on CentOS 7, Ubuntu 18 and newer version 20.

Data API is supported since FileMaker 19.3.

FileMaker iOS SDK can be used to build your own iOS app and embed our iOS version of the plugin.

Claris Go and FileMaker Go can use the plugin via Perform Script on Server if you installed the plugin on the server side. We do have a nice example for barcodes, which either creates the barcode locally with the plugin or delegates this task via PSoS to the server.

The Claris Cloud 2 is not supported since we can't install our plugin on Claris Server. You can still use the plugin on the client side or host your server with some other cloud hosting service and install our plugin on the server.

Our plugin can be used off-line as the license check doesn't need an Internet connection.

MBS function

Our plugin has one central function, which is also available as script step. Imaging how the calculation dialog would look if we would add 6000 functions there.

First parameter to our function is the actual function name. And this can come from a calculation or a field.

Please check for errors as every function may fail. We keep error state and you can query this with IsError function. And you can look for MBS prefix in results.

We use reference numbers for parameters. For example if you parse a JSON, you get back a number. This number is then passed to the format function to reference that JSON object. And finally you release it.

DynaPDF

With DynaPDF library, we can work with PDF files. This includes editing pages like adding page numbers or pictures, merge and split, extracting text and images, encrypt and decrypt, optimize for smaller sizes or render pictures.

We added some new tricks for rendering on Windows. This includes alternative font lists to substitute missing characters.

We added support for PDF/A 2u and 3u

And PDF/X 5 and 6 since the PDF standard evolves.

We got support for ZUGFeRD 2.2 for Germany and facture X in France

You can set the rendering intent for an image, so it shows up in printing as you need it.

We enhanced our styled text conversion from FileMaker to DynaPDF with handling of double underline. Optimize function got a new trick to convert text to outlines, so readers can no longer copy texts easily.

SQL

We have both SQL functions for within FileMaker and SQL to other databases.

If a client of yours has one of those database servers, you can connect to them via script and move records from one side to the other. This includes MySQL, Microsoft SQL Server and Postgres SQL This is an alternative to ESS and all with native drivers in favor over using ODBC.

We improved encryption for MySQL and MariaDB so you can use SSL there.

And we improved handling for decimal numbers, so no more rounding errors as we move decimal numbers as they are.

You may use our SQL functions to regularly move records from or to a SQL server. For example you could query new orders from a MySQL database running your web shop.

Vision Framework

You may have heart of GetLiveText in recent FileMaker version. We had that function for years and now added support for PDF documents to it. So whether you have a picture or PDF document, we can give you text back for macOS and iOS.

WordFile

We have Word file functions to read modify and write microsoft word documents. For example you can output Word files, where you load a template, replace tags with values and save to a new word document. We added contains function to look whether some text is in the document and substitute function to replace it.

You can list tags to replace.

And save to a container instead of a file.

OCR

We have been using tesseract 3 for years in our plugin to recognize text. This used to be a commercial OCR software, which later got open sourced.

Use the load function to load tesseract 4 and 5 libraries.

And this works fine in server scripts doing multiple OCR operations on different CPU cores with Perform Script on Server.

Barcodes

We support generating over 80 types of bar-codes for either getting an image and drawing them on PDF documents.

We can recognize barcodes in three ways. The older Barcode.Detect with zxing The newer Barcode.Scan with zbar library.

And we have for macOS and iOS the Vision framework to detect barcodes with Apple's libraries with the Vision.DetectBarcode function.

CURL

As you may know we use CURL library a lot for HTTP and FTP up and downloads.

We can send and receive emails and we have a nice IMAP email example to download and show emails with attachments. You can send emails via our plugin including html with inline graphics and multiple attachments.

We added CURL options function to give you a JSON with all the options you set. This is great for debugging.

For SFTP with SSH we now handle SHA with 256 bit hash.

WebHooks

Within our plugin we can run little web server and receive web requests. For example to get notified about an incoming call for your phone system.

We improved that functionality and got a new state function to check how far processed a request is.

Then we got function to query size of requests.

And you can limit requests in size to avoid running into memory limitations.

Custom Functions in JavaScript

We have custom functions defined in the plugin both as FileMaker calculations and JavaScript code. For JavaScript you can use either Cross-platform the JavaScript JS with Duktape. Or for macOS and iOS you can use WebKit's JavaScript engine.

Use JavaScript for enhancing performance with Regular Expression JSON processing Array functions

See FM.CF for custom FileMaker functions and both JS.CF and JavaScript.CF for custom JavaScript functions.

Dialogs

We have plenty of functions for showing custom dialogs.

And we got an option to change text alignment, if you don't like text to be centered on macOS.

Windows Photo Import

For years we had functions for macOS with ImageCapture to import pictures from your digital camera. We recently got similar functionality for Windows with these system dialogs.

Debugging

If you like to debug your scripts, you can always let the trace function write a log file. We include the parameter names in the log, so you can see exactly what value is passed for which parameter.

If needed, you can pause or resume the trace logging.

With IsError you can check whether the last function returned an error. This value is stored per script, so it works on server with multiple parallel scripts.

To better catch errors in big scripts, you can use ClearError function on the start of the script. Then do a lot of MBS calls, for example to make a PDF with hundreds of DynaPDF function calls. Then on the end use HadErrors functions to see if one of the calls failed. Then query ErrorLog function to get a JSON with details about any error that happened.

Since we have the metadata in the plugin, you can also query parameters for functions with a function. And the platforms per function.

MongoDB

Since Claris announced to use MongoDB for Claris Studio, quite a few people got interested in this database technology. You may have clients with MongoDB, so you can use our functions to connect directly natively to a Mongo database.

Select a database on the server and pick a collection, which is MongoDB way of a table.

You can add update or delete records and we got functions to insert multiple records in one call.

Find documents to retrieve data.

Run custom commands like ping.

You can use our MongoDB functions on all platforms including Linux and iOS applications.

And we recently added functions for transactions, so you can do several operations and then decide whether to commit them all or discard the changes.

FileMaker iOS SDK

You can use the MBS FileMaker Plugin on iOS when you build an iOS app with embedded plugin.

We added support for use of iOS simulator on Apple Silicon.

We update the DynaPDF framework for iOS regularly, so you can use our DynaPDF functions in your iOS app.

Our SharingPanel functions allow you to share multiple items. This may include to pass several files directly to Airdrop or to pass a text, a subject line and a file to the email application.

The PhotoPicker functions show a dialog to pick photos without asking the user for permissions. The user selects the images to share with the application and then your application receives those files. The new dialog handles pictures in the cloud and downloads them as needed.

Change dialogs on iOS

We had that for macOS, but recently got it for iOS, too. You can change the text of various dialogs from FileMaker in your script. And you may improve the user

Progress Dialog

We had functions to show a progress dialog on macOS und Windows. Recently we added iOS support, so you can have those nice round progress indicator for your iOS applications. Optionally you can have a rectangle one.

More little features

Our Audit functions can now store time and date values as numbers to avoid trouble with users having different locale settings. This way we avoid seeing changes logged because one FileMaker shows a date in US format and another client in German format and logs a change each time.

For second factor logins via script we got a TOTP.Calculate function to calculate time based one time passwords in the plugin. Your script can now use the login credentials and when the code is requested, instead of manually using an iPhone app to lookup the code, you can use our plugin function to get the value.

For plugin managed global variables, we now have a lookup function, so you can define what to return when the variable is not defined. This can streamline your scripts a bit when using our global variables, which work well across different database files.

With our Matrix functions we have a great way to store a two dimensional array in memory with values. You can load records into a Matrix or a CSV text. Then work with the matrix and later output it as CSV or insert to database as records. Recently we added a new rotate function to change the orientation of the matrix. The Matrix.ConvertDataType function allows you to change the data types if needed.

FileMaker Enhancements

As you may know we extend the FileMaker user interface with a lot of nice things for developers.

Recently we got shortcuts for calculation dialog to shift text to left and right, so you can nicely format your Let statements.

With the Colorize Script function, you can apply our coloring rules to a script text if needed.

Code Folding

We added code folding to the plugin this year and that may be helpful to debug or read scripts. Please note that we only modify the view on the script. When you save the script or reload it, the lines are all showing again.

Links in comments

The MBS FileMaker Plugin recognized links within the script workspace and shows a little widget on the right to open the link. This allows you to directly link to wiki pages, documentation or trigger fmp:// URLs to do something right from the script workspace.

Sorting Layouts and Script

Use the contextual menu to sort your scripts and layouts by ID.

Get functions

For Get() functions in FileMaker, we can link directly to the documentation to review the details. That works in several languages.

We have buttons in the calculation dialog to add and remove table prefixes in your calculations. And you can use our buttons to check calculation or to evaluate it.

Variable Name Auto Completion

We added a functionality to auto complete variable names. The plugin scans the script to find all variables names above the current line and it remembers global variables over several scripts. You can feed variables for this system with comment lines to declare variables not defined in the script directly.

MBS Auto Complete

While we added auto completion for variables, we continued directly with MBS function names. This includes showing the parameters required for the function.

Value List IDs

We show the ID values for various tables in FileMaker including layouts, tables, fields and value lists.

Search Relationship graph

We had this for years on macOS, but now got it finally for Windows. You can type some characters in our search field, press return and find a table occurrence.

Resources

We got a website with a ton of information about our plugin.

You find the documentation on the mbsplugins.eu website.

We have a blog with news, tips & tricks and event promotions.

We have a video page with all the videos we collected over time.

And you can sign up for a news letter or trial license on the website.

Thank you for watching.


Watch other FileMaker videos:

ThumbnailMBS FileMaker Plugin Update 2022 Deutsch

(German/Deutsch)

24:20 minutes
ThumbnailMBS FileMaker Plugin Update 2022

(English)

20:25 minutes
ThumbnailMongoDB and MBS - A look under the hood

(English)

20:10 minutes
ThumbnailMongoDB und MBS - Ein Blick unter die Haube

(German/Deutsch)

20:31 minutes
ThumbnailFMK 2022: JSON mein Freund Vortrag Hamburg

(German/Deutsch)

60:20 minutes
ThumbnailFMK 2022: FileMaker iOS SDK Deutsch

(German/Deutsch)

66:59 minutes