Добрый день!
Конфигурация 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 307».
Появилась дополнительная проблема: 1С выгружает числа с "," (запятой) в качестве разделителя. Нужно дополнительно проверять наличие "," и менять на "." (точку)
Например так:
Мы выпустили обновление плагина «1С (CommerceML)», в котором исправили импорт форматированных числовых значений. Обновление можно установить в «Инсталлере».
Проверьте, пожалуйста. Сообщите нам, если проблема сохранилась.
Спасибо вам за то, что помогаете улучшать программные продукты Webasyst!
Добрый вечер. Протестировал, ошибка сохранилась. Передавал число 19000 и 36000. Из 1с улетели как 19 000 и 36 000 соответственно. На сайт загрузились 19 и 36.
Кажется, эта проблема была устранена только для числовых значений с единицами измерения, а для простых чисел — нет. Передали разработчикам — спасибо за замечание!