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

Экспорт данных (EXPORT)

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

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

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

Общий случай

Стоит отметить, что экспорт данных является частным случаем (синтаксическим сахаром) экспорта форм, в котором экспортируемая форма создается автоматически с именем export и состоит из:

  • одной группы объектов с именем value, объекты которой соответствуют параметрам экспортируемых свойств (не создается, если все параметры экспортируемых свойств являются фиксированными значениями).
  • экспортируемых свойств. В качестве группы свойств для создаваемых свойств на форме при этом используется встроенная группа System.private, а в качестве группы отображения - созданная группа объектов. Если экспортируемое свойство одно и не имеет имени, соответствующее свойство на форме создается с именем value.
  • фильтра равного заданному условию.
  • заданных порядков

Соответственно, поведение оператора экспорта данных (например, определение имен результирующих колонок / ключей, обработка значений value и т.п.) полностью определяется поведением оператора экспорта формы (как если бы ему параметром передали вышеописанную форму).

Язык

Для объявления действия, экспортирующего данные, используется оператор EXPORT.

Примеры

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';
}