Да вопрос с ключами, в общем, решился с помощью ТП, но несколько странным образом.
Получается следующее если мы стандартную схему 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 почтовик рапортует, что все в порядке, однако скидки не грузятся