Оператор EXPORT
Оператор EXPORT - создание действия, экспортирующего заданные свойства в файл, или, в общем случае, открывающего форму в структурированном представлении.
Синтаксис
EXPORT [exportFormat] [TOP n] FROM [columnId1 =] propertyExpr1, ..., [columnIdN = ] propertyExprN [WHERE whereExpr] [ORDER orderExpr1 [DESC], ..., orderExprL [DESC]] [TO propertyId]
EXPORT formName [OBJECTS objName1 = expr1, ..., objNameK = exprK] [exportFormat] [TOP n] [TO (propertyId | (groupId1 = propertyId1, ..., groupIdN = propertyIdM))]
exportFormat может задаваться одним из следующих вариантов:
JSON [CHARSET charsetStr]
XML [ATTR] [CHARSET charsetStr]
CSV [separator] [HEADER | NOHEADER] [ESCAPE | NOESCAPE] [CHARSET charsetStr]
XLS [HEADER | NOHEADER]
XLSX [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), то оно экспортируются в колонку с соответствующем номером, и при этом следующие колонки экспортируются в колонки следующие по порядку за этой колонкой. -
ESCAPE | NOESCAPEКлючевое слово, указывающее на присутствие (
ESCAPE) или отсутствие (NOESCAPE) в CSV файле экранирования спецсимволов(\r,\n,"(двойные кавычки) и указанного разделителя (separator).NOESCAPEимеет смысл использовать, только в случаях, когда в данных гарантировано не будет заданного разделителя. По умолчанию используетсяESCAPE. -
CHARSET charsetStrОпция, указывающая кодировку, используемую при экспорте.
-
charsetStrCтроковый литерал, определяющий кодировку.
-
-
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 ',';
}