masterflash-ru / commerceml
Модуль обмена с 1С
Installs: 33
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 0
Open Issues: 0
Type:service
Requires
- php: ^7.2
- laminas/laminas-mvc: ^3.0.1
- masterflash-ru/ado: ^2.0
This package is auto-updated.
Last update: 2025-03-10 20:44:45 UTC
README
Модуль для Laminas Framework 3, для системы Simba, от студии Мастер Флеш. Пока не отлажено на реальном сайте!!!
установка: composer require masterflash-ru/commerceml
Представляет собой завершенный модуль для загрузки каталога на сайт из 1С. Результат работы - заполненные таблицы MySql и файлы для товара в папке data/1c. Пока не поддерживаются товары с торговыми предложениями (характеристиками)!!! После загрузки уже другие модули сайта работают с этими данными по своему усмотрению. Вся работа построена на общих событиях с идентификатором simba.1c:
- catalogTruncate - вызывается когда производится полная загрузка каталога, очищается все хранилище и временные таблицы
- catalogImport - вызывается когда производится импорт раздела Import.xml - собственно сам каталог, по умолчанию вызывается внутренний стандартный парсер
- catalogOffers - аналогично для раздела Offers.xml, аналогично вызывается стандартный парсер
- catalogImportComplete - вызывается после выполнения операций по загрузке во временное хранилище файлов типа import, по этому событию сторонние модули могут работать с данными из таблиц.
- catalogOffersComplete - вызывается после выполнения операций по загрузке во временное хранилище файлов типа offers, по этому событию сторонние модули могут работать с данными из таблиц.
в первых 3-х передается имя файла для обработки с полным путем к нему, приоритет по умолчанию 100.
Можно отключить стандартную обработку, например, когда 1С формирует вообще не стандартный файл. Для обработки вам нужно добавить слушателя для этих событий с идентификатором simba.1c. Нужно в конфиге установить "standartParser"=>false - в этом случае не устанавливаются обработчики файлов 1С данного модуля
Если необходимо что-то сделать в процессе обработки добавьте нового слушателя для указанных событий, они будут вызваны автоматически с передачей параметров.
Поддерживается полная и частичое обновление каталога, но есть особенности:
- таблица import_1c_category очищается только при полной загрузке каталога, т.к. дерево на сайте строится на основе числовых идентификаторов, к которым привязывается товар.
- если есть изменения названия или появление нового раздела(ов) таблица соответсвенно меняется/дополняется.
- связей между таблицами нет, все загружается как есть в файле 1С
- все остальные данные, таблицы хранилища, перед загрузкой всегда очищаются, и содержат только обновленную информацию которая есть в текущем файле 1С
- товар связывается с import_1c_category на основе идентификаторов 1С.
Модуль каталога должен сам разруливать связи между типами цен, типами склада, файлами-фото, производителями. Все эти связи строятся на основе идетификаторов 1С, строк типа 1b2a698c-7e15-11e5-b4e6-8c89a5120b22
Модуль не предоставляет никакое API, он только обрабатывает протокол обмена и имеет стандартный парсер-обработчик и все. Результат работы хранится в комплекте таблиц MySql. в конфиге имеется секция "1c", которая вообще касается 1С
"1c"=>[ //логин/пароль для базовой аутентификации 1С "login"=>[ "admin"=>"********", ], "temp1c"=>__DIR__."/../../../../data/1c/", "standartParser"=>true, "clear_after_sec"=>43200, //время в секундах, когда можно очистить временный каталог ],
Таблицы:
- import_1c_brend - производители, сразу генерируется URL для возможного перехода к описанию производителя
- import_1c_category - структура категорий, флаг flag_change=1, тогда были изменения в этой структуре (данной строки), связи между узлами через числовые идентификаторы
- import_1c_file - сопутствующие файлы для товара
- import_1c_price - цены товара по типам
- import_1c_price_type - типы цен, flag_change=1 - новый тип, flag_change=2 - изменения
- import_1c_properties - справочник характеристик, type: str, voc, соотвественно просто строка или список
- import_1c_properties_list - список вариантов характеристик
- import_1c_scheme - информация о схеме обмена, информация берется из заголовков файла обмена (версия, дата обмена)
- import_1c_sklad - складская информация о товаре (остаток по складам)
- import_1c_sklad_type - доступные склады, внутри flag_change=1 - новый тип, flag_change=2 - изменения
- import_1c_tovar - собственно информация товарной позиции
- import_1c_tovar_properties - характристики товара, если тип хар-ки это список, привязка с списку
- import_1c_requisites - Дополнительные реквизиты товара, хранит имя параметра=>значение параметра
Для работы с базой в конфиге приложения должно быть объявлено DefaultSystemDb:
...... "databases"=>[ //соединение с базой + имя драйвера 'DefaultSystemDb' => [ 'driver'=>'MysqlPdo', //"unix_socket"=>"/tmp/mysql.sock", "host"=>"localhost", 'login'=>"root", "password"=>"**********", "database"=>"simba4", "locale"=>"ru_RU", "character"=>"utf8" ], ], .....
для работы с кешем аналогично:
..... 'caches' => [ 'DefaultSystemCache' => [ 'adapter' => [ 'name' => Filesystem::class, 'options' => [ // Store cached data in this directory. 'cache_dir' => './data/cache', // Store cached data for 3 hour. 'ttl' => 60*60*2 ], ], 'plugins' => [ [ 'name' => Serializer::class, 'options' => [ ], ], ], ], ], .....