Добавление В Недоступные Комбинации Опций При Импорте Из 1С

Доброе время суток.

Есть ощущение, что при импорте из 1С и проставленной галке "скрывать отсутствующие товары" при добавлении комбинации опций в список "недоступные комбинации" старый список не очищается!!!

Чем это чревато:

1) абсолютно ненужное разрастание базы

2) а если комбинация появляется в наличии? Она по-прежнему в недоступных есть.

Как это не правильно.

Здравствуйте!

При включенной настройке "Скрывать отсутствующие товары" если у комбинации задано количество она удаляется из недоступных комбинаций. Если у вас это не происходит напишите в HelpDesck об этой проблеме.

Здравствуйте!

При включенной настройке "Скрывать отсутствующие товары" если у комбинации задано количество она удаляется из недоступных комбинаций. Если у вас это не происходит напишите в HelpDesck об этой проблеме.

"задано количество" - вы имеете ввиду не равно 0?

А вопрос - почему нет удаления имеющихся уже комбинаций в списке недопустимых? Сейчас получается, что одна и та же недопустимая комбинация несколько раз в этом списке

И такой вопрос.

Схема обмена с 1С = 2.05, "Индивидуальные опции"

Проясните мне по этому куску кода. Взят он из func.php модуля rus_exim_1c

                   $option_hash = $add_options_combination;
                    $option_hash['option_hash'] = $_combination_data['combination_guid'];
                    $combination_data = array(
                        'product_id' => $pid,
                        'combination_hash' => fn_generate_cart_id($pid, array('product_options' => $add_options_combination)),
                        'combination' => fn_get_options_combination($add_options_combination),
                        'amount' => $amount,
                        'external_id' => $_combination_data['combination_guid'],
						'price' => $_combination_data['price_per_item']
                    );
                    if (($amount == 0) && ($hide_product == 'Y')) {
                        if (!empty($option_id) && !empty($variant_id)) {
                            $combination = array(
                                'product_id' => $pid,
                                'combination' => serialize($add_options_combination),
                            );
                        db_query("REPLACE INTO ?:product_options_exceptions ?e", $combination);
                    }
                }
                $variant_combination = db_get_field("SELECT combination_hash FROM ?:product_options_inventory WHERE combination_hash = ?i", $combination_data['combination_hash']);
                if (empty($variant_combination)) {
                    db_query("REPLACE INTO ?:product_options_inventory ?e", $combination_data);
                } else {
                    db_query("UPDATE ?:product_options_inventory SET ?u WHERE combination_hash = ?i", $combination_data, $combination_data['combination_hash']);
                }
                if (!empty($image_pair_id)) {
                    db_query("UPDATE ?:images_links SET object_id = ?i WHERE pair_id = ?i", $combination_data['combination_hash'], $image_pair_id);
                }
                if ($combination_data['amount'] > 0) {
                    $empty_stock = false;
                }
            }
            // To hide products if they are out of stock
            if ($hide_product == 'Y') {
                if ($empty_stock) {
                    db_query("UPDATE ?:products SET status = 'H' WHERE product_id = ?i", $pid);
                }
            }

У меня получается следующее:

Если кол-во в комбинации опций = 0 и стоит опция "скрывать отсутствующие товары" то комбинации опций записывается в таблицу недоступных опций. А дальше она добавляется или корректируется зачем-то в список комбинаций опций!!! ЗАЧЕМ?

на сайте в этом случае получается чепуха. Комбинация опций видна посетителю, но когда он её выбирает, то пишется, что данная комбинация не доступна.

Где логика? Зачем так сделано?

Здравствуйте!

При включенной настройке "Скрывать отсутствующие товары" если у комбинации задано количество она удаляется из недоступных комбинаций. Если у вас это не происходит напишите в HelpDesck об этой проблеме.

Где в коде написано про удаление это?

"задано количество" - вы имеете ввиду не равно 0?

А вопрос - почему нет удаления имеющихся уже комбинаций в списке недопустимых? Сейчас получается, что одна и та же недопустимая комбинация несколько раз в этом списке

Недопустимая комбинация создается на основе выгружаемых из 1С данных, проверьте файл выгрузки, есть ли в нем повторяющие комбинации с разным ИД.

И такой вопрос.

Схема обмена с 1С = 2.05, "Индивидуальные опции"

Проясните мне по этому куску кода. Взят он из func.php модуля rus_exim_1c

                   $option_hash = $add_options_combination;
                    $option_hash['option_hash'] = $_combination_data['combination_guid'];
                    $combination_data = array(
                        'product_id' => $pid,
                        'combination_hash' => fn_generate_cart_id($pid, array('product_options' => $add_options_combination)),
                        'combination' => fn_get_options_combination($add_options_combination),
                        'amount' => $amount,
                        'external_id' => $_combination_data['combination_guid'],
						'price' => $_combination_data['price_per_item']
                    );
                    if (($amount == 0) && ($hide_product == 'Y')) {
                        if (!empty($option_id) && !empty($variant_id)) {
                            $combination = array(
                                'product_id' => $pid,
                                'combination' => serialize($add_options_combination),
                            );
                        db_query("REPLACE INTO ?:product_options_exceptions ?e", $combination);
                    }
                }
                $variant_combination = db_get_field("SELECT combination_hash FROM ?:product_options_inventory WHERE combination_hash = ?i", $combination_data['combination_hash']);
                if (empty($variant_combination)) {
                    db_query("REPLACE INTO ?:product_options_inventory ?e", $combination_data);
                } else {
                    db_query("UPDATE ?:product_options_inventory SET ?u WHERE combination_hash = ?i", $combination_data, $combination_data['combination_hash']);
                }
                if (!empty($image_pair_id)) {
                    db_query("UPDATE ?:images_links SET object_id = ?i WHERE pair_id = ?i", $combination_data['combination_hash'], $image_pair_id);
                }
                if ($combination_data['amount'] > 0) {
                    $empty_stock = false;
                }
            }
            // To hide products if they are out of stock
            if ($hide_product == 'Y') {
                if ($empty_stock) {
                    db_query("UPDATE ?:products SET status = 'H' WHERE product_id = ?i", $pid);
                }
            }

У меня получается следующее:

Если кол-во в комбинации опций = 0 и стоит опция "скрывать отсутствующие товары" то комбинации опций записывается в таблицу недоступных опций. А дальше она добавляется или корректируется зачем-то в список комбинаций опций!!! ЗАЧЕМ?

на сайте в этом случае получается чепуха. Комбинация опций видна посетителю, но когда он её выбирает, то пишется, что данная комбинация не доступна.

Где логика? Зачем так сделано?

Вам необходимо обновить cs-cart. Изначально когда был добавлен код создания недопустимых комбинаций, удаление их не было. В последующих версиях удаление недопустимых комбинаций было добавлено.

Вам необходимо обновить cs-cart. Изначально когда был добавлен код создания недопустимых комбинаций, удаление их не было. В последующих версиях удаление недопустимых комбинаций было добавлено.

Стоит 4.3.5 - вроде не ранняя версия. В 4.3.6 появилось удаление???

UP

Да, в версии 4.3.6 есть удаление комбинаций.