Как при обмене данными 1С доп. св-во парсить в число.

#
Как при обмене данными 1С доп. св-во парсить в число.
Каким образом можно при обмене данными с 1С парсить доп. св-во превращая его value в число?
Например имеется св-во "Диагональ" значения которого могут принимать вид 23", 24", 32" (зачем тут на форуме программеров типографика? кавычки все ужасные стали) и т.д.
Нужно чтобы в БД это записывалось в виде числа 23, 24, 32 . Это нужно чтобы осуществлять затем фильтрацию товаров "От и До" по этому св-ву.

Все мы знаем, что для такого преобразования достаточно было бы обернуть в нужном месте значение в:
intval('23"');
, но обработчик закодирован зендом (непонятно зачем).

Править типовой обработчик в 1С тоже нельзя, т.к. это типовая конфигурация и можно лишится нормального обновления конфигурации, да и вообще зачем, когда в php можно написать всего одну строчку

Как быть?
#
Re: Как при обмене данными 1С доп. св-во парсить в число.
vrtc, сохраняйте в 1С значение диагонали без кавычки, обозначающей дюймы. И не надо будет ничего преобразовывать.

Ну и еще смотрите примеры в API по поводу сортировки по доп.свойству как числу http://www.hostcms.ru/api/HostCMS_5/shop.html#methodShowShop (см чуть ниже, пример после слов "Пример использования сортировки товара по значению дополнительного свойства"
Заказов не беру. Консультирую редко.
#
Re: Как при обмене данными 1С доп. св-во парсить в число.
Kotoff писал(а):
сохраняйте в 1С значение диагонали без кавычки, обозначающей дюймы. И не надо будет ничего преобразовывать.

Это невозможно, т.к. данные получаем с яндекс маркета в авто режиме в том виде в каком есть.
База товаров у нас более 20 тыс товаров, каждый день появляются новые товары и все это дело контролировать в ручном режиме невозможно.
АПИ смотрел, опять же неудобно св-в очень много, в каждой категории свои.
Самый верный способ это изменить обработчик со стороны HostCMS , но это невозможно по непонятным для меня причинам
#
Re: Как при обмене данными 1С доп. св-во парсить в число.
vrtc,
В базе данных значения дополнительных свойств хранятся как строки, не важно что Вы напишете в обработчике, сортироваться они будут как строки.
#
Re: Как при обмене данными 1С доп. св-во парсить в число.
вы наверно не понимаете, мне нужна не сортировка, а фильтрация от  0 до 100 , и если в БД хранятся не числа, а всякая дрянь типа 25'' 28дюймов и т.п. то такая фильтрация невозможна
Модератор
#
Re: Как при обмене данными 1С доп. св-во парсить в число.
vrtc,
собственно что выгружается из 1С, то и вносится в базу. Вы можете выгрузить в файл, убрать оттуда дюймы и проимпортировать файл вручную через центр администрирования.
#
Re: Как при обмене данными 1С доп. св-во парсить в число.
Вы выше читали? база более 20 тыс товаров, вес базы вместе с картинками более 4 гб , выгрузка происходит 3 раза в день менеджером, убрать невозможно.

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

   public function parseImport() {      
      
      $importFile = 'exchange1c/import.xml';
      
      $reader = new XMLReader();
      $reader->open($importFile);
      
      $group = new XMLReader();
      $product = new XMLReader();
      
      $data = array();
      
      while($reader->read()) {
      
         if($reader->nodeType == XMLReader::ELEMENT) {
      
            switch($reader->name) {
               case 'Группы':
                  // Подочернее добавление групп
                  $this->Ф-ця_создания_категории($reader->readOuterXML());
                  $reader->next();
               break;
            
               case 'Товар':
            
                  $product->XML($reader->readOuterXML());
                  
                  $data = array();
                  
                  //echo '<pre>';//дальше еще не придумал
Авторизация