Обнуление количества всего товара на складе при импорте CML

#
Обнуление количества всего товара на складе при импорте CML
Подскажите как реализовать сабж?
Смотрю в controller.php для импорта и что-то не пойму какой код куда вписать.
#
Re: Обнуление количества всего товара на складе при импорте CML
Интересно,  стоит вообще ждать ответа от разработчиков CMS? Или уже стоит искать тех, кому деньги платить надо?
Модератор
#
Re: Обнуление количества всего товара на складе при импорте CML
1. http://www.hostcms.ru/news/new-year-2016/
Цитата:
1— 10 января — выходной.

2. http://v8.1c.ru/edi/edi_stnd/90/CML208.XSD
   <xsd:complexType name="ОстаткиПоСкладам">
      <xsd:annotation>
         <xsd:documentation>Идентификатор склада и количество товаров на этом склате </xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="ИдСклада" type="cml:ИдентификаторГлобальныйТип" use="required"/>
      <xsd:attribute name="КоличествоНаСкладе" type="cml:КоличествоТип" use="optional"/>
   </xsd:complexType>


                  <xsd:element name="Предложение" maxOccurs="unbounded">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:group ref="cml:ИдентификаторТовара"/>
                           <xsd:element name="ИдХарактеристики" type="cml:ИдентификаторГлобальныйТип" minOccurs="0">
                              <xsd:annotation>
                                 <xsd:documentation>Идентификатор характеристики товара</xsd:documentation>
                              </xsd:annotation>
                           </xsd:element>
                           <xsd:element name="КодЕдиницыИзмерения" type="cml:ЕдиницаТип" minOccurs="0">
                              <xsd:annotation>
                                 <xsd:documentation>Код единицы измерения товара по ОКЕИ.</xsd:documentation>
                              </xsd:annotation>
                           </xsd:element>
                           <xsd:element name="Склады" type="cml:ОстаткиПоСкладам" minOccurs="0" maxOccurs="unbounded">
                              <xsd:annotation>
                                 <xsd:documentation>Идентификатор склада (из перечня складов организации) и количество на этом складе</xsd:documentation>
                              </xsd:annotation>
                           </xsd:element>
#
Re: Обнуление количества всего товара на складе при импорте CML
1. Извините, ссылку не видел.
2. Схема стандарта CML, это конечно хорошо (ничего, что 208, вы вроде 204 используете?), но можно прокомментировать, что нужно дописать в offers.xml, чтобы товар, которого нет в xml, обнулялся. Мы используем программу ТДТ (http://www.pvision.ru/tdt) для выгрузки.
Модератор
#
Re: Обнуление количества всего товара на складе при импорте CML
Мы используем последнюю, т.е. 2.0.8.
Товар, которого нет в CML, системой не будет обнуляться, т.к. данные по нему и не переданы вовсе.
Чтобы обнулить через CML необходимо в товарном предложении передать остатки по складам
<Склад ИдСклада="xxx" КоличествоНаСкладе="0"></Склад>
#
Re: Обнуление количества всего товара на складе при импорте CML
Спасибо за комментарий.
HostCMS писал(а):
Товар, которого нет в CML, системой не будет обнуляться, т.к. данные по нему и не переданы вовсе.

А почему не обрабатывать этот атрибут?
<ПакетПредложений СодержитТолькоИзменения="true">
Цитата:
Чтобы обнулить через CML

Я бы не отказался, если бы вы привели пример кода, который обнулит все остатки по всем складам в контроллере импорта CML.
Спасибо.
#
Re: Обнуление количества всего товара на складе при импорте CML
Вот вы говорите используете схему 2.0.8, а при экспорте offers.xml вижу такое:
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="2016-01-11T10:14:03">

К тому же, я не вижу, чтобы в экспорте были какие-либо поля, отвечающие за склады, о которых вы писали выше . Если бы они были, то я бы выгрузку из программы переделал под них.
Вот кусок экспорта с админки:
<?xml version="1.0" encoding="utf-8"?>
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="2016-01-11T10:14:03">
  <ПакетПредложений>
    <Наименование>Пакет предложений</Наименование>
    <ТипыЦен>
      <ТипЦены>
        <Ид>C5929D5B-35EF-28F1-DBF2-ECA4AFEF8164</Ид>
        <Наименование>Розничная</Наименование>
        <Валюта>RUR</Валюта>
      </ТипЦены>
    </ТипыЦен>
    <Предложения>
      <Предложение>
        <Ид>000000000100000001010000000001000000010109000912420000008839</Ид>
        <Артикул>15433</Артикул>
        <Наименование>БКВ 20х10х200 25А</Наименование>
        <БазоваяЕдиница НаименованиеПолное="">шт.</БазоваяЕдиница>
        <Цены>
          <Цена>
            <ИдТипаЦены>C5929D5B-35EF-28F1-DBF2-ECA4AFEF8164</ИдТипаЦены>
            <ЦенаЗаЕдиницу>390</ЦенаЗаЕдиницу>
            <Представление>390 RUR за шт.</Представление>
            <Единица>шт.</Единица>
          </Цена>
        </Цены>
        <Количество>1</Количество>
      </Предложение>
Модератор
#
Re: Обнуление количества всего товара на складе при импорте CML
amspeople,
при чем тут экспорт, если ваш вопрос касается импорта?
#
Re: Обнуление количества всего товара на складе при импорте CML
HostCMS писал(а):
при чем тут экспорт, если ваш вопрос касается импорта?

Потому что на основании вашего экспорта я бы переделал выгрузку из программы ТДТ. Чтобы она например остатки по складам выгружала. А так как вы это не делаете в своем экспорте, то я, соот-но, и не знаю, как и что правильно скармливать вашему импорту. Какие поля он парсит, а какие нет.
Модератор
#
Re: Обнуление количества всего товара на складе при импорте CML
amspeople,
как выгружать остатки вроде бы дважды ответили и привели примеры. Ориентироваться необходимо на спецификацию, посмотреть что импортируется или нет можно в Shop_Item_Import_Cml_Controller
Авторизация