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

Оператор EXPORT

Оператор EXPORT - создание действия, экспортирующего заданные свойства в файл, или, в общем случае, открывающего форму в структурированном представлении.

Синтаксис

EXPORT [exportFormat] FROM [columnId1 =] propertyExpr1, ..., [columnIdN = ] propertyExprN 
[WHERE whereExpr] [ORDER orderExpr1 [DESC], ..., orderExprL [DESC]]
[TOP topExpr] [OFFSET offsetExpr] [TO propertyId]
EXPORT formName [OBJECTS objName1 = expr1, ..., objNameK = exprK] [exportFormat]
[TOP topSelect]
[OFFSET offsetSelect]
[TO exportTo]

Где topSelect и offsetSelect определяются либо как одно выражение, либо как отображение по группам объектов:

topExpr
topGroupId1 = topPropertyExpr1, ..., topGroupIdT = topPropertyExprT
offsetExpr
offsetGroupId1 = offsetPropertyExpr1, ..., offsetGroupIdF = offsetPropertyExprF

А exportTo — либо как одно свойство-приемник, либо как отображение по группам объектов:

propertyId
groupId1 = propertyId1, ..., groupIdM = propertyIdM

exportFormat может задаваться одним из следующих вариантов:

JSON [CHARSET charsetStr]
XML [HEADER | NOHEADER] [ROOT rootExpr] [TAG tagExpr] [ATTR] [CHARSET charsetStr]
CSV [separator] [HEADER | NOHEADER] [ESCAPE | NOESCAPE] [CHARSET charsetStr]
XLS [SHEET sheetExpr] [HEADER | NOHEADER]
XLSX [SHEET sheetExpr] [HEADER | NOHEADER]
DBF [CHARSET charsetStr]
TABLE

Описание

Оператор EXPORT создает действие, которое экспортирует данные из заданных свойств или заданной формы в файл. Поддерживаются следующие форматы файлов: XML, JSON, CSV, XLS, XLSX, DBF, TABLE.

Если формат экспортируемого файла не задан, то он считается равным JSON.

Если классом значения свойства, в которое экспортируются данные, является класс FILE, то расширение результирующего файла в зависимости от формата определяется следующим образом:

ФорматРасширение
JSONjson
XMLxml
CSVcsv
XLSxls
XLSXxlsx
DBFdbf
TABLEtable

При экспорте формы в блоке OBJECTS можно объектам формы добавлять дополнительные фильтры на равенство этих объектов переданным значениям. Также эти объекты не будут участвовать в построении иерархии групп объектов.

При экспорте формы в иерархический формат (JSON, XML) формируется один файл, который записывается в свойство propertyId. В плоские форматы (CSV, XLS, XLSX, DBF, TABLE) каждая группа объектов выгружается отдельным файлом, поэтому приемники задаются списком по группам объектов (groupId = propertyId) — не обязательно для всех групп: группы, не указанные в списке, не выгружаются. Экспортировать форму в плоском формате в один файл нельзя.

Параметры

Источник экспорта

  • formName

    Имя формы, из которой необходимо экспортировать данные. Составной идентификатор.

  • objName1 ... objNameK

    Имена объектов формы, для которых задаются фильтруемые (фиксированные) значения. Простые идентификаторы.

  • expr1 ... exprK

    Выражения, значения которых определяют фильтруемые (фиксированные) значения для объектов формы.

  • propertyExpr1, ..., propertyExprN

    Список выражений, из значений которых экспортируются данные. Каждому свойству ставится в соответствие колонка таблицы результирующего файла.

  • columnId1, ..., columnIdN

    Список идентификаторов колонок в результирующем файле, в которые будут переноситься данные из соответствующего свойства. Каждый элемент списка задается либо простым идентификатором, либо строковым литералом. Если идентификатор не задан, он по умолчанию считается равным expr<Номер колонки>.

  • whereExpr

    Выражение, значение которого является условием создаваемого экспорта. Если не задано, считается равным дизьюнкции всех экспортируемых свойств (то есть хотя бы одно из свойств должно быть не NULL).

  • orderExpr1, ..., orderExprL

    Список выражений, по которым производится сортировка экспортируемых данных. Выражения произвольны: они не обязаны входить в список propertyExpr1, ..., propertyExprN. Выражение сортировки добавляется во внутренний запрос скрытой колонкой и в результат экспорта не попадает.

  • DESC

    Ключевое слово. Указывает на обратный порядок сортировки. По умолчанию используется сортировка по возрастанию.

  • topExpr

    Выражение, значение которого ограничивает экспорт его первыми записями.

  • topGroupId1 ... topGroupIdT

    Простые идентификаторы групп объектов формы, для которых ограничение задается по группам объектов, а не для всего экспорта.

  • topPropertyExpr1 ... topPropertyExprT

    Выражения, значения которых ограничивают записи соответствующих групп объектов.

  • offsetExpr

    Выражение, значение которого пропускает столько первых записей экспорта.

  • offsetGroupId1 ... offsetGroupIdF

    Простые идентификаторы групп объектов формы, для которых смещение задается по группам объектов, а не для всего экспорта.

  • offsetPropertyExpr1 ... offsetPropertyExprF

    Выражения, значения которых задают смещение соответствующих групп объектов.

Формат экспорта

  • rootExpr

    Выражение, значение которого используется как имя корневого XML-элемента. Значение выражения должно быть строкового класса. Если не указано, используется имя экспортируемой формы (export при экспорте свойств напрямую). Применяется только для экспорта в XML.

  • tagExpr

    Выражение, значение которого используется как имя XML-элемента, оборачивающего каждую экспортируемую запись. Значение выражения должно быть строкового класса. Если не указано, используется имя группы объектов экспортируемой формы. Применяется только для экспорта в XML.

  • 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троковый литерал, определяющий кодировку. По умолчанию для JSON, XML, CSV используется UTF-8, для DBF - CP1251.

  • sheetExpr

    Выражение, значение которого применяется в качестве названия листа в выгружаемом файле. Используется для форматов экспорта XLS, XLSX.

Значения классов даты и времени в текстовых форматах (JSON, XML, CSV) записываются строками: по умолчанию в форматах ISO 8601 (например, 2026-08-17, 2026-08-17T12:34:56; значения ZDATETIME — момент времени в UTC с суффиксом Z). Это поведение определяется рабочим параметром useISOTimeFormatsInIntegration: если он сброшен, используются форматы текущей локали. В форматы XLS и XLSX такие значения записываются типизированными значениями даты/времени, а не строками. В формате DBF значения DATE и DATETIME записываются в поле даты (время у DATETIME при этом теряется), а TIME — строкой HH:mm:ss.

Назначение экспорта

  • propertyId

    Идентификатор свойства, в которое будет записан сформированный файл. У этого свойства не должно быть параметров и класс его значения должен быть файловым (FILE, RAWFILE, JSONFILE и т.д.). Если это свойство не указано, то по умолчанию используется свойство System.exportFile. При экспорте формы применим только для иерархических форматов (JSON, XML).

  • 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) для нужного склада
// плоский формат: файл задается для группы объектов s
EXPORT exportSku OBJECTS st = store DBF CHARSET 'CP866' TO s = exportFile;
EXPORT exportSku XML;
EXPORT exportSku OBJECTS st = store CSV ',' TO s = exportFile;
}