artbe Posted August 17, 2018 Report Share Posted August 17, 2018 (edited) Добрый день. Штатно файл обработчик 1c_exchange.php грузит все товары по отдельности из xml файла. В файле обработчика 1c_exchange.php есть код: if(empty($variant_id)) $simpla->variants->add_variant($variant); else $simpla->variants->update_variant($variant_id, $variant); Код должен обновлять вариант товара, если нашел нужный вариант или добавить новый вариант товара. НО данный код не срабатывает у меня. У меня всегда создаются новые товары (даже если создаю тестовый товар и в товаре указываю варианты и артикула). Т.е. например: Чайник электрический UNIT синийЧайник электрический UNIT белыйЧайник электрический UNIT зеленый Все это по сути один товар, с разными вариантами, но разными артикулами. Делаю новый товар, например: Чайник электрический UNIT и делаю 3 варианта товара (синий, белый, зеленый и ставлю каждому из вариантов разные артикула). В результате при синхронизации все равно создаются новые товары. И на варианты товара не переносятся остатки и цены. Понимаю, что надо делать проверку по полю sku, при проверке на варианты: if(empty($variant_id) && !empty($variant_1c_id)) { $simpla->db->query('SELECT id FROM __variants WHERE external_id=? AND product_id=?', $variant_1c_id, $product_id); $variant_id = $simpla->db->result('id'); } elseif(empty($variant_id) && empty($variant_1c_id)) { $simpla->db->query('SELECT id FROM __variants WHERE product_id=?', $product_id); $variant_id = $simpla->db->result('id'); } И дальше обновлять варианты: if(empty($variant_id)) { $variant->product_id = $product_id; $variant->stock = 0; $variant_id = $simpla->variants->add_variant($variant); } elseif(!empty($variant_id)) { $simpla->variants->update_variant($variant_id, $variant); } Simpla штатная без допилов.Но сломал уже голову. Кто сможет помочь в реализации, или натолкнуть в нужное направление. Edited August 17, 2018 by artbe Quote Link to post Share on other sites
Maksclub Posted August 17, 2018 Report Share Posted August 17, 2018 Покажите ваш offers.xml из 1С который прилетает Quote Link to post Share on other sites
artbe Posted August 17, 2018 Author Report Share Posted August 17, 2018 Покажите ваш offers.xml из 1С который прилетает Во вложении. Дело не в offers.xml, а в обработчике. Т.к. в обработчике надо делать условие, по типу: Если есть $variant->sku и он совпадает с $xml_product->Артикул - то обновлять остатки и цену у данного варианта. Само поле Артикула, в файле import.xml. По умолчанию, оно без проблем грузится в одиночные товары (которые не имеет вариантов). Quote Link to post Share on other sites
phukortsin Posted August 17, 2018 Report Share Posted August 17, 2018 Делаю новый товар, например: Чайник электрический UNIT и делаю 3 варианта товара (синий, белый, зеленый и ставлю каждому из вариантов разные артикула). В результате при синхронизации все равно создаются новые товары. Очень сильно зависит от того, что означает "Делаю". Если создаете новый товар в админке вручную, а потом хотите, чтоб работало при обмене, то так зачастую не идет. И вообще вопрос не простой, зависит от многого. Примитивным методом тыка вряд ли получится. По моим наблюдениям, в таких ситуациях в 90% причина совсем не в том месте, где ее обычно ищут методом тыка... Дело не в offers.xml, а в обработчике.Т.к. в обработчике надо делать условие, по типу... Результат зависит и от обработчика и от файла. А если считаете, что все дело в условии, так пишите условие. Если после этого наладится, то, значит, Вы были правы... Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.