|
 |
 |
 |

XML Schema: CommerceInfo.biz
Данная схема предназначена
для обмена коммерческой информацией. Схема не претендует на законченный стандарт, планируется ее дальнейшее развитие и совершенствование. Предусматривается использование данной схемы, в частности, для обмена:
· каталогами товаров;
· коммерческими предложениями;
· документами.
Формирование коммерческих предложений по каталогу.
Предложение практически совпадает с одной строкой «обычного» прайс-листа. Предлагается такой-то товар по такой-то цене, имеющийся в наличии в таком-то количестве. Например, сахарный песок по цене 100 рублей за мешок, на складе имеется 125 мешков. Предложения группируются в Пакет предложений, в котором задается общая часть всех предложений (аналог «шапки» прайс-листа).
Для того чтобы получатели предложений могли понять, какой товар предлагается, последний должен быть описан. Описание товара и его классификация «складываются» в Каталог. Каталог может быть «внутренним», т.е. вложенным в тот же документ, что и пакет предложений, и составленным непосредственно автором пакета предложений. Он также может быть «внешним» – составленным одной из известной фирм. В этом случае в пакете предложений оговаривается, на какой каталог (классификатор) он ориентирован. Для однозначного определения товара в последнем случае достаточно ссылки (идентификатора товара во внешнем каталоге), т.е. в тот же документ, что и пакет предложений, каталог товаров можно вообще не включать. Таким образом, каталог товаров можно рассматривать как некий классификатор. Следовательно, в каталоге должен быть оговорен список Свойств (по каким критериям производится классификация). Устойчивые сочетания свойств удобно фиксировать в Наборы свойств (например, «свойства видеомагнитофона», «свойства телевизора»). Для указания, какие свойства (или наборы свойств) доступны (могут быть определены, обязательно должны быть указаны) для всего каталога, для его группы или для отдельного товара, используются Ссылки на свойства (Ссылки на наборы Свойств). Каталог (классификатор) обычно создается многоуровневым (т.е. имеющим разветвленное дерево категорий (Групп), к которым можно отнести товар). Иногда однозначная классификация может вызвать затруднения, поэтому для удобства разрешается включать товары сразу в несколько категорий. Но при этом одна из них должна быть выбрана в качестве «основной». Например, радио-будильник можно отнести как к категории «Радиоприемники», так и к категории «Будильники», но в первую очередь, радио-будильник является радиоприемником. При разработке классификаторов принято для каждой позиции указывать Аналоги (например, для лекарства это – другие лекарства аналогичного действия, для запчастей – запчасти, которые можно поставить вместо данной).
Указание, какими собственно свойствами из заданных в каталоге может обладать товар (или группа), достигается с помощью Ссылки на свойство (при этом еще можно задать обязательность заполнения данного свойства). Аналогичный тип элемента создан и для набора (ссылка на набор свойств).
Для хранения значений свойств, в том числе и дополнительной, не предусмотренной классификатором информации, служит специальный тип элемента ЗначениеСвойства.
В итоге, для опубликования своего прайс-листа (составления своего пакета предложений) надо сделать следующее:
1) Классифицировать свои товары
a. Это можно сделать или путем составления собственного классификатора, для чего нужно:
i. составить список свойств, по которым будет производится классификация,
ii. объединить устойчивые сочетания свойств в наборы свойств,
iii. составить иерархический список категорий (групп),
iv. отнести каждый товар к одной или нескольким категориям,
v. определить для каждого товара его аналоги;
b. или путем нахождения своих товаров во внешнем классификаторе;
i. если некоторые товары не найдены во внешнем классификаторе, то для них (и только для них!) придется составлять внутренний классификатор.
2) Отправить пакет предложений.
a. Если при составлении пакета предложений оказалось достаточно внешнего классификатора, то отправленный файл будет содержать только пакет предложений.
b. Если для составления пакета (всего или его части) понадобился внутренний классификатор, то в отправляемый файл придется включить внутренний классификатор.
Обмен документами
В задачу, решаемую с помощью данной схемы, не входит обмен произвольными документами. Также не входят задачи поддержки распределенной базы данных. Схема описывает документы, сопровождающие наиболее распространенные торговые (хозяйственные) операции:
· Заказ товара;
· Cчет на оплату;
· Отпуск товара;
· Счет-фактура;
· Возврат товара;
· Передача товара на реализацию;
· Возврат товара с реализации;
· Отчет о продажах комиссионного товара;
· Выплата наличных денег;
· Возврат наличных денег;
· Выплата безналичных денег;
· Возврат безналичных денег.
Причем для предприятий (фирм) – отправителя и получателя XML- документа – указанные хозяйственные операции представляются разными документами. Например «Отпуск товара» для отправителя сопровождается оформлением «расходной накладной» («накладной на отпуск товара»), а для получателя – оформлением «приходной накладной». Программа автоматизации учета может, исходя из вида хозяйственной операции и роли, которая указана для данного предприятия, «понять», является ли «собственное предприятие» (от лица которого автоматизируется учет в программе) получателем данного документа. Роли предусмотрены следующие:
· Продавец;
· Покупатель;
· Плательщик;
· Получатель.
Например, если в обрабатываемом XML-документе, описывающем «Отпуск товара» роль «собственного предприятия» обозначена как «Покупатель», то это означает, что XML-документ описывает расходную накладную поставщика, и ее следует импортировать в учетную систему как «накладную на поступление товара».
Содержание:
Иерархия элементов схемы
Сводная таблица элементов и атрибутов
Принятые обозначения:
- [] - необязательный
- []* - ноль или более раз
- + - один или более раз
CommerceInfo.biz
Элементы
Адрес в ICQ контакта. Представляет собой текстовую строку.
| синтаксис: |
<
ICQ
>
</
ICQ
>
|
| состав: |
textOnly
|
| порядок: |
seq
|
| вышестоящие: |
Контакт
|
| дочерние: |
Не разрешено наличие дочерних элементов, если состав - textOnly.
|
| атрибуты: |
(нет)
|
| модель: |
open (по умолчанию)
|
| исходный текст: |
<ElementType name="ICQ" content="textOnly" order="seq">
<description>Адрес в ICQ контакта. Представляет собой текстовую строку.</description>
</ElementType>
|
Определяет аналог товара, т.е. устанавливает соответствие между одним товаром и другим товаром. Содержит:ссылку на товар.
| синтаксис: |
<
Аналог
>
</
Аналог
>
|
| состав: |
eltOnly
|
| порядок: |
seq
|
| вышестоящие: |
Товар
|
| дочерние: |
СсылкаНаТовар
|
| атрибуты: |
Описание
,
Сайт
|
| модель: |
open (по умолчанию)
|
| исходный текст: |
<ElementType name="Аналог" content="eltOnly" order="seq">
<description>Определяет аналог товара, т.е. устанавливает соответствие между одним товаром и другим товаром. Содержит:ссылку на товар.</description>
<AttributeType name="Описание" dt:type="string" required="no">
<description>Произвольной описание соответствия (например, в каких случаях данный аналог может использоваться).</description>
</AttributeType>
<AttributeType name="Сайт" dt:type="string" required="no">
<description>Адрес (URL) по которому можно найти дополнительную информацию.</description>
</AttributeType>
<attribute type="Описание"/>
<attribute type="Сайт"/>
<element type="СсылкаНаТовар" minOccurs="1" maxOccurs="1"/>
</ElementType>
|
Содержит информацию о банке в объеме, необходимом для оформления (и передачи) документов.
| синтаксис: |
<
Банк
>
</
Банк
>
|
| состав: |
eltOnly
|
| порядок: |
seq
|
| вышестоящие: |
КоммерческаяИнформация
|
| дочерние: |
ДополнительныйРеквизит
|
| атрибуты: |
Адрес
,
БИК
,
Идентификатор
,
Комментарий
,
Местонахождение
,
Наименование
,
НомерСчета
,
Телефон
|
| модель: |
open (по умолчанию)
|
| исходный текст: |
<ElementType name="Банк" content="eltOnly" order="seq">
<description> Содержит информацию о банке в объеме, необходимом для оформления (и передачи) документов.</description>
<AttributeType name="Идентификатор" dt:type="id" required="yes">
<description>Идентификатор.</description>
</AttributeType>
<AttributeType name="Наименование" dt:type="string" required="yes">
<description>Наименование банка.</description>
</AttributeType>
<AttributeType name="Местонахождение" dt:type="string" required="no">
<description>Местонахождение банка.</description>
</AttributeType>
<AttributeType name="БИК" dt:type="string" required="no">
<description>БИК.</description>
</AttributeType>
<AttributeType name="НомерСчета" dt:type="string" required="no">
<description>Корреспондентский счет банка.</description>
</AttributeType>
<AttributeType name="Адрес" dt:type="string" required="no">
<description>Индекс, почтовый адрес банка.</description>
</AttributeType>
<AttributeType name="Телефон" dt:type="string" required="no">
<description>Телефон банка.</description>
</AttributeType>
<AttributeType name="Комментарий" dt:type="string" required="no">
<description>Произвольный сопроводительный текст.</description>
</AttributeType>
<attribute type="Идентификатор"/>
<attribute type="Наименование"/>
<attribute type="Местонахождение"/>
<attribute type="БИК"/>
<attribute type="НомерСчета"/>
<attribute type="Адрес"/>
<attribute type="Телефон"/>
<attribute type="Комментарий"/>
<element type="ДополнительныйРеквизит" minOccurs="0" maxOccurs="*"/>
</ElementType>
|
Служит для задания значений перечислений
| синтаксис: |
<
ВариантСвойства
/> |
| состав: |
empty
|
| порядок: |
seq
|
| вышестоящие: |
Свойство
|
| дочерние: |
(none)
|
| атрибуты: |
Идентификатор
,
Наименование
|
| модель: |
open (по умолчанию)
|
| исходный текст: |
<ElementType name="ВариантСвойства" content="empty" order="seq">
<description> Служит для задания значений перечислений</description>
<AttributeType name="Идентификатор" dt:type="string" required="yes">
<description>Идентификатор элемента перечисления. Уникально в пределах свойства.</description>
</AttributeType>
<AttributeType name="Наименование" dt:type="string" required="yes">
<description>Название варианта значения свойства.</description>
</AttributeType>
<attribute type="Идентификатор"/>
<attribute type="Наименование"/>
</ElementType>
|
Группа (категория) обладает (характеризуется) практически теми же возможностями, что и «товар». За исключением того, что единица указывает на значение по умолчанию, группа не имеет аналогов.
| синтаксис: |
<
Группа
>
</
Группа
>
|
| состав: |
eltOnly
|
| порядок: |
seq
|
| вышестоящие: |
Каталог
|
| дочерние: |
ЗначениеСвойства
,
СсылкаНаГруппу
,
СсылкаНаНаборСвойств
,
СсылкаНаСвойство
|
| атрибуты: |
Единица
,
Идентификатор
,
ИдентификаторВКаталоге
,
Наименование
,
Родитель
|
| модель: |
open (по умолчанию)
|
| исходный текст: |
<ElementType name="Группа" content="eltOnly" order="seq">
<description>Группа (категория) обладает (характеризуется) практически теми же возможностями, что и «товар». За исключением того, что единица указывает на значение по умолчанию, группа не имеет аналогов.</description>
<AttributeType name="Идентификатор" dt:type="id" required="yes">
<description>Уникален в рамках всего документа.</description>
</AttributeType>
<AttributeType name="ИдентификаторВКаталоге" dt:type="string" required="yes">
<description>Идентификатор в каталоге Уникален в пределах каталога. Способ генерации идентификатора товара может зависеть от каталога, например, это может быть уникальный номер товара в каталоге, а может быть GUID.</description>
</AttributeType>
<AttributeType name="Наименование" dt:type="string" required="yes">
<description>Наименование группы.</description>
</AttributeType>
<AttributeType name="Родитель" dt:type="idref">
<description>Идентификатор группы, к которой принадлежит данная группа.</description>
</AttributeType>
<AttributeType name="Единица" dt:type="string" required="no">
<description>Краткое наименование единицы измерения по умолчанию.</description>
</AttributeType>
<attribute type="Идентификатор"/>
<attribute type="ИдентификаторВКаталоге"/>
<attribute type="Наименование"/>
<attribute type="Родитель"/>
<attribute type="Единица"/>
<element type="СсылкаНаНаборСвойств" minOccurs="0" maxOccurs="*"/>
<element type="СсылкаНаСвойство" minOccurs="0" maxOccurs="*"/>
<element type="СсылкаНаГруппу" minOccurs="0" maxOccurs="*"/>
<element type="ЗначениеСвойства" minOccurs="0" maxOccurs="*"/>
</ElementType>
|
Определяет набор свойств документа.
Содержит списки позиций документа (состав), список дополнительных (накладных) расходов, суммы налогов, значения дополнительных свойств документа.
| синтаксис: |
<
Документ
>
</
Документ
>
|
| состав: |
eltOnly
|
| порядок: |
seq
|
| вышестоящие: |
КоммерческаяИнформация
|
| дочерние: |
ДополнительныйРасход
,
ДополнительныйРеквизит
,
ПредприятиеВДокументе
,
СуммаНалога
,
ТоварнаяПозиция
|
| атрибуты: |
Валюта
,
Время
,
Дата
,
Комментарий
,
Кратность
,
Курс
,
Номер
,
СрокПлатежа
,
Сумма
,
ХозОперация
|
| модель: |
open (по умолчанию)
|
| исходный текст: |
<ElementType name="Документ" content="eltOnly" order="seq">
<description>Определяет набор свойств документа.
Содержит списки позиций документа (состав), список дополнительных (накладных) расходов, суммы налогов, значения дополнительных свойств документа.</description>
<AttributeType name="ХозОперация" dt:type="enumeration" required="yes" dt:values="Order PayableBill Sale Invoice BackSale Comission BackComission ReportComission Cash BackCash Payment BackPayment">
<description>Определяет вид хозяйственной операции, производимой данным документом. Представляет собой перечисление со следующими возможными значениями:·
<pre>
Заказ товара (Order);
Cчет на оплату (PayableBill);·
Отпуск товара (Sale);
Счет-фактура (Invoice);
Возврат товара (BackSale);·
Передача товара на реализацию (Comission);
Возврат товара с реализации (BackComission);
Отчет о продажах комиссионного товара (ReportComission);
Выплата наличных денег (Cash);
Возврат наличных денег (BackCash);
Выплата безналичных денег (Payment);
Возврат безналичных денег (BackPayment);
</pre>
</description>
</AttributeType>
<AttributeType name="Номер" dt:type="string" required="yes">
<description>Номер документа.</description>
</AttributeType>
<AttributeType name="Дата" dt:type="date" required="yes">
<description>Дата документа.</description>
</AttributeType>
<AttributeType name="Время" dt:type="time" required="no">
<description>Время документа.</description>
</AttributeType>
<AttributeType name="СрокПлатежа" dt:type="date" required="no">
<description>Дата, до которой документ должен быть оплачен.</description>
</AttributeType>
<AttributeType name="Сумма" dt:type="float" required="no">
<description>Общая сумма документа в указанной валюте.</description>
</AttributeType>
<AttributeType name="Комментарий" dt:type="string" required="no">
<description>Произвольный сопроводительный текст.</description>
</AttributeType>
<AttributeType name="Валюта" dt:type="string" required="no">
<description>Валюта документа.</description>
</AttributeType>
<AttributeType name="Курс" dt:type="float" required="no">
<description>Курс валюты по отношению к национальной валюте (рублю).</description>
</AttributeType>
<AttributeType name="Кратность" dt:type="number" required="no">
<description>Кратность валюты по отношению к национальной валюте (рублю).</description>
</AttributeType>
<attribute type="ХозОперация"/>
<attribute type="Номер"/>
<attribute type="Дата"/>
<attribute type="Время"/>
<attribute type="СрокПлатежа"/>
<attribute type="Сумма"/>
<attribute type="Комментарий"/>
<attribute type="Валюта"/>
<attribute type="Курс"/>
<attribute type="Кратность"/>
<element type="ПредприятиеВДокументе" minOccurs="1" maxOccurs="*"/>
<element type="ТоварнаяПозиция" minOccurs="0" maxOccurs="*"/>
<element type="СуммаНалога" minOccurs="0" maxOccurs="*"/>
<element type="ДополнительныйРасход" minOccurs="0" maxOccurs="*"/>
<element type="ДополнительныйРеквизит" minOccurs="0" maxOccurs="*"/>
</ElementType>
|
Определяет дополнительные расходы по документу в целом или по отдельной товарной позиции.
| синтаксис: |
<
ДополнительныйРасход
/> |
| состав: |
empty
|
| порядок: |
seq
|
| вышестоящие: |
Документ
,
ТоварнаяПозиция
|
| дочерние: |
(none)
|
| атрибуты: |
Комментарий
,
Сумма
|
| модель: |
open (по умолчанию)
|
| исходный текст: |
<ElementType name="ДополнительныйРасход" content="empty" order="seq">
<description>Определяет дополнительные расходы по документу в целом или по отдельной товарной позиции.</description>
<AttributeType name="Сумма" dt:type="float" required="yes">
<description>Сумма дополнительного расхода в валюте документа.</description>
</AttributeType>
<AttributeType name="Комментарий" dt:type="string" required="no">
<description>Текстовое описание дополнительного расхода.</description>
</AttributeType>
<attribute type="Сумма"/>
<attribute type="Комментарий"/>
</ElementType>
|
Предназначен для задания дополнительных реквизитов элементов (документов и справочников).
| синтаксис: |
<
ДополнительныйРеквизит
/> |
| состав: |
empty
|
| порядок: |
seq
|
| вышестоящие: |
Банк
,
Документ
,
Контрагент
,
РасчетныйСчет
,
Склад
,
ТоварнаяПозиция
|
| дочерние: |
(none)
|
| атрибуты: |
Значение
,
Наименование
|
| модель: |
open (по умолчанию)
|
| исходный текст: |
<ElementType name="ДополнительныйРеквизит" content="empty" order="seq">
<description>Предназначен для задания дополнительных реквизитов элементов (документов и справочников).</description>
<AttributeType name="Наименование" dt:type="string" required="yes">
<description>Наименование реквизита.</description>
</AttributeType>
<AttributeType name="Значение" dt:type="string" required="yes">
<description>Значение реквизита.</description>
</AttributeType>
<attribute type="Наименование"/>
<attribute type="Значение"/>
</ElementType>
|
Определяет свойство и его значение
| синтаксис: |
<
ЗначениеСвойства
/> |
| состав: |
empty
|
| порядок: |
seq
|
| вышестоящие: |
Группа
,
ПакетПредложений
,
Предложение
,
Товар
|
| дочерние: |
(none)
|
| атрибуты: |
Значение
,
ИдентификаторКаталога
,
ИдентификаторСвойства
|
| модель: |
open (по умолчанию)
|
| исходный текст: |
<ElementType name="ЗначениеСвойства" content="empty" order="seq">
<description>Определяет свойство и его значение</description>
<AttributeType name="ИдентификаторКаталога" dt:type="uuid" required="yes">
<description>Идентификатор каталога, задающего свойство. </description>
</AttributeType>
<AttributeType name="ИдентификаторСвойства" dt:type="string" required="yes">
<description>Идентификатор свойства. </description>
</AttributeType>
<AttributeType name="Значение" dt:type="string" required="yes">
<description>Значение свойства.</description>
</AttributeType>
<attribute type="ИдентификаторКаталога"/>
<attribute type="ИдентификаторСвойства"/>
<attribute type="Значение"/>
</ElementType>
|
Каталог товаров служит для «классификации» товаров. Может составляться разными предприятиями (например, классификация товаров «по 1С»). Определяется уникальным идентификатором каталога (для этой цели предлагается использовать GUID), чтобы можно было различать каталоги, составленные разными организациями. Содержит единицу измерения товаров в каталоге по умолчанию (Рекомендуется при задании единиц измерения придерживаться ОКЕИ), список самих товаров и их групп (категорий), список возможных свойств и наборов свойств товаров данного каталога, а также списки ссылок на наборы свойств и свойства, задающие присущие для всех товаров каталога свойства.
| синтаксис: |
<
Каталог
>
</
Каталог
>
|
| состав: |
eltOnly
|
| порядок: |
seq
|
| вышестоящие: |
КоммерческаяИнформация
|
| дочерние: |
Группа
,
НаборСвойств
,
Свойство
,
СсылкаНаНаборСвойств
,
СсылкаНаСвойство
,
Товар
|
| атрибуты: |
Владелец
,
Единица
,
Идентификатор
,
Наименование
,
Описание
|
| модель: |
open (по умолчанию)
|
| исходный текст: |
<ElementType name="Каталог" content="eltOnly" order="seq">
<description>Каталог товаров служит для «классификации» товаров. Может составляться разными предприятиями (например, классификация товаров «по 1С»). Определяется уникальным идентификатором каталога (для этой цели предлагается использовать GUID), чтобы можно было различать каталоги, составленные разными организациями. Содержит единицу измерения товаров в каталоге по умолчанию (Рекомендуется при задании единиц измерения придерживаться ОКЕИ), список самих товаров и их групп (категорий), список возможных свойств и наборов свойств товаров данного каталога, а также списки ссылок на наборы свойств и свойства, задающие присущие для всех товаров каталога свойства.</description>
<AttributeType name="Идентификатор" dt:type="uuid" required="yes">
<description>Идентификатор каталога. Должен быть уникальным во всем мире (чтобы можно было на него ссылаться).</description>
</AttributeType>
<AttributeType name="Наименование" dt:type="string" required="yes">
<description>Наименование каталога (например: классификатор товаров, составленный фирмой «1С»).</description>
</AttributeType>
<AttributeType name="Владелец" dt:type="uuid" required="yes">
<description>Идентификатор контрагента – владельца данного каталога.</description>
</AttributeType>
<AttributeType name="Описание" dt:type="string" required="no">
<description>Произвольное описание каталога (например, содержащее особые условия использования).</description>
</AttributeType>
<AttributeType name="Единица" dt:type="string" required="no">
<description>Краткое наименование единицы измерения по умолчанию.</description>
</AttributeType>
<attribute type="Идентификатор"/>
<attribute type="Наименование"/>
<attribute type="Владелец"/>
<attribute type="Описание"/>
<attribute type="Единица"/>
<element type="Группа" minOccurs="0" maxOccurs="*"/>
<element type="Товар" minOccurs="0" maxOccurs="*"/>
<element type="Свойство" minOccurs="0" maxOccurs="*"/>
<element type="НаборСвойств" minOccurs="0" maxOccurs="*"/>
<element type="СсылкаНаНаборСвойств" minOccurs="0" maxOccurs="*"/>
<element type="СсылкаНаСвойство" minOccurs="0" maxOccurs="*"/>
</ElementType>
|
Собирательный элемент для всего, что может быть упомянуто в процессе обмена
| синтаксис: |
<
КоммерческаяИнформация
>
</
КоммерческаяИнформация
>
|
| состав: |
eltOnly
|
| порядок: |
seq
|
| вышестоящие: |
No parents found. This is probably the document element.
|
| дочерние: |
Банк
,
Документ
,
Каталог
,
Контрагент
,
ПакетПредложений
,
Склад
|
| атрибуты: |
Комментарий
|
| модель: |
open (по умолчанию)
|
| исходный текст: |
<ElementType name="КоммерческаяИнформация" content="eltOnly" order="seq">
<description> Собирательный элемент для всего, что может быть упомянуто в процессе обмена</description>
<AttributeType name="Комментарий" dt:type="string" required="no">
<description>Предназначен для передачи «сопроводительной записки» в виде произвольной текстовой информации по документу.</description>
</AttributeType>
<attribute type="Комментарий"/>
<element type="Контрагент" minOccurs="0" maxOccurs="*"/>
<element type="Склад" minOccurs="0" maxOccurs="*"/>
<element type="Банк" minOccurs="0" maxOccurs="*"/>
<element type="Каталог" minOccurs="0" maxOccurs="*"/>
<element type="ПакетПредложений" minOccurs="0" maxOccurs="*"/>
<element type="Документ" minOccurs="0" maxOccurs="*"/>
</ElementType>
|
Контакт предназначен для ответа на вопросы: «Где найти?» и «Кого спросить?».
Содержит: список ФИО контактных лиц (например, список сотрудников отдела продаж), список телефонов, факсов, адресов электронной почты контакта, ISQ
|