masterflash-ru/commerceml

1С交换模块

dev-master / 1.0.x-dev 2021-01-10 11:14 UTC

This package is auto-updated.

Last update: 2024-09-10 19:39:52 UTC


README

为Laminas Framework 3模块,用于Simba系统,由Master Flash工作室提供。尚未在实际网站上调试!!!

安装: composer require masterflash-ru/commerceml

这是一个将1C目录上传到网站的完整模块。结果是MySql中的填充表格和data/1c文件夹中的商品文件。目前不支持包含交易提案(特性)的商品!!!上传后,其他网站模块将根据自身需求处理这些数据。所有工作基于simba.1c标识符的通用事件。

  • catalogTruncate - 当进行完整目录加载时调用,清除所有存储和临时表
  • catalogImport - 当导入Import.xml部分时调用 - 实际目录,默认调用内部标准解析器
  • catalogOffers - 类似于Offers.xml部分,调用标准解析器
  • catalogImportComplete - 在将文件类型为import的文件加载到临时存储后调用,根据此事件,外部模块可以处理表中的数据。
  • catalogOffersComplete - 在将文件类型为offers的文件加载到临时存储后调用,根据此事件,外部模块可以处理表中的数据。

前三个传递要处理文件的完整路径及其名称,默认优先级为100。

可以禁用标准处理,例如,当1C生成非标准文件时。为了处理,需要为这些事件添加具有simba.1c标识符的监听器。需要在配置中设置 "standartParser"=>false - 在这种情况下,不会安装本模块的1C文件处理器

如果需要在处理过程中执行某些操作,请为指定的事件添加新的监听器,它们将自动调用并传递参数。

支持完整和部分更新目录,但有一些注意事项

  1. import_1c_category表仅在完整加载目录时清除,因为网站上的树结构基于数值标识符,商品与之相关联。
  2. 如果有名称更改或新部分的添加,相应的表将相应更改/补充。
  3. 表之间没有关联,所有内容都按照1C文件中的内容加载
  4. 其他所有数据,存储表,在加载前总是清除,并只包含当前1C文件中存在的信息
  5. 商品基于1C标识符与import_1c_category关联。

目录模块必须自行处理价格类型、仓库类型、图片文件、制造商之间的关联。所有这些关联都基于1C标识符。

模块不提供任何API,它只处理交换协议,并具有标准的解析器-处理器。结果存储在配套的MySql表格中。配置中有一个"1c"部分,它完全涉及1C。

    "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' => [
                    ],
                ],
            ],
        ],
    ],
.....