Codeunit 10 "Type Helper"
Base Application · System.Reflection
Across versions
- BC23present
- BC242 procedures added, 1 procedures removed
- BC255 procedures added
- BC265 procedures added, 2 procedures changed
- BC27-28unchanged
- BC292 procedures removed
- BC30unchanged
Neighbourhood 130 connected objects and pages
Base Application · System.Reflection · BC23-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| Permissions | tabledata “Field” = r |
Events published
OnBeforeGetFieldLength(var Field: Record "Field"; var FieldLength: Integer; var IsHandled: Boolean)(integration)OnBeforeGetField(TableNo: Integer; FieldNo: Integer; var Field: Record "Field"; var Result: Boolean; var IsHandled: Boolean)(integration)
Procedures
Evaluate(var Variable: Variant; String: Text; Format: Text; CultureName: Text): BooleanGetLocalizedMonthToInt(Month: Text): IntegerCompareDateTime(DateTimeA: DateTime; DateTimeB: DateTime): IntegerFormatDate(DateToFormat: Date; LanguageId: Integer): TextFormatDate(DateToFormat: Date; Format: Text; CultureName: Text): TextFormatDateWithCurrentCulture(DateToFormat: Date): TextGetHMSFromTime(var Hour: Integer; var Minute: Integer; var Second: Integer; TimeSource: Time)IsLeapYear(Date: Date): BooleanGetOptionNo(Value: Text; OptionString: Text): IntegerGetOptionNoFromTableField(Value: Text; TableNo: Integer; FieldNo: Integer): IntegerGetNumberOfOptions(OptionString: Text): IntegerOptionsAreEqual(Value: Text; CurrentOption: Text): BooleanIsNumeric(Text: Text): BooleanGetField(TableNo: Integer; FieldNo: Integer; var Field: Record "Field"): BooleanGetFieldLength(TableNo: Integer; FieldNo: Integer): IntegerTestFieldIsNotObsolete(Field: Record "Field")IsPhoneNumber(Input: Text): BooleanGetUserTimezoneOffset(var Duration: Duration): BooleanGetUserClientTypeOffset(var Duration: Duration)GetTimezoneOffset(var Duration: Duration; TimeZoneID: Text)EvaluateUnixTimestamp(Timestamp: BigInteger): DateTimeEvaluateUTCDateTime(DateTimeText: Text): DateTimeFormatDateTime(FormattingDateTime: DateTime; Format: Text; CultureName: Text): TextFormatUtcDateTime(DateTime: DateTime; DataFormat: Text; DataFormattingCulture: Text): TextGetCurrUTCDateTime(): DateTimeGetCurrUTCDateTimeAsText(): TextGetCurrUTCDateTimeISO8601(): TextAddHoursToDateTime(SourceDateTime: DateTime; NoOfHours: Integer): DateTimeFormatDecimal(Decimal: Decimal; DataFormat: Text; DataFormattingCulture: Text): TextUrlEncode(var Value: Text): Text+ BC26UrlEncode(var Value: SecretText): SecretText+ BC26UrlEncodeSecret(var Value: Text): Text+ BC26 (obsolete 27.0: Use UrlEncode with secret text.)UrlDecode(var Value: Text): TextHtmlEncode(var Value: Text): TextHtmlDecode(var Value: Text): TextJavaScriptStringEncode(Value: Text): Text+ BC26 + BC26JavaScriptStringEncode(Value: Text; AddDoubleQuotes: Boolean): Text+ BC26 + BC26UriEscapeDataString(Value: Text): TextUriGetAuthority(Value: Text): TextGetKeyAsString(RecordVariant: Variant; KeyIndex: Integer): TextReadAsTextWithSeparator(InStream: InStream; LineSeparator: Text): TextTryReadAsTextWithSeparator(InStream: InStream; LineSeparator: Text; var Content: Text)TryReadAsTextWithSepAndFieldErrMsg(InStream: InStream; LineSeparator: Text; FieldCaption: Text): TextCRLFSeparator(): Text[2]LFSeparator(): Text[1]SortRecordRef(var RecRef: RecordRef; CommaSeparatedFieldsToSort: Text; Ascending: Boolean)TextDistance(Text1: Text; Text2: Text): IntegerNewLine(): TextGetMaxNumberOfParametersInSQLQuery(): IntegerBitwiseAnd(A: Integer; B: Integer): IntegerBitwiseOr(A: Integer; B: Integer): IntegerBitwiseXor(A: Integer; B: Integer): IntegerGetFormattedCurrentDateTimeInUserTimeZone(StringFormat: Text): TextGetCurrentDateTimeInUserTimeZone(): DateTimeGetInputDateTimeInUserTimeZone(InputDateTime: DateTime): DateTime+ BC24ConvertDateTimeFromUTCToTimeZone(InputDateTime: DateTime; TimeZoneTxt: Text): DateTime: NOTE: The procedure’s name is incorrect. This procedure converts the time from current client timezone to target timezone, instead of converting from utc to target time zone.ConvertDateTimeFromInputTimeZoneToClientTimezone(InputDateTime: DateTime; TimeZoneTxt: Text): DateTime+ BC24: Convert the datetime from the specified timezone to current client’s timezone.IntToHex(IntValue: Integer): TextMaximum(Value1: Decimal; Value2: Decimal): DecimalMinimum(Value1: Decimal; Value2: Decimal): DecimalTransferFieldsWithValidate(var TempFieldBuffer: Record "Field Buffer" temporary; RecordVariant: Variant; var TargetTableRecRef: RecordRef)CalculateLog(Number: Decimal): DecimalGetAmountFormatLCYWithUserLocale(): Text+ BC25GetAmountFormatLCYWithUserLocale(DecimalPlaces: Integer): Text+ BC25GetAmountFormatWithUserLocale(CurrencySymbol: Text[10]): Text+ BC25GetAmountFormatWithUserLocale(CurrencySymbol: Text[10]; DecimalPlaces: Integer): Text+ BC25GetAmountFormat(LocaleId: Integer; CurrencySymbol: Text[10]): Text+ BC25GetAmountFormat(LocaleId: Integer; CurrencySymbol: Text[10]; DecimalPlaces: Integer): Text+ BC25GetAmountFormatDecimalPlaces(LocaleId: Integer; CurrencySymbol: Text[10]; DecimalPlaces: Integer): Text+ BC25GetDefaultAmountFormat(): Text+ BC25 (internal)GetDefaultAmountFormat(DecimalPlaces: Integer): Text+ BC25 (internal)GetXMLAmountFormatWithTwoDecimalPlaces(): TextGetXMLDateFormat(): TextCopyRecVariantToRecRef(RecordVariant: Variant; var RecRef: RecordRef)IsLatinLetter(ch: Char): Boolean+ BC26IsDigit(ch: Char): BooleanIsUpper(ch: Char): Boolean
Plus 6 local procedures.
Triggers
OnRun
Calls
From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an Object::"Name" argument. Interface dispatch and calls through events are not counted, so the list is not complete.
- Codeunit 3003 “DotNet_DateTime” (16 calls:
FormatDate → (object),FormatDate → ToString,TryEvaluateDate → Day, …) - Codeunit 3002 “DotNet_CultureInfo” (5 calls:
FormatDate → DateTimeFormat,FormatDate → GetCultureInfoById,TryEvaluateDate → GetCultureInfoByName, …) - Codeunit 3004 “DotNet_DateTimeStyles” (2 calls:
TryEvaluateDate → (object),TryEvaluateDateTime → (object)) - Codeunit 3006 “DotNet_DateTimeOffset” (2 calls:
GetTimezoneOffset → GetOffset,TryEvaluateDate → DateTime) - Codeunit 701 “Data Type Management” (2 calls:
GetKeyAsString → GetRecordRef,TransferFieldsWithValidate → GetRecordRef) - Codeunit 3005 “DotNet_XMLConvert” (1 call:
TryEvaluateDate → ToDateTimeOffset) - Codeunit 3960 “Regex” (1 call:
IsPhoneNumber → IsMatch) - Codeunit 4030 “Client Type Management” (1 call:
GetUserClientTypeOffset → GetCurrentClientType) - Codeunit 43 “Language” (1 call:
FormatDateWithCurrentCulture → GetUserLanguageTag)
Called by
- Codeunit 20132 “Script Data Type Mgmt.” (13 calls:
CheckConstantDatatype → IsNumeric,ConvertText2Type → GetOptionNo,EvaluateDate → Evaluate, …) - Codeunit 1890 “Reminder Communication” (7 calls:
OnReplaceHTMLText → LFSeparator,OnReplaceHTMLText → TryReadAsTextWithSeparator,SelectEmailBodyText → LFSeparator, …) - Table 444 “IC API Log” (6 calls:
GetRequestBodyAsText → LFSeparator,GetRequestBodyAsText → ReadAsTextWithSeparator,GetRequestURIAsText → LFSeparator, …) - Codeunit 5458 “Graph Collection Mgt - Contact” (4 calls:
ConcatenateStreet → CRLFSeparator,GetContactComments → CRLFSeparator,InsertNextContactCommentLine → CRLFSeparator, …) - Codeunit 5477 “Sales Invoice Aggregator” (4 calls:
PropagateOnInsert → TransferFieldsWithValidate,PropagateOnModifyToSalesHeader → TransferFieldsWithValidate,PropagateOnModifyToSalesInvoiceHeader → TransferFieldsWithValidate, …) - Codeunit 8611 “Config. Package Management” (4 calls:
GetCachedConfigPackageField → GetField,IsBLOBField → GetField,IsMediaField → GetField, …) - Codeunit 8617 “Config. Validate Management” (4 calls:
EvaluateValueToCode → TestFieldIsNotObsolete,EvaluateValueToText → TestFieldIsNotObsolete,GetRelationInfoByIDs → TestFieldIsNotObsolete, …) - Table 1235 “XML Buffer” (4 calls:
GetValue → LFSeparator,GetValue → ReadAsTextWithSeparator,ReadFromBlob → CRLFSeparator, …) - Table 1236 “JSON Buffer” (4 calls:
GetValue → LFSeparator,GetValue → ReadAsTextWithSeparator,ReadFromBlob → CRLFSeparator, …) - Table 1834 “Consolidation Log Entry” (4 calls:
GetRequestAsText → LFSeparator,GetRequestAsText → ReadAsTextWithSeparator,GetResponseAsText → LFSeparator, …) - Table 6906 “Expense Report Header” (4 calls:
GetApproverComment → LFSeparator,GetApproverComment → TryReadAsTextWithSepAndFieldErrMsg,GetSubmitterComment → LFSeparator, …) - Codeunit 20105 “AMC Banking Mgt.” (3 calls:
GetFieldValue → GetXMLAmountFormatWithTwoDecimalPlaces,SetFieldValue → Evaluate,SetFieldValue → GetOptionNoFromTableField) - Codeunit 20365 “Use Case Archival Mgmt.” (3 calls:
ImportTaxTypes → ReadAsTextWithSeparator,ImportUseCases → ReadAsTextWithSeparator,RestoreArchivalToUse → ReadAsTextWithSeparator) - Codeunit 5261 “Audit File Export Mgt.” (3 calls:
CompleteAuditFileExportLine → GetCurrentDateTimeInUserTimeZone,StartExport → GetCurrentDateTimeInUserTimeZone,UpdateExportStatus → GetCurrentDateTimeInUserTimeZone) - Codeunit 5496 “Graph Mgt - Sales Order Buffer” (3 calls:
PropagateOnInsert → TransferFieldsWithValidate,PropagateOnModify → TransferFieldsWithValidate,TransferSalesInvoiceLineAggregateToSalesLine → TransferFieldsWithValidate) - Codeunit 5497 “Graph Mgt - Purch Order Buffer” (3 calls:
PropagateOnInsert → TransferFieldsWithValidate,PropagateOnModify → TransferFieldsWithValidate,TransferPurchaseInvoiceLineAggregateToPurchaseLine → TransferFieldsWithValidate) - Codeunit 5503 “Graph Mgt - Attachment Buffer” (3 calls:
FindParentDocumentSafe → Evaluate,TransferToIncomingDocumentAttachment → TransferFieldsWithValidate,TransferToUnlinkedAttachment → TransferFieldsWithValidate) - Codeunit 5506 “Graph Mgt - Sales Quote Buffer” (3 calls:
PropagateOnInsert → TransferFieldsWithValidate,PropagateOnModify → TransferFieldsWithValidate,TransferSalesInvoiceLineAggregateToSalesLine → TransferFieldsWithValidate) - Codeunit 5508 “Graph Mgt - Sal. Cr. Memo Buf.” (3 calls:
PropagateOnInsert → TransferFieldsWithValidate,PropagateOnModify → TransferFieldsWithValidate,TransferSalesCreditMemoLineAggregateToSalesLine → TransferFieldsWithValidate) - Codeunit 5511 “Graph Mgt - Purch. Cr. Memo” (3 calls:
PropagateOnInsert → TransferFieldsWithValidate,PropagateOnModify → TransferFieldsWithValidate,TransferPurchaseCreditMemoLineAggregateToPurchaseLine → TransferFieldsWithValidate) - Codeunit 7233 “Master Data Management” (3 calls:
HandleOnIsModifiedAfterIntegrationTableRecordLastSynch → CompareDateTime,HandleOnIsRecordModifiedAfterRecordLastSynch → CompareDateTime,HandleOnIsRecordRefModifiedAfterRecordLastSynch → CompareDateTime) - Codeunit 8610 “Questionnaire Management” (3 calls:
BuildAnswerOption → GetField,ModifyConfigQuestionAnswer → GetOptionNo,UpdateInsertQuestionFields → GetField) - Codeunit 1180 “Data Privacy Mgmt” (2 calls:
CreatePackageFilter → GetField,IsValidField → GetField) - Codeunit 1297 “Http Web Request Mgt.” (2 calls:
AddSecurityProtocol → BitwiseAnd,AddSecurityProtocol → BitwiseOr) - Codeunit 1917 “MigrationQB Helper Functions” (2 calls:
WriteTextToField → Evaluate,WriteTextToField → GetOptionNo) - Codeunit 2114 “O365 HTML Templ. Mgt.” (2 calls:
EncodeMessage → HtmlEncode,FillParameterValueEncoded → HtmlEncode) - Codeunit 491 “Memory Mapped File” (2 calls:
ReadTextWithSeparatorsFromMemoryMappedFile → LFSeparator,ReadTextWithSeparatorsFromMemoryMappedFile → ReadAsTextWithSeparator) - Codeunit 5520 “Get Unplanned Demand” (2 calls:
SetFilterToSpecificJob → GetMaxNumberOfParametersInSQLQuery,SetFilterToSpecificSalesOrder → GetMaxNumberOfParametersInSQLQuery) - Codeunit 7314 “Warehouse Availability Mgt.” (2 calls:
CalcQtyAvailToTakeOnWhseWorksheetLine → Maximum,CalcQtyAvailToTakeOnWhseWorksheetLine → Minimum) - Codeunit 8400 “Record Set Management” (2 calls:
SortAscending → GetKeyAsString,SortAscending → SortRecordRef) - Codeunit 8614 “Config. XML Exchange” (2 calls:
CreateRecordNodes → GetField,FormatFieldValue → FormatDate) - Table 110 “Sales Shipment Header” (2 calls:
GetWorkDescription → LFSeparator,GetWorkDescription → TryReadAsTextWithSepAndFieldErrMsg) - Table 112 “Sales Invoice Header” (2 calls:
GetWorkDescription → LFSeparator,GetWorkDescription → TryReadAsTextWithSepAndFieldErrMsg) - Table 114 “Sales Cr.Memo Header” (2 calls:
GetWorkDescription → LFSeparator,GetWorkDescription → TryReadAsTextWithSepAndFieldErrMsg) - Table 1170 “User Task” (2 calls:
GetDescription → LFSeparator,GetDescription → ReadAsTextWithSeparator) - Table 1214 “Intermediate Data Import” (2 calls:
GetValue → LFSeparator,GetValue → ReadAsTextWithSeparator) - Table 1221 “Data Exch. Field” (2 calls:
GetValue → LFSeparator,GetValue → ReadAsTextWithSeparator) - Table 1513 “Notification Schedule” (2 calls:
CalculateClientTimeFromRecTimezone → ConvertDateTimeFromInputTimeZoneToClientTimezone,CalculateRecipientDateTime → ConvertDateTimeFromUTCToTimeZone) - Table 20140 “Lookup Field Filter” (2 calls:
ValidateValue → GetOptionNo,ValidateValue → IsNumeric) - Table 36 “Sales Header” (2 calls:
GetWorkDescription → LFSeparator,GetWorkDescription → TryReadAsTextWithSepAndFieldErrMsg) - Table 5050 “Contact” (2 calls:
GetTimeZoneOffset → GetUserTimezoneOffset,MarkContactsWithSimilarName → TextDistance) - Table 5107 “Sales Header Archive” (2 calls:
GetWorkDescription → LFSeparator,GetWorkDescription → TryReadAsTextWithSepAndFieldErrMsg) - Table 5331 “CRM Integration Record” (2 calls:
IsModifiedAfterLastSynchonizedCRMRecord → CompareDateTime,IsModifiedAfterLastSynchronizedRecord → CompareDateTime) - Table 5900 “Service Header” (2 calls:
GetWorkDescription → LFSeparator,GetWorkDescription → TryReadAsTextWithSepAndFieldErrMsg) - Table 5990 “Service Shipment Header” (2 calls:
GetWorkDescription → LFSeparator,GetWorkDescription → TryReadAsTextWithSepAndFieldErrMsg) - Table 5992 “Service Invoice Header” (2 calls:
GetWorkDescription → LFSeparator,GetWorkDescription → TryReadAsTextWithSepAndFieldErrMsg) - Table 5994 “Service Cr.Memo Header” (2 calls:
GetWorkDescription → LFSeparator,GetWorkDescription → TryReadAsTextWithSepAndFieldErrMsg) - Table 6010 “Service Header Archive” (2 calls:
GetWorkDescription → LFSeparator,GetWorkDescription → TryReadAsTextWithSepAndFieldErrMsg) - Table 7326 “Whse. Worksheet Line” (2 calls:
AvailableQtyToPickForCurrentLine → Minimum,UpdatePickQtyToHandleBase → Maximum) - Table 9510 “Email Parameter” (2 calls:
GetTextFromBLOB → LFSeparator,GetTextFromBLOB → ReadAsTextWithSeparator) - and 71 more: data/code/graph/29/calls.json
Recent changes
- 2026-09-23 #11507 [Master] Fix Unix timestamp timezone conversion (main, BC30, fix)
- 2026-09-09 #11160 Ruleset hardening: promote three mechanical rules to Error (main, BC30, refactor)
- 2026-07-07 #8951 [Master]-Time zone issue to the G/L report in Business Central (main, BC30, fix)
Deprecations
- procedure UrlEncodeSecret: Pending 27.0 (#if not CLEAN27), “Use UrlEncode with secret text.”
Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).
Ask your agent
Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "codeunit", object_name: "Type Helper"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.