CommerceML

Добрый день, подскажите
В каком файле находится обработчик которые проверяет external id в offers.xml, нужно сделать, чтобы брал любые значения даже с “#” решеткой
Вот типо того
<Ид>e9fb7ea0-2c16-11e8-80c4-44a84235a830#b6c8927d-a4aa-11e9-80d3-44a84235a830</Ид>

Где-то тут

app/addons/rus_exim_1c/Tygh/Commerceml/RusEximCommerceml.php

скорее всего в функции getProductDataByLinkType

1 лайк

Можете пальцем ткнуть, где подправить. Тут вроде не вижу условий с #.

Скажите, что конкретно надо сделать. А то из вашего описания не очень понятно

Игнорировать знак # в коде external id, т.к. из за этого не выгружаются остатки. Он сверяет только первую часть а после # нет.
<Ид>e9fb7ea0-2c16-11e8-80c4-44a84235a830#b6c8927d-a4aa-11e9-80d3-44a84235a830</Ид>

Функцию, в которой ID разделяется по решетке, указал в другой теме

А что тут заменить, я так особо и не понял.

   public function getProductIdByFile($commerceml_id)
{
    $ids = fn_explode('#', $commerceml_id);
    $product_id = array_shift($ids);
    $combination_id = 0;
    if (!empty($ids)) {
        $combination_id = reset($ids);
    }

    return array($product_id, $combination_id);
}

Спасибки, получилось
$ids = fn_explode(’#’, $commerceml_id);
Сделал чтобы искал по & вместо #

1 лайк

Все верно. Тут ID разделяется на 2 части - ID товара и вариации

Добрый день! При выгрузки изменяется название с 1С. Как сделать чтобы название товара и артикул не менялся ?

Подскажите, какая функция за это отвечает

Предположу, что тут

$product['product'] = $this->getProductNameByType($import_product_name, $d_product, $full_name, $cml);

да тут, только на тестовом сайте удаляю , $full_name, всё ок. А на основу переношу 1С ругается. НЕ пойму почему

Такая ошибка
PHP Fatal Error

Message
Uncaught Error: Class ‘Tygh\Commerceml\RusEximCommerceml’ not found in /var/www/www-root/data/www/all4tele.com/app/addons/rus_exim_1c/controllers/frontend/exim_1c.php:49
Stack trace:
#0 /var/www/www-root/data/www/all4tele.com/app/functions/fn.control.php(665): include()
#1 /var/www/www-root/data/www/all4tele.com/app/functions/fn.control.php(423): fn_run_controller(’/var/www/www-ro…’, ‘exim_1c’, ‘import’, ‘’, ‘’)
#2 /var/www/www-root/data/www/all4tele.com/index.php(25): fn_dispatch()
#3 {main}
thrown

Error at
app/addons/rus_exim_1c/controllers/frontend/exim_1c.php, line: 49

Backtrace

–>

Выгрузка товаров завершена с ошибками!!

Сравните файлы. Возможно, что-то еще удалили

Сравнивал, всё тоже самое.

Перезаливал с тест сайт, модуль целиком.

Всё равно ошибка. А на тесте всё ок. Всю голову сломал уже.

Вот сравнение
1 файл основа, второй тестовый
https://www.diffchecker.com/aqZp1bjb

если в первом файле удаляю $full_name, выгрузка не работает.

На тесте 2 файл норм пашет

Ну как минимум, надо не просто удалить параметр из списка, а поменять его за пустое значение.

на null, что ли, или на переменную типо $test.

Начните с пустого значения ( $param1, $param2, ‘’, $param3 )

когда пустую ставишь переменную, всё равно выгружает из 1С

Теперь на основном сайте, когда с пустой переменной делаешь, удаляются все титлы)

В общем, надо изучать где и как полученное значение дальше используется