Запись объектов
Введение
Команды записи поддерживаются только на сервере справочников.
Ниже приводятся минимально допустимые наборы атрибутов объектов. Для получения списка всех атрибутов объекта — выполните чтение соответствующего справочника.
Логика записи — вставка или обновление.
Ключевым атрибутом считается GUIDString.
Связи с родительскими объектами — по атрибуту MainParentGUID.
Если какие-то атрибуты не заполнены — они игнорируются.
Если атрибуту надо определить пустое значение — укажите «».
Удаление записей — выполняется установкой статуса rsDeleted, при этом фактически записи в базе данных не удаляются.
Чтобы избежать дублирования идентификаторов при создании элемента через XML-API, в таблице GENERATORS используйте значение SIFR=1. Генератор будет использоваться для сквозной идентификации в таблицах:
- MENUITEMS
- MODIFIERS
- DISCOUNTS
- DISCOUNTDETAILS
- MODISCHEMEDETAILS.
Получение меню
<?xml version="1.0" encoding="utf-8"?>
<RK7Query>
<RK7CMD CMD="GetRefData" RefName="MenuItems"/>
</RK7Query>
Вставка товара
<?xml version="1.0" encoding="utf-8"?>
<RK7Query>
<RK7Command CMD="SetRefData" RefName="MenuItems">
<Items>
<Item GUIDString="{5B3537CE-ECF0-4D6A-B0AE-F095FC4F0522}" MainParentIdent="{a70ab9c0-934b-49e4-91a8-cb2e85f1cbf2}" Code="3" Name="Чай другой" AltName="" Status="rsActive" TaxDishType="1" ExtCode="3" PRICETYPES-0="1000"/>
<Item GUIDString="{5a76323c-3a58-4bd8-8a91-478ca2568ecc}" MainParentIdent="{85A6B558-D59B-44F2-A103-031E473D6843}" Code="33" Name="Рыба" AltName="" Status="rsActive" TaxDishType="1" ExtCode="33" PRICETYPES-0="5000" CLASSIFICATORGROUPS-2560="27"/>
<Item GUIDString="{5e787f73-da50-438c-96f9-70926422ef45}" MainParentIdent="{85A6B558-D59B-44F2-A103-031E473D6843}" Code="32" Name="Котлета" AltName="" Status="rsActive" TaxDishType="1" ExtCode="32" PRICETYPES-0="19040" CLASSIFICATORGROUPS-2560="27"/>
<Item GUIDString="{d9fd4966-478a-48ef-b6af-1f5f9d998d43}" MainParentIdent="{d85701de-d4c2-4843-9d49-55228e506738}" Code="31" Name="Плюшка" AltName="" Status="rsActive" TaxDishType="1" ExtCode="31" PRICETYPES-0="8000" CLASSIFICATORGROUPS-2560="27"/>
<Item GUIDString="{feeabc44-673c-4898-aa08-c199fc1174c5}" MainParentIdent="{5e5d99e1-3c3a-49f3-8036-85c15f15ca0d}" Code="30" Name="Чай с молоком" AltName="" Status="rsActive" TaxDishType="1" ExtCode="30" PRICETYPES-0="9000" CLASSIFICATORGROUPS-2560="27"/>
</Items>
</RK7Command>
</RK7Query>
| Атрибут | Тип значения | |
|---|---|---|
| GUIDString | GUID | Уникальный идентификатор объекта |
| MainParentIdent | GUID/Ident | Ссылка на родителя. Родитель должен существовать или быть в xml ранее |
| Code | Integer | Код объекта (уникальный, для быстрого доступа) |
| ExtCode | Integer | Внешний код объекта (уникальный, для внешних систем) |
| Name | string | Название товара |
| Status | rsActive, rsInactive, rsDeleted | Статус объекта (активен (доступен), недоступен, удален) |
| PRICETYPES-0 | integer | Цена (в копейках) для типа цены (0 - по умолчанию) |
| TaxDishType | integer | Тип налога |
| CLASSIFICATORGROUPS-2560 | GUID/Ident | Ссылка на категорию, где 2560 - ID классификации |
Сразу можно перечислить несколько цен и принадлежность блюда к нескольким категориям.
Результат:
<?xml version="1.0" encoding="utf-8"?>
<RK7QueryResult ServerVersion="7.5.3.1" XmlVersion="88" Status="Ok" Processed="1">
<CommandResult CMD="SetRefData" Status="Ok" ErrorText="" DateTime="2013-05-16T18:16:18" WorkTime="16"/>
</RK7QueryResult>
Вставка расширенных свойств
<RK7Query>
<RK7Command CMD="SetRefData" RefName="MenuItems">
<Items>
<Item GUIDString="{DA3434A6-AEC3-4D4B-B982-9AE2BD9BA83F}" genBGU="test" Status="rsActive"/>
</Items>
</RK7Command>
</RK7Query>
Где расширенное свойство называется BGU, но указывать нужно genBGU.
В версии 7.5.4, для внесения изменений в расширенное свойство по XML интерфейсу к расширенному свойству кроме основного типа, нужно добавить еще 1 тип, с идентификатором 2560. В списке типов без названия, ярлык — белый листок.
Создание товарных групп
<?xml version="1.0" encoding="utf-8"?>
<RK7Query>
<RK7Command CMD="SetRefData" RefName="CATEGLIST">
<Items>
<Item GUIDString="{85A6B558-D59B-44F2-A103-031E473D6843}" Code="20" Name="Кухня" AltName="" Status="rsActive" ExtCode="12" />
<Item GUIDString="{a70ab9c0-934b-49e4-91a8-cb2e85f1cbf2}" MainParentIdent="{85A6B558-D59B-44F2-A103-031E473D6843}" Code="13" Name="Вторые блюда" AltName="" Status="rsActive" ExtCode="14" />
<Item GUIDString="{5e5d99e1-3c3a-49f3-8036-85c15f15ca0d}" Code="21" Name="Бар" AltName="" Status="rsActive" ExtCode="16" />
<Item GUIDString="{d85701de-d4c2-4843-9d49-55228e506738}" Code="22" Name="Другое" AltName="" Status="rsActive" ExtCode="19" />
</Items>
</RK7Command>
</RK7Query>
Если возвращает ошибку, пропишите в тег RK7Query UserGUID, UserID и UserPass:
<?xml version="1.0" encoding="utf-8"?>
<RK7Query UserGUID="{39537C9D-E05D-401F-A50E-87EDBED475D7}" UserID="1000233" UserPass="123">
<RK7Command CMD="SetRefData" RefName="CATEGLIST">
<Items>
<Item GUIDString="{85A6B558-D59B-44F2-A103-031E473D6843}" Code="20" Name="Кухня" AltName="" Status="rsActive" ExtCode="12" />
<Item GUIDString="{a70ab9c0-934b-49e4-91a8-cb2e85f1cbf2}" MainParentIdent="{85A6B558-D59B-44F2-A103-031E473D6843}" Code="13" Name="Вторые блюда" AltName="" Status="rsActive" ExtCode="14" />
<Item GUIDString="{5e5d99e1-3c3a-49f3-8036-85c15f15ca0d}" Code="21" Name="Бар" AltName="" Status="rsActive" ExtCode="16" />
<Item GUIDString="{d85701de-d4c2-4843-9d49-55228e506738}" Code="22" Name="Другое" AltName="" Status="rsActive" ExtCode="19" />
</Items>
</RK7Command>
</RK7Query>
Обязательные поля:
| Атрибут | Тип значения | |
|---|---|---|
| GUIDString | GUID | Уникальный идентификатор объекта |
| MainParentIdent | GUID | Ссылка на родителя. Родитель должен существовать или быть в xml ранее |
| Name | string | Название товара |
Дополнительные поля:
| Атрибут | Тип значения | |
|---|---|---|
| Code | Integer | Код объекта (уникальный, для быстрого доступа) |
| AltName | string | Альтернативное имя |
| ExtCode | Integer | Внешний код объекта (уникальный, для внешних систем) |
| Status | rsActive, rsInactive, rsDeleted | Статус объекта (активен (доступен), недоступен, удален) |
Результат успешного выполнения:
<?xml version="1.0" encoding="utf-8"?>
<RK7QueryResult ServerVersion="7.5.3.1" XmlVersion="88" Status="Ok" Processed="1">
<CommandResult CMD="SetRefData" Status="Ok" ErrorText="" DateTime="2013-05-16T18:49:12" WorkTime="0"/>
</RK7QueryResult>
Создание классификаций
Есть ограничение на количество классификаций. При достижении ограничения сервер вернет ошибку.
<?xml version="1.0" encoding="utf-8" ?>
<RK7Query UserGUID="{39537C9D-E05D-401F-A50E-87EDBED475D7}" UserID="1000233" UserPass="123">
<RK7Command CMD="SetRefData" RefName="classificatorgroups">
<Items>
<Item Status="3" Name="Новая классификация" AltName="New Classification" Ident="1024" GUIDString="{72DEC7B5-C57E-4A96-ACEB-881ABB35F06A}" />
</Items>
</RK7Command>
</RK7Query>
Ident при генерации новой классификации нужно задавать вручную, он должен быть кратен 256. Все что не кратно 256 будет считаться категорией.
Обязательные поля:
| Атрибут | Тип значения | |
|---|---|---|
| UserGUID | GUID | Уникальный идентификатор пользователя |
| UserID | Integer | Идентификатор пользователя |
| UserPass | Integer | Пароль пользователя |
| GUIDString | GUID | Уникальный идентификатор объекта |
| Ident | Integer | Уникальный идентификатор объекта |
| Name | string | Название товара |
Создание категорий
<?xml version="1.0" encoding="utf-8" ?>
<RK7Query>
<RK7Command CMD="SetRefData" RefName="classificatorgroups">
<Items>
<Item Status="3" Name="новая категория" AltName="new category" MainParentIdent="768" Ident="773" GUIDString="{5C6C9489-9B22-4248-ABB4-85498686E4CE}" />
</Items>
</RK7Command>
</RK7Query>
Ident при генерации также необходимо задавать вручную, он должен быть по значению больше MainParentIdent и меньше MainParentIdent + 256.
Обязательные поля:
| Атрибут | Тип значения | |
|---|---|---|
| GUIDString | GUID | Уникальный идентификатор объекта |
| MainParentIdent | GUID | Ссылка на родительскую классификацию. Родитель должен существовать или быть в xml ранее |
| Ident | Integer | Уникальный идентификатор объекта |
| Name | string | Название товара |
Создание модификаторов
<?xml version="1.0" encoding="utf-8"?>
<RK7Query>
<RK7Command CMD="SetRefData" RefName="modifiers">
<Items>
<Item GUIDString="{6E998743-E7FD-47F8-B501-B7B97F20EA83}"
Code="31"
Name="Кетчуп"
AltName="ketchup"
MainParentIdent="1000070"
Status="rsActive"
SalesTerms_StartSale="3625400821882"
SalesTerms_StopSale="3625400821882"
UseStartSale="0"
UseStopSale="0"
ExtCode="7"
ShortName=""
AltShortName=""
MaxOneDish="1"
Comment="это кетчуп"
Weight="1"
Kurs="0"
SaveInCheck="1"
AddToName="0"
ReplaceName="0"
InputName="0"
AddMenuItemPrice="0"
UseLimitedQnt="1"
UseFormatInput="0"
UseKurs="0"
PRICETYPES-1000231="4500"
PRICETYPES-3="5000"
PRICETYPES-4="9223372036854775807"
TRADEGROUPS-1000132="3"
TRADEGROUPS-1000271="3"
TRADEGROUPS-7="3" />
</Items>
</RK7Command>
</RK7Query>
Обязательные поля:
| Атрибут | Тип значения | |
|---|---|---|
| GUIDString | GUID | Уникальный идентификатор объекта |
| MainParentIdent | GUID | Ссылка на родительскую классификацию. Родитель должен существовать или быть в xml ранее |
| Name | string | Название товара |
Где:
- SalesTerms_StartSale — дата начала продаж
- SalesTerms_StopSale — дата конца продаж
- PRICETYPES-1000231 — указание цены в копейках для типа цены с Ident = 1000231
- TRADEGROUPS-1000132=«3» — указание значения для торговой группы с Ident = 1000132
Создание схем модификаторов
<?xml version="1.0" encoding="utf-8"?>
<RK7Query>
<RK7Command CMD="SetRefData" RefName="modischemes">
<Items>
<Item GUIDString="{644BDCC5-9211-4B45-B114-3C73722E9117}"
Code="3"
Name="Схема для соусов"
AltName="Scheme sauce"
MainParentIdent="0"
Status="3"
ModiSchemeType="1"
AutoOpen="0"
IgnoreDefaultForKitchen="0"
/>
</Items>
</RK7Command>
</RK7Query>
Где:
- MainParentIdent — родительский сет
- Если есть ModiSchemeType — тип схемы
- AutoOpen — флаг автооткрытия
- IgnoreDefaultForKitchen — флаг игнорировать «по умолчанию»
Назначение схемы модификатора на блюдо
<?xml version="1.0" encoding="utf-8"?>
<RK7Query>
<RK7Command CMD="SetRefData" RefName="menuitems">
<Items>
<Item GUIDString="{A94581EE-E6F7-4063-8275-0E35E4E9726F}"
ModiScheme="100013" />
</Items>
</RK7Command>
</RK7Query>
Где ModiScheme — это Ident схемы модификаторов.