Оператор 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 ',';
}