Импорт и экспорт данных реестров
=================================

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


Экспорт и импорт реестров приложения
--------------------------------------

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

Данные переносятся без соблюдения связей.
Чтобы проверить целостность перенесённых данных,
в каждый архив добавляется хэшсумма -
отдельно для каждого реестра и для всех данных в целом.

Для работы с этим функционалом используйте API-эндпоинты
`app_export <https://tdd.lan.arta.kz/docs/synergy/simon/sdk-doc/swagger/#!/configurator/app_export>`_
и
`app_import <https://tdd.lan.arta.kz/docs/synergy/simon/sdk-doc/swagger/#!/configurator/app_import>`_.


Импорт и экспорт реестра через CSV
------------------------------------

Помимо переноса данных вместе с приложением,
платформа поддерживает работу с данными реестра через CSV-файлы.
Это позволяет загружать данные из внешних источников
или выгружать срез записей реестра для дальнейшей обработки.

Обе операции выполняются в фоновом режиме.


Экспорт реестра в CSV
~~~~~~~~~~~~~~~~~~~~~~

При экспорте система формирует CSV-файл
со срезом записей указанного реестра.

Структура файла строится автоматически
на основе описания формы реестра -
дополнительная настройка не требуется.

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

Для запуска экспорта используйте API-эндпоинт
`/api/v5/registry/csv/export <https://tdd.lan.arta.kz/docs/synergy/simon/sdk-doc/swagger/#!/configurator/app_export>`_.


Импорт реестра из CSV
~~~~~~~~~~~~~~~~~~~~~~

При импорте система читает CSV-файл
и создаёт записи в указанном реестре по указанной форме.

Чтобы система понимала, какая колонка CSV соответствует какому полю формы,
необходимо передать маппинг - описание соответствия колонок и полей.

Маппинг поддерживает два режима:

* **По имени колонки** - если CSV-файл содержит строку заголовков,
  можно указать имя колонки так, как оно записано в заголовке.

* **По индексу колонки** - если заголовков нет,
  колонки указываются по их порядковому номеру, начиная с нуля.

Использовать оба режима в одном маппинге нельзя -
нужно выбрать один из них.

По умолчанию разделителем колонок считается запятая.
При необходимости можно указать другой символ-разделитель.

Для запуска импорта используйте API-эндпоинт
`/api/v5/registry/csv/import <https://tdd.lan.arta.kz/docs/synergy/simon/sdk-doc/swagger/#!/configurator/app_import>`_.
