Unfortunately, I could not replicate it with test procedures, but it has something to do with qupdating calls. If I make web procedure updating and all calls are non qupdating, then DecimalSepator is nonblank.
If nonupdating WebStoreTabInvoice() calls qupdating.ImportSalesInvoicesFromArea(), then ImportSalesInvoicesFromArea does not know about the decimal separator:
2023-03-08 11:59:19 AD executing WebStoreTabInvoice CurrentCompany=1 DecimalSeparator=,
2023-03-08 11:59:19 AD ImportSalesInvoicesFromArea DecimalSeparator=