Импорт идёт в два шага через таблицу импорта \Shef\InSync\Sync\Model\SyncTable (shef_insync_model):
Импорт идёт в два шага через таблицу импорта \Shef\InSync\Sync\Model\SyncTable
(shef_insync_model):
\Shef\InSync\Sync\IProcess) забирает данные — из файла,
из CRM, из API — и складывает строки в таблицу импорта;\Shef\InSync\Sync\FromFile\AAgent) берёт строки из
таблицы пачками и разносит по сущностям. Сколько брать и что делать с
ошибочными строками, решает стратегия
(\Shef\InSync\Sync\FromFile\Strategy\IStrategy).Пример смотреть в модуле shef.demosync
Статусы строк — \Shef\InSync\Sync\EStatus: U — не определён, N — новая,
P — в работе, S — успешно, F — ошибка.
Очистить таблицу импорта из кода:
\Bitrix\Main\Loader::includeModule('shef.insync');
$collection = \Shef\InSync\Sync\Model\SyncTable::createCollection();
$collection->clear('ShefDemosyncFromFileCsv'); // строки одного импорта
$statistic = $collection->getStatistic();
Файлы кладутся в каталог \Shef\InSync\Sync\FromFile\AFileProcess::getImportFolder(),
по умолчанию {каталог импорта}/{код импорта}/. Каталог импорта — вне корня
сайта, \Shef\InSync\Main\Constants::getImportDir(): на BitrixVM это
/home/bitrix/sh_import, свой задаётся в /bitrix/.settings_extra.php, см.
security.md. Имя файла начинается с префикса — например,
cart-xxx.xml: getExistFiles('cart-', 'xml') берёт файлы, имя которых
начинается с префикса, с этим расширением (несколько — через |:
'xml|zip'), старые первыми. Файлы в обработке (process_<код>_…) и файлы
без расширения не берутся.
Картинки стоит так же выкладывать в эту папку, например в подпапку img.
После обработки файл переезжает в {каталог импорта}/copy/{код импорта}/,
при проблеме — в {каталог импорта}/problem/{код импорта}/. Имя архивного
файла — done_<код>_<дата>_<случайный хвост>.<расш>.
До 2.0.0 каталог был /upload/import, под корнем сайта. Внешние обмены,
которые кладут туда файлы, после обновления перенастраиваются на новый
каталог — порядок в security.md.
Сколько дней хранить файлы в архиве, задаётся в настройках модуля, по умолчанию 3 дня. Процесс импорта может переопределить срок (
getMaxDayOffDoneFile()в своём наследникеAFileProcess).
Загрузить файл руками — страница импорта из файла, см. Компоненты.
В модуле преследуется цель работать со сущностями Битрикс только через ORM.
По этой причине созданы необходимые для работы модели и аннотации к ним. Все остальные модели/аннотации в Битрикс уже присутствуют.
Аннотацию для модели собирать через механизм Битрикс:
php bitrix.php orm:annotate -m shef.insync <путь к модулю>/meta/orm.phpИли использовать
shef-cli, если он доступен:shef-cli module:annotate shef.insyncАннотации лежат в одном
meta/orm.phpв корне модуля — как у модулей ядра.
\Shef\InSync\Sync\Model\SyncTable Таблица синхронизацииРаботает через модель EO_, поддерживает интерфейс \Shef\InSync\Sync\IElement.
Интерфейс и магические методы EO_ связаны через фасад.
\Shef\InSync\Sync\Model\Store СкладыРаботает через модель EO_, для работы со складами (Название, адрес и тп)
\Shef\InSync\Sync\Model\IBlock\* ИнфоблокиДобавили в *Table поддержку IblockId.
Работает через модель EO_, для работы с сущностями инфоблоков, поддерживает интерфейсы Model\IBlock\IIBlockId, Model\IBlock\IFixGetList.
Model\IBlock\SectionModel\IBlock\ElementModel\IBlock\PropertyEnumerationСвойства элемента по коду — трейт \Shef\InSync\Sync\Model\IBlock\Element\PropertyTrait
для драйвера или процесса импорта: строка, число, флажок, файл, список
(getPropertyEnum() и getEnum() — найти значение списка по XML_ID или по
значению без учёта регистра, нет — создать). Описание свойства читается один
раз на объект; класс задаёт static::$dataClass — свой *Table инфоблока.
Для использования аннотаций на конкретный инфоблок нужно:
- задать код ORM в инфоблоке
- унаследоваться от
\Shef\InSync\Sync\Model\IBlock\*\*Table- переопределить в нем свои классы для
EO_- построить аннотацию для своего класса
*Table
\Shef\InSync\Sync\Model\Catalog\ProductTable КаталогРаботает через модель EO_. Наследник \Bitrix\Catalog\ProductTable.
Добавлена связь со ставкой НДС SH_VAT с \Bitrix\Catalog\VatTable.
Надстройка над штатным API для чтения/записи данных.
\Shef\InSync\Sync\Model\Catalog\Driver\* для Bitrix\CatalogПри работе со складским учётом - нужно импортировать остатки через документы складского учета
Модуль битрикса catalog использует модели и апи v2. Тк. на текущий момент для v2 написано в коде что оно не стабильно, используем модели.
Интерфейс Driver\ICatalogModel указывает что используется модель каталога.
← Агенты | ↑ Содержание | API →