Business Central has a data type for more than one image per record: MediaSet. The item's Picture field is one. In practice, an item in BC still has exactly one picture. In BusinessCraft, an item can now have as many images as you like, with a carousel in the FactBox and a fullscreen slideshow. MediaSet works the way it was meant to. :)
The last BusinessCraft post ended with permissions as the next big construction site. They work now: system, tenant, and AL permission sets, plus inherent permissions directly on objects. On the way, BusinessCraft also got its first virtual tables: Date, Integer, Session, AllObj, and AllObjWithCaption.
The last BusinessCraft post ended with two open questions: what happens when a posting fails halfway, and when do events arrive?
In the last BusinessCraft post, craft-server ran two small AL apps: a customer list, a cue, and a few actions.
In the first BusinessCraft post, I said the next step would be the hard part: the service tier.
After seeing SolidCraft and PhotoCraft, I kept asking myself the same question:
Business Central 140 has two ways to work with symbols.
Back in 2016, I wrote a blog post about how to check if your code was being called from a specific function using a try function and an empty error to access the callstack via GETLASTERRORCALLSTACK. For example, checking if you were inside a SaveReportAsPDF function.
While investigating the Business Central 26 CallStack performance improvements, I stumbled upon an interesting question: Does the TryFunction attribute add significant overhead when there are simpler alternatives?
I created a simple Dockerfile and a Powershell script to create an custom docker image based on an offical Microsoft image.
If you use a BC Container to develop a WebService connetction, it is hard to analyse the traffic with only the Debugger.
In many Business Central implementations, there’s a recurring need: extract a distinct set of document identifiers from a filtered set of detail records. Whether you’re working with sales lines, purchase lines, ledger entries, or custom transactional data — the goal is the same: identify which documents are involved based on line-level criteria.
When working with AL (Dynamics 365 Business Central), we often need to dynamically construct complex filter strings. A common example is filtering users based on their User Security ID. For this purpose, AL provides the TextBuilder, a wrapper around the .NET StringBuilder, optimized for efficient string manipulation.