Изменение базовых единиц Не принято

3

По умолчанию из коробки базовые единицы длины - метры. Есть магазин, живет припеваючи. По прошествии какого-то времени по каким-то своим причинам принимается решение изменить базовые единицы на, например, сантиметры. Базовые единицы изменены, но записи в таблице остаются в старых базовых единицах (метрах). Ну да ладно, это пол беды (хотя видимо нужен инструмент запуска ручной переконвертации этой таблицы).  Но не это ошибка. Ошибка проявляется дальше, когда, например, сохраняется товар с характеристикой с типом Длина. Например, там значение 23 м. Однако ранее в таблице соответствий уже было такое значение (23 м), которое в поле с базовыми единицами числится как 23. И вот тут как раз кроется ошибка: Shop-Script не пересчитывает величину в базовых единицах если видит что в таблице уже есть связка 23 - m для данной характеристики. Из примера ниже видно, что минимум одна из трёх строк имеет ошибку и представленной там ситуации на практике быть не должно. А она есть. 

P.S. Тут на форуме всякие чудеса описывают которые вполне могут быть следствием этой ошибки.

9 комментариев

  • +1
    replicant replicant 24 ноября 2020 22:59 #

    Эту проблему косвенно я тоже наблюдал и у себя это дело выправил достаточно быстро и просто. Вот тут описано https://support.webasyst.ru/forum/35538/vyvod-v-filtre-v-santimetrakh-dlya-tip-polya-dlina/

    Но нужно обладать некоторыми навыками работы, чтобы такие ситуации легко разруливать. В принципе ничего сложного нет.

  • +1
    Михаил Ушенин Михаил Ушенин Webasyst 16 декабря 2020 18:05 #

    принимается решение изменить базовые единицы на, например, сантиметры

    Каким способом выполняется это изменение?

    • +1

      Штатным. Путем копирования файла dimension.php в wa-config/apps/shop и изменения его содержимого

      • +1
        Михаил Ушенин Михаил Ушенин Webasyst 17 декабря 2020 09:36 #

        Допишем в справочной статье о том, что изменять существующие единицы не нужно, а можно только добавлять новые единицы.

        Но хотелось бы узнать, для чего вам нужно изменять базовую единицу измерения.

        • +1
          Но хотелось бы узнать, для чего вам нужно изменять базовую единицу измерения.

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

          Допишем в справочной статье о том, что изменять существующие единицы не нужно, а можно только добавлять новые единицы.

          Если ничего не делать - эффект будет такой же. Какой прок от того что это будет где-то написано? Тогда обеспечьте чтобы это все читали. Если нельзя менять - сделайте так, чтобы это невозможно было сделать. "Зашейте" в код эти единицы. Зачем тогда их вытягивали в штатную схему по которой работает конфигурация? Ситуация не частая, но все же, хочется вам того или нет, она встречается. Никто не говорит о том что сделать надо все гладко и красиво. Но уж добавить инструмент для перегенерации этой таблицы в тот же module=repair не такой великий труд. Я б даже сказал, по трудозатратам вполне сопоставимо с составлением толковой формулировки, объясняющей почему нельзя делать то, что укладывается в штатную логику работы с конфигами.

          UPD: выше коллега replicant приводил пример зачем это может понадобиться

          • +1
            Михаил Ушенин Михаил Ушенин Webasyst 17 декабря 2020 12:11 #

            Попробовал повторить ситуацию, описанную в теме по вашей ссылке:

            1. Сохранил значения характеристики «Длина» в сантиметрах цв свойствах товаров.
            2. Настроил фильтр в категории товаров по характеристике «Длина».
            3. Открыл категорию на витрине.

            В фильтре по длине единица измерения — сантиметры. Если сохранять значения характеристики в товарах в метрах, то и на витрине метры.

            Возможно, у пользователя старая версия Shop-Script, где это работало иначе. С последней опубликованной версией пока не вижу, для чего нужно было бы изменять базовую единицу измерения.

            Если у вас будет дополнительная информация, добавьте её здесь, пожалуйста.

            • +1

              Если у вас будет дополнительная информация, добавьте её здесь, пожалуйста

              Я не буду больше тратить время на изучение вопроса, решение которого заняло бы уже меньше времени, чем его текущее обсуждение. Если вам это не интересно - мне подавно. Просто если буду сталкиваться с последствиями изменения базовых единиц - буду отправлять пользователей искать эту вашу статью. Благо поиск на форуме тоже достаточно весёлая задачка.

            • +1
              replicant replicant 17 декабря 2020 13:54 #

              Проблема эта выросла из старых версий 6, 7 и частично 8-ки.

              В старой версии такая модификация конфига требовалась в 100% случаев, когда размерность товаров ТРЕБОВАЛА не метров, а именно сантиметров по-умолчанию, чтобы исключить ещё и ошибки ввода характеристик товаров (каждый раз переключать с метров на сантиметры весьма тупое занятие). С литрами и миллилитрами точно так же. В кач-ве примера: никто не измеряет и не указывает диаметр сковородки или тарелки в метрах.

              В новой версии, если правильно помню, то сделали так называемую единицу измерения по-умолчанию, т.е. фактически модифицировать конфиг из-за этого теперь не нужно.

              Вот и вся история. Я не отношусь к этому как к ошибке. Просто есть такая потребность у людей и возможность это реализовать в старых версиях на уровне конфига, но использовать её нужно вдумчиво и аккуратно в особенности тогда, когда товары уже заведены в систему.

              Добавить комментарий

              Чтобы добавить комментарий, зарегистрируйтесь или войдите