Ошибка в обработке значений типа Число в плагине 1С (CommerceML) (Обмен SS и 1C) Исправлено

1

Добрый день!

Конфигурация 1С УТ 11. Работает с некоторыми огрехами, разбираемся дальше. Обнаружили вот такой неприятный момент: 1С отдает значение свойства типа Число, добавляя пробел, если в настройках свойства в 1С выбран тип "Число", 

пример из XML: <Значение>1 317</Значение>

Соответственно при записи получаем значение 1 (после пробела все отсекается)

Такой код php не сработает:

$value = str_replace(" ", "",$value ); 

 Решение: 

Добавили в функцию applyMapping контроллера shopCml1cPluginBackendRun.controller проверку


if ($data['type']=='double') {
    $value = preg_replace('/\s+/u', '', $value);
}else{
    $value = (string)$value;
}

Вариант править на стороне 1С плохой, поскольку при обновлении конфигурации, все изменения затрутся.

Если есть более корректный вариант, то прошу сообщить. Спасибо за внимание.

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

  • +1
    Михаил Ушенин Михаил Ушенин Webasyst 22 марта 2022 19:06 #

    Вам обязательно нужно использовать импортированное значение в виде числа? Недостаточно ли будет использовать его в виде простой строки?

    • +1
      Дмитрий Дмитрий 22 марта 2022 19:35 #

      Характеристики с типом Число можно использовать в фильтрах. Ну и странно видеть число вида «1 307».

    • +1
      Дмитрий Дмитрий 27 марта 2022 15:54 #

      Появилась дополнительная проблема: 1С выгружает числа с "," (запятой) в качестве разделителя. Нужно дополнительно проверять наличие "," и менять на "." (точку)

      Например так: 

      $value = str_replace(",", ".", $value);
    • +1

      Мы выпустили обновление плагина «1С (CommerceML)», в котором исправили импорт форматированных числовых значений. Обновление можно установить в «Инсталлере».

      Проверьте, пожалуйста. Сообщите нам, если проблема сохранилась.

      Спасибо вам за то, что помогаете улучшать программные продукты Webasyst!

      • +1
        Дмитрий Дмитрий 30 июля 2022 22:48 #

        Добрый вечер. Протестировал, ошибка сохранилась. Передавал число 19000 и 36000. Из 1с улетели как 19 000 и 36 000 соответственно. На сайт загрузились 19 и 36.

        • +1
          Михаил Ушенин Михаил Ушенин Webasyst 1 августа 2022 09:46 #

          Кажется, эта проблема была устранена только для числовых значений с единицами измерения, а для простых чисел — нет. Передали разработчикам — спасибо за замечание!

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

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