Force Boolean value to be "true" or "false", instead of "Yes" or "No"

MarHan
MarHan Member Posts: 34
edited 2023-07-13 in NAV Three Tier
Hi community,

I need to write a boolean value to an xml file and am always getting a "Ja" (German for Yes), instead of a "true". I've tried all of the options shown here under "Standard Boolean Format" (Link) but without success. And I don't wanna do stuff like "if value = 1 then 'true' else 'false'" or so.

Does anyone have a clue for me?

Thanks in advance,

Markus

Best Answer

  • vaprog
    vaprog Member Posts: 1,161
    Answer ✓
    What are you doing? Do you compose an XML document as Text? Don't! Use an XmlPort or XML DOM Management Codeunit or whatever else is available in your environment to properly generate XML documents.

    What type of object is "cims:value". If it is not of datatype Boolean, obviously FORMAT(...,9) will not have the desired effect here.

Answers

  • AlexDen
    AlexDen Member Posts: 86
    Hi,

    You have to use FORMAT(Value,0,9) to get XML-formatted value.
    This applies not only to Boolean, but also to the Int, Decimal, and Date data types.
  • MarHan
    MarHan Member Posts: 34
    Hi,

    unfortunately I am doing exactly this:

    h1l2ggacduzc.png

    what results in this

    69n63q8dl2ke.png

    :-(

    Regards

    Markus
  • ThomasHagenmeyer
    ThomasHagenmeyer Member Posts: 15
    Hello,

    I'd try it with (temporarily) changing the language setting (https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/methods-auto/system/system-globallanguage-method). Change the language to english before formatting the value, then back to the original language. Pseudo code:

    OriginalLanguageId := System.GlobalLanguage();
    System.GlobalLanguage(1033); // change to english
    FormattedBooleanValue := FORMAT(BooleanVariable, 0, 9);
    System.GlobalLanguage(OriginalLanguageId); // change back

    Best Regards,
    Thomas
  • MarHan
    MarHan Member Posts: 34
    Hi Thomas,

    sounded really good but does not work either:

    kfcv5b72a8ah.png

    Debugger:

    iht89ngmiu65.png

    Best regards

    Markus
  • ThomasHagenmeyer
    ThomasHagenmeyer Member Posts: 15
    Hi Markus,

    I'm not working in AL yet, but C/AL ... I made a short test:

    zqhcoyyn3huj.png

    So, the language change doesn't help (yielding 'Yes'), but XML format by specifying 9 works...
    This is just wild guessing: I think you are using a table field as the parameter for the Format function. Maybe in AL it works different for a field object compared to a plain boolean variable?

    Best Regards,

    Thomas
  • vaprog
    vaprog Member Posts: 1,161
    Answer ✓
    What are you doing? Do you compose an XML document as Text? Don't! Use an XmlPort or XML DOM Management Codeunit or whatever else is available in your environment to properly generate XML documents.

    What type of object is "cims:value". If it is not of datatype Boolean, obviously FORMAT(...,9) will not have the desired effect here.
  • MarHan
    MarHan Member Posts: 34
    Hi vaprog,

    I'm doing this "manually" as it is a nightmare using XML DOM Mgt Codeunit when you need to deal with different xml namespaces and so on. The xmls have a rather simple structure so much easier and less frustrating.

    And you we're absolutely right: Due to a copy and paste mistake my variable "cmis:value" still was a text not a boolean. Having changed it to boolean it works now. Even without the language change that Thomas suggested.

    Thanks guys!