Перейти к основному содержимому
Версия: 5.x

Встроенные классы

Встроенные классы - это классы, экземплярами которых являются объекты примитивных типов данных, такие как целые числа, строки, и т.п.

Имя классаОписаниеЛитералы lsFusion
INTEGERЧетырехбайтное целое число5, 23, 1000000000
LONGВосьмибайтное целое число5l, 23L, 10000000000000L
DOUBLEВосьмибайтное число с плавающей точкой5.0d, 2.35D
NUMERIC[ , ]Число с фиксированной разрядностью и точностью5.0, 2.35
BOOLEANЛогический тип данныхTRUE, NULL
TBOOLEANЛогический тип данных (3-значения)TTRUE, TFALSE, NULL
DATEДата13_07_1982
DATETIMEДата и время13_07_1982_18:00
TIMEВремя18:00
YEARГод
STRING, STRING[ ]Строковый тип данных, при необходимости с максимальной длиной, зависимый от регистра
ISTRING, ISTRING[ ]Строковый тип данных, при необходимости с максимальной длиной, независимый от регистра
BPSTRING[]Строковый тип данных с максимальной длиной, зависимый от регистра, с пробелами в конце'text', 'text with\nbreak'
BPISTRING[]Строковый тип данных с максимальной длиной, независимый от регистра, с пробелами в конце
TEXTСтроковый тип данных произвольной длины, зависимый от регистра
RICHTEXTСтроковый тип данных произвольной длины с форматированием
COLORЦвет#00ссff, #AA55CC, RGB(0, 255, 0)
JSONJSON{"a":["x","y","z"]}
FILEФайл динамического типа (содержимое файла вместе с его расширением)
NAMEDFILEФайл динамического типа (содержимое файла вместе с его именем и расширением)
RAWFILE, WORDFILE, IMAGEFILE, PDFFILE, EXCELFILE, CSVFILE, HTMLFILE, JSONFILE, XMLFILE, TABLEFILEФайлы конкретного типа (RAWFILE - файл без расширения / с неизвестным расширением)
LINKСимвольный идентификатор-ссылка на файл (URI)
RAWLINK, WORDLINK, IMAGELINK, PDFLINK, EXCELLINK, CSVLINK, HTMLLINK, JSONLINK, XMLLINK, TABLELINKСимвольный идентификатор-ссылка на файл конкретного типа (RAWLINK - ссылка на файл без расширения / с неизвестным расширением)

Наследование

Среди всех встроенных классов можно выделить четыре семейства классов (будем считать, что каждый из остальных классов образует свое семейство классов)

Семейство классовОписание
ЧислаINTEGER, LONG, DOUBLE, NUMERIC [ , ]
СтрокиSTRING, STRING[ ], ISTRING, ISTRING[], BPSTRING[ ], BPISTRING[ ], TEXT
Файлы конкретного типаRAWFILE, WORDFILE, IMAGEFILE, PDFFILE, EXCELFILE, CSVFILE, HTMLFILE, JSONFILE, XMLFILE, TABLEFILE
Ссылки на файлы конкретного типаRAWLINK, WORDLINK, IMAGELINK, PDFLINK, EXCELLINK, CSVLINK, HTMLLINK, JSONLINK, XMLLINK, TABLELINK

Встроенные классы наследуют друг друга только в рамках одного семейства и не могут наследовать / наследоваться от пользовательских классов. Наследование в рамках одного семейства строится по принципу: более узкий класс наследуется от более широкого.

Общий предок

В соответствии с описанным механизмом наследования, общий предок двух встроенных классов (например для операции выбора) определяется следующим образом:

Строки

result = STRING[blankPadded = s1.blankPadded OR s2.blankPadded, 
caseInsensitive = s1.caseInsensitive OR s2.caseInsensitive,
length = MAX(s1.length, s2.length)]

где blankPadded, caseInsensitive и length, в свою очередь, определяются как:

Имя классаblankPaddedcaseInsensitivelength
STRING[n]falsefalsen
ISTRING[n]falsetruen
BPSTRING[n]truefalsen
BPISTRING[n]truetruen
TEXTfalsefalseinfinite

Числа

IF p1.integerPart >= p2.integerPart AND p1.precision >= p2.precision
result = p1
ELSE IF p1.integerPart <= p2.integerPart AND p1.precision <= p2.precision
result = p2
ELSE IF p1.integerPart > p2.integerPart
result = NUMERIC[p1.integerPart+p2.precision, p2.precision]
ELSE
result = NUMERIC[p2.integerPart+p1.precision, p1.precision]

где integerPart и precision, в свою очередь, определяются как:

Имя классаintegerPartprecision
INTEGER100
DOUBLE9999999999
LONG200
NUMERIC[l,p]length-precisionprecision

Файлы конкретного типа

IF p1 = p2
result = p1
ELSE
result = RAWFILE

Ссылки на файлы конкретного типа

IF p1 = p2
result = p1
ELSE
result = RAWLINK

Отметим, что иногда в программировании определение общего родительского класса принято ассоциировать с неявным приведением типов.

Значение по умолчанию

В некоторых случаях для встроенного класса необходимо использовать некоторое значение, которое будет заведомо отличаться от NULL (например, в условии импорта при импорте данных). Это значение будем называть значением по умолчанию, и определяется оно следующим образом:

Имя классаЗначение по умолчанию
Числовые классы0
СтрокиПустая строка
DATE, TIME, DATETIMEТекущие дата, время, дата / время
BOOLEANTRUE
COLORБелый цвет
JSON
Файлы конкретного типаПустой файл
FILEПустой файл с пустым расширением
NAMEDFILEПустой файл с пустым именем и расширением

Расширения файлов конкретного типа

При преобразовании файлов конкретного типа (JSONFILE, XMLFILE, ...) к файлу динамического типа (FILE, NAMEDFILE), как явном, так и неявном (например при импорте данных без указании формата или при взаимодействии с внешними системами) расширение результирующего файла определяется следующим образом:

Имя классаРасширение
RAWFILEПустая строка
JSONFILEjson
XMLFILExml
CSVFILEcsv
WORDFILEdoc
EXCELFILExls
HTMLFILEhtml
PDFFILEpdf
IMAGEFILEjpg
TABLEFILEtable

Порядок определения результирующего свойства при обращении из внешней системы

Имя классаИмя свойства
FILE, NAMEDFILE, RAWFILE, WORDFILE, IMAGEFILE, PDFFILE, EXCELFILE, CSVFILE, HTMLFILE, JSONFILE, XMLFILE, TABLEFILEexportFile, exportNamedFile, exportRawFile, exportWordFile, exportImageFile, exportPdfFile, exportExcelFile, exportCsvFile, exportHtmlFile, exportJsonFile, exportXmlFile
TEXT, STRING, BPSTRINGexportText, exportString, exportBPString
NUMERIC, LONG, INTEGER, DOUBLEexportNumeric, exportLong, exportInteger, exportDouble
DATETIME, DATE, TIME, YEARexportDateTime, exportDate, exportTime, exportYear
LINK, RAWLINK, WORDLINK, IMAGELINK, PDFLINK, EXCELLINK, CSVLINK, HTMLLINK, JSONLINK, XMLLINK, TABLELINKexportFile, exportRawFile, exportWordFile, exportImageFile, exportPdfFile, exportExcelFile, exportCsvFile, exportHtmlFile, exportJsonFile, exportXmlFile
BOOLEAN, COLOR, JSONexportBoolean, exportColor, exportJSON
Пользовательские классыexportObject