Оператор EXPORT
Оператор EXPORT
- создание действия, экспортирующего заданные свойства в файл, или, в общем случае, открывающего форму в структурированном представлении.
Синтаксис
EXPORT [exportFormat] FROM [columnId1 =] propertyExpr1, ..., [columnIdN = ] propertyExprN [WHERE whereExpr] [ORDER orderExpr1 [DESC], ..., orderExprL [DESC]] [TOP n] [TO propertyId]
EXPORT formName [OBJECTS objName1 = expr1, ..., objNameK = exprK] [exportFormat] [TOP n] [TO (propertyId | (groupId1 = propertyId1, ..., groupIdN = propertyIdM))]
exportFormat
может задаваться одним из следующих вариантов:
JSON [CHARSET charsetStr]
XML [HEADER | NOHEADER] [ATTR] [CHARSET charsetStr]
CSV [separator] [HEADER | NOHEADER] [ESCAPE | NOESCAPE] [CHARSET charsetStr]
XLS [SHEET sheetProperty] [HEADER | NOHEADER]
XLSX [SHEET sheetProperty] [HEADER | NOHEADER]
DBF [CHARSET charsetStr]
TABLE
Описание
Оператор EXPORT
создает действие, которое экспортирует данные из заданных свойств или заданной формы в файл. Поддерживаются следующие форматы файлов: XML, JSON, CSV, XLS, XLSX, DBF, TABLE.
Если формат экспортируемого файла не задан, то он считается равным JSON.
Если классом значения свойства, в которое экспортируются данные, является класс FILE
, то расширение результирующего файла в зависимости от формата определяется следующим образом:
Формат | Расширение |
---|---|
JSON | json |
XML | xml |
CSV | csv |
XLS | xls |
XLSX | xlsx |
DBF | dbf |
TABLE | table |
При экспорте формы в блоке OBJECTS
можно объектам формы добавлять дополнительные фильтры на равенство этих объектов переданным значениям. Также эти объекты не будут участвовать в построении иерархии групп объектов.
Параметры
Источник экспорта
-
formName
Имя формы, из которой необходимо экспортировать данные. Составной идентификатор.
-
objName1 ... objNameK
Имена объектов формы, для которых задаются фильтруемые (фиксированные) значения. Простые идентификаторы.
-
expr1 ... exprK
Выражения, значения которых определяют фильтруемые (фиксированные) значения для объектов формы.
-
propertyExpr1, ..., propertyExprN
Список выражений, из значений которых экспортируются данные. Каждому свойству ставится в соответствие колонка таблицы результирующего файла.
-
columnId1, ..., columnIdN
Список идентификаторов колонок в результирующем файле, в которые будут переноситься данные из соответствующего свойства. Каждый элемент списка задается либо простым идентификатором, либо строковым литералом. Если идентификатор не задан, он по умолчанию считается равным
expr<Номер колонки>
. -
whereExpr
Выражение, значение которого является условием создаваемого экспорта. Если не задано, считается равным дизьюнкции всех экспортируемых свойств (то есть хотя бы одно из свойств должно быть не
NULL
). -
orderExpr1, ..., orderExprL
Список выражений, по которым производится сортировка экспортируемых данных. Могут использоваться только свойства, присутствующие в списке
propertyExpr1, ..., propertyExprN
. -
DESC
Ключевое слово. Указывает на обратный порядок сортировки. По умолчанию используется сортировка по возрастанию.
Формат экспорта
-
ATTR
Ключевое слово, указывающее на экспорт значений в атрибуты родительского тега. Если не указывается, то значения экспортируются в дочерние теги. Применяется только для экспорта в XML.
-
separator
Разделитель в CSV файле. Строковый литерал. Если не указывается, то по умолчанию берётся разделитель
;
. -
HEADER | NOHEADER
Ключевые слова, указывающие на присутствие (
HEADER
) или отсутствие (NOHEADER
) в CSV, XLS, XLSX файле строки заголовка. По умолчанию используетсяNOHEADER
.При использовании опции
NOHEADER
, если имя колонки одно из предопределенных (A
,B
, ...,Z
,AA
, ...,AE
), то оно экспортируются в колонку с соответствующем номером, и при этом следующие колонки экспортируются в колонки следующие по порядку за этой колонкой.Имеет другое назначение для XML: с опцией
HEADER
файл результата содержит первую строку<?xml version="1.0" encoding="UTF-8"?>
. С опциейNOHEADER
экспортируется без этой строки. По умолчанию используетсяHEADER
. -
ESCAPE | NOESCAPE
Ключевое слово, указывающее на присутствие (
ESCAPE
) или отсутствие (NOESCAPE
) в CSV файле экранирования спецсимволов(\r
,\n
,"
(двойные кавычки) и указанного разделителя (separator
).NOESCAPE
имеет смысл использовать, только в случаях, когда в данных гарантировано не будет заданного разделителя. По умолчанию используетсяESCAPE
. -
CHARSET charsetStr
Опция, указывающая кодировку, используемую при экспорте.
-
charsetStr
Cтроковый литерал, определяющий кодировку.
-
-
sheetProperty
Идентификатор свойства, значение которого применяется в качестве названия листа в выгружаемом файле. У свойства не должно быть параметров. Используется для форматов экспорта
XLS
,XLSX
. -
TOP n
Экспортирует только первые
n
записей. Целочисленный литерал.
Назначение экспорта
-
propertyId
Идентификатор свойства, в которое будет записан сформированный файл. У этого свойства не должно быть параметров и класс его значения должен быть файловым (
FILE
,RAWFILE
,JSONFILE
и т.д.). Если это свойство не указано, то по умолчанию используется свойствоSystem.exportFile
. -
groupId1, ..., groupIdM
Имена групп объектов экспортируемой формы, для которых необходимо экспортировать данные. Простые идентификаторы. Используется только для экспорта формы в плоские форматы.
-
propertyId1 , ..., propertyIdM
Идентификаторы свойств, в которые будут записаны сформированные файлы для заданных групп объектов. У этих свойств не должно быть параметров и классы их значений должны быть файловыми (
FILE
,RAWFILE
,JSONFILE
и т.д.). Используется только для экспорта формы в плоские форматы. Для пустой группы объектов используется имяroot
.
Примеры
CLASS Store;
name = DATA STRING[20] (Sku);
weight = DATA NUMERIC[10,2] (Sku);
in = DATA BOOLEAN (Store, Sku);
exportSkus (Store store) {
// выгружаем в DBF все Sku, для которых задано in (Store, Sku) для нужного склада
EXPORT DBF CHARSET 'CP866' FROM id(Sku s), name(s), weight(s) WHERE in(store, s);
// выгружает CSV без строки заголовков и без экранирования спецсимволов
EXPORT CSV NOHEADER NOESCAPE FROM id(Sku s), name(s), weight(s) WHERE in(store, s);
// выгружает JSON, сортируем по свойству name[Sku] в порядке убывания
EXPORT FROM id(Sku s), name(s), weight(s) WHERE in(store, s) ORDER name(s) DESC;
// выгружает JSON {"ff":"HI"}, так как по умолчанию получает имя value, а платформа объект {"value":"HI"}
// автоматически преобразует в "HI"
EXPORT FROM ff='HI';
// выгружает JSON "HI", так как по умолчанию получает имя value, а платформа объект {"value":"HI"}
// автоматически преобразует в "HI"
EXPORT FROM 'HI';
}
FORM exportSku
OBJECTS st = Store
OBJECTS s = Sku
PROPERTIES(s) id, name, weight
FILTERS in(st, s)
;
exportSku (Store store) {
// выгружаем в DBF все Sku, для которых задано in (Store, Sku) для нужного склада
EXPORT exportSku OBJECTS st = store DBF CHARSET 'CP866';
EXPORT exportSku XML;
EXPORT exportSku OBJECTS st = store CSV ',';
}