[ОТВЕТИТЬ]
Опции темы
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, время: 19:03.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.