Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

XML схемы почтового модуля и ввод данных : Супермаг Плюс (Супермаг 2000)

29.03.2024 15:29


13.07.2011 16:03
Mtirt
 
Урезать существующие иногда получается. Только делать это надо грамотно...
Создавать свои собственные - вот это, я думаю может быть проблематично.
13.07.2011 16:15
CrazyWolf
 
Цитата:
Mtirt Урезать существующие иногда получается. Только делать это надо грамотно...
Создавать свои собственные - вот это, я думаю может быть проблематично.
А при урезании как правильно описывать ключи? Т.е. к примеру, берем схему CD оставляем в ней только
Код:
<xs:element name="SMCARD" msdata:Locale="ru">
причем поля я оставлял только те которые выгружал в XML сам СМ+,
потом оставляем
Код:
<xs:element name="SMDISCQUANTITY" msdata:Locale="ru">
Далее идут секции ключевых полей. Я выкидываю из них все те, которые не относятся к SMCARD и SMDISCQUANTITY. В результате получаю ошибку о несоответствии первичных ключей. Можно ли как-нибудь получить более подробную информацию, что именно чему не соответствует?
Пробовал включать журнализацию - там ничего толкового не пишется :(
13.07.2011 16:33
Mtirt
 
Между прочим PriceID тоже ключевое поле для SMDISCQUANTITY.
Там составной первичный ключ по артикулу и виду цены...
Если ты его выкинул, то запись точно не добавится...
13.07.2011 18:03
CrazyWolf
 
PRICEID из SMDISCQUANTITY в стандартной схеме CD упоминается только в составе. Это описание я оставляю. Других ссылок на него нет, тем не менее CD нормально грузится.
Код:
<xs:unique name="SMDISCQUANTITY_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//SMDISCQUANTITY" />
<xs:field xpath="ARTICLE" />
<xs:field xpath="PRICEID" />
<xs:field xpath="QUANTITY" />
</xs:unique>
14.07.2011 07:22
Mtirt
 
Можешь приложить какую-нибудь небольшую xml-ку, чтобы я посмотрела?
Мне очень сложно понять, чего ты хочешь и зачем...
14.07.2011 07:37
CrazyWolf
 
Да вопрос с ключами, в общем, решился с помощью ТП, но несколько странным образом.
Получается следующее если мы стандартную схему CD урезаем до
Код:
<?xml version="1.0" encoding="windows-1251"?>
<xs:schema id="CD" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <!--Карточка складского учета-->
  <xs:element name="CD" msdata:IsDataSet="true" msdata:CaseSensitive="true" msdata:Locale="ru">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="SMCARD" msdata:Locale="ru">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ARTICLE" type="xs:string" />
              <xs:element name="GLOBALARTICLE" type="xs:string" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="SMDISCQUANTITY" msdata:Locale="ru">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ARTICLE" type="xs:string" />
              <xs:element name="PRICEID" type="xs:decimal" />
              <xs:element name="QUANTITY" type="xs:decimal" />
              <xs:element name="PERCENT" type="xs:decimal" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
    <xs:unique name="Constraint1" msdata:PrimaryKey="true">
      <xs:selector xpath=".//SMCARD" />
      <xs:field xpath="ARTICLE" />
    </xs:unique>
    <xs:unique name="SMDISCQUANTITY_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
      <xs:selector xpath=".//SMDISCQUANTITY" />
      <xs:field xpath="ARTICLE" />
      <xs:field xpath="PRICEID" />
      <xs:field xpath="QUANTITY" />
    </xs:unique>
  </xs:element>
</xs:schema>
все прекрасно грузиться, прописываются количественные скидки, остальные данные не затираются. Но при попытке переименовать схему, скажем в DS, получаем снова ошибку про несоответствие ключей.
При попытке переименовать схему скажем в CDD почтовик рапортует, что все в порядке, однако скидки не грузятся
14.07.2011 07:47
OlegON
 
У меня такое подозрение, что там просто конвертация табличек, поэтому для того, чтобы нормально этим оперировать, надо как следует знать структуру, в том числе ключи и NOT NULL столбцы без значений по умолчанию. А после того, как становится понятной структура, уже снимается необходимость делать внесения записей через почтовик, можно заморачиваться только если внешняя система уже заточена под XML именно этого формата. Я в свое время поизучал эту тему и признал ее невыгодной для себя по соотношению времени и результата. Единственное исключение составляют документы, изменяющие статус. Поскольку действующих версий Супермага достаточно много, писать что-то универсальное, с загрузкой уже проведенных документов, накладно. Тут действительно стоит загружать через почтовик. А карточки однозначно надо грузить напрямую, получая бонус в виде возможности самостоятельно обрабатывать ошибки внесения записей. Уверенности в том, что почтовик обработает абсолютно все XML корректно нет, разгребать помои в его логе не очень удобно, в общем, только для доков, меняющих статус... Это мое мнение.
14.07.2011 07:51
Mtirt
 
Тут вопрос то вообще не в карточках, а в скидках по ним.
Правда, насколько я понимаю, их еще потом по магазинам рассылать надо будет...
14.07.2011 08:14
Mtirt
 
Цитата:
CrazyWolf Но при попытке переименовать схему, скажем в DS, получаем снова ошибку про несоответствие ключей.
При попытке переименовать схему скажем в CDD почтовик рапортует, что все в порядке, однако скидки не грузятся
А зачем тебе нужно её переименовывать?
14.07.2011 08:15
OlegON
 
Цитата:
Mtirt Тут вопрос то вообще не в карточках, а в скидках по ним.
Я заметил. И за учетом многообразия того, что можно внести руками, выделил только то, что действительно нежелательно. Скидки бы тоже руками в ЦО вносил, наверное.
Часовой пояс GMT +3, время: 15:29.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.