1 Отредактировано Ярослав (03.02.2016 15:56:49)

Тема: Выгрузка в 1С и единственная комплектация

Здравствуйте!
Используем многомерные комплектации.
Если у товара имеется 1 размер , то при выгрузке в 1с не проставляется xml_id товарного предложения ("Ид" в выгрузке)
и в документе в 1с выводится Носки m0e0107-0055 BNM без указания размера (не подтягивается товарное предложение)
Файл выгрузки:

 - <Товар>
  <Ид>ca20582e-d532-11e4-996d-dc85deaed994</Ид> 
  <Наименование>Носки m0e0107-0055 BNM, Носки m0e0107-0055 BNM (42-45)</Наименование> 
  <БазоваяЕдиница Код="796" НаименованиеПолное="" МеждународноеСокращение="PCE">шт.</БазоваяЕдиница> 
  <ЦенаЗаЕдиницу>80</ЦенаЗаЕдиницу> 
  <Количество>12</Количество> 
  <Сумма>960</Сумма> 
- <ЗначенияРеквизитов>
- <ЗначениеРеквизита>
  <Наименование>ВидНоменклатуры</Наименование> 
  <Значение>Товар</Значение> 
  </ЗначениеРеквизита>
- <ЗначениеРеквизита>
  <Наименование>ТипНоменклатуры</Наименование> 
  <Значение>Товар</Значение> 
  </ЗначениеРеквизита>
  </ЗначенияРеквизитов>
  </Товар>

Пришлось закомментировать часть кода в modules\exchange\model\api.inc.php:

 /**
    * Получает xml_id товарного предложения по товару
    * 
    * @param \Shop\Model\Orm\OrderItem $offer_product - объект товара в заказе
    * @param \Catalog\Model\Orm\Product $product      - объект связанного товара
    * @return string
    */
    private function getOfferXmlIdByOfferProduct(\Shop\Model\Orm\OrderItem $offer_product, $product){
        $xml_id = $product->xml_id; //Получаем xml_id 
        
       // if ($offer_product['offer'] && $product){ //Если комплектация отличная от оригинала !ТУТ!
            $product->fillOffers();
            
            if ($product->isOffersUse()){ //Если такое предложение есть
                $offer = $product['offers']['items'][$offer_product['offer']];
                return $offer['xml_id'];
            }
        //}       !И ТУТ!
        return $xml_id;
    }

Стало выводится верно

 <Товар>
  <Ид>ca20582e-d532-11e4-996d-dc85deaed994#ca205832-d532-11e4-996d-dc85deaed994</Ид> 
  <Наименование>Носки m0e0107-0055 BNM, Носки m0e0107-0055 BNM (42-45)</Наименование> 
  <БазоваяЕдиница Код="796" НаименованиеПолное="" МеждународноеСокращение="PCE">шт.</БазоваяЕдиница> 
  <ЦенаЗаЕдиницу>80</ЦенаЗаЕдиницу> 
  <Количество>132</Количество> 
  <Сумма>10560</Сумма> 
- <ЗначенияРеквизитов>
- <ЗначениеРеквизита>
  <Наименование>ВидНоменклатуры</Наименование> 
  <Значение>Товар</Значение> 
  </ЗначениеРеквизита>
- <ЗначениеРеквизита>
  <Наименование>ТипНоменклатуры</Наименование> 
  <Значение>Товар</Значение> 
  </ЗначениеРеквизита>
  </ЗначенияРеквизитов>
  </Товар>

Re: Выгрузка в 1С и единственная комплектация

Возможно ли модулем переопределить данную функцию?
Просьба к администраторам перенести эту раздел "Вопросы по разработке модулей и API системы"