Получение актуального меню
Последнее изменение статьи 31.07.2025
Для получения подробной информации о блюдах, доступных к продаже в данный момент времени, необходимо выполнить два запроса к API r_keeper.
- Первый запрос — получение справочника Меню. Необходим для получения названий, параметров отображения и других параметров блюд, созданных в R_Keeper.
- Второй запрос — получение блюд, доступных к продаже. Актуализирует список блюд, доступных к продаже на конкретной кассовой станции, учитывает остатки, период доступности, торговые группы и прочие ограничения, которые возможно наложить на блюда в настройках R_Keeper. Этот запрос не возвращает подробной информации об элементах меню.
Для отображения списка блюд необходимо из ответа на первый запрос выбрать лишь те блюда, идентификаторы которых содержатся в ответе на второй.
Чтобы избежать дублирования идентификаторов при создании элемента через XML-API, в таблице GENERATORS используйте значение SIFR=1. Генератор будет использоваться для сквозной идентификации в таблицах:
- MENUITEMS
- MODIFIERS
- DISCOUNTS
- DISCOUNTDETAILS
- MODISCHEMEDETAILS.
Запрос всего меню
Для получения полного списка блюд, отправьте XML-запрос:
<RK7Query>
<RK7CMD CMD="GetRefData" RefName="MENUITEMS" onlyActive="1"/>
</RK7Query>
В ответ на запрос вернется XML документ следующего вида:
<?xml version="1.0" encoding="utf-8"?><RK7QueryResult ServerVersion="7.6.0.81" XmlVersion="243" NetName="CONF_MIDSERVER"
Status="Ok" CMD="GetRefData" ErrorText="" DateTime="2019-12-30T11:47:46" WorkTime="15" Processed="1">
<RK7Reference DataVersion="151" ClassName="TRK7MenuItems" Name="MENUITEMS" MinIdent="1" MaxIdent="0" ViewRight="0"
UpdateRight="21" ChildRight="21" DeleteRight="21" XMLExport="true" XMLMask="*" LeafCollectionCount="1">
<Items>
<Item Ident="1000189" ItemIdent="1000189" SourceIdent="0" GUIDString="{02721FC1-0B02-4AA4-8E6E644F45B40FB2}" AssignChildsOnServer="false" ActiveHierarchy="true" Code="222" Name="Булка°" AltName="" MainParentIdent="1000186"
Status="rsActive" VisualType_Image="0" VisualType_BColor="536870911" VisualType_TextColor="536870911"
VisualType_Flags="bsPictureTop" SalesTerms_Flag="[]" SalesTerms_StartSale="3748606669879" SalesTerms_StopSale="3748606669879"
RightLvl="0" AvailabilitySchedule="0" UseStartSale="false" UseStopSale="false" TaxDishType="1" FutureTaxDishType="1" ExtCode="2"
ShortName="" AltShortName="" PortionWeight="0" PortionName="" AltPortion="" Kurs="0" QntDecDigits="3" ModiScheme="0"
ComboScheme="0" ModiWeight="0" CookMins="0" Comment=""
Instruct="12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567
890123456789012345678901234567890" Flags="[miUseRestControl]" TaraWeight="0" ConfirmQnt="0" MInterface="0" MinRestQnt="0"
BarCodes="" PriceMode="pmPerPiece" OpenPrice="false" DontPack="false" ChangeQntOnce="false" AllowPurchasing="false"
UseRestControl="true" UseConfirmQnt="false" CategPath="Бар\Ðлкоголь" SaleObjectType="sotMenuItem"
ComboJoinMode="cjmNone" ComboSplitMode="csmNone" AddLineMode="almJoinLines" ChangeToCombo="0" GuestsDishRating="300"
RateType="rtOneTime" MinimumTarifTime="0" MaximumTarifTime="0" IgnoredTarifTime="0" MinTarifAmount="0" MaxTarifAmount="0"
RoundTime="1" TariffRoundRule="trrMath" MoneyRoundRule="rr1Cent" DefTarifTimeLimit="0" ComboDiscount="0" LargeImagePath=""
HighLevelGroup1="1000183" HighLevelGroup2="1000186" HighLevelGroup3="0" HighLevelGroup4="0" BarCodesText="" BarcodesFullInfo="">
<RecommendedMenuItems ClassName="TRecommendedMenuItems">
<Items/>
</RecommendedMenuItems>
<Childs ClassName="tChildCollection"/>
</Item>
В ответе будет содержаться полный список блюд, с подробной информацией по каждому из них.
В случае ошибки XML-документ не будет содержать ноды RK7Reference, в атрибуте RK7QueryResult.ErrorText будет приведен текст ошибки.
Для оптимизации кэширования справочника используйте атрибут RK7QueryResult.XMLVersion.
Если с момента предыдущего запроса в справочнике меню произошли какие либо изменения, значение данного атрибута будет отличаться от предыдущего.
Получение блюд, доступных к продаже
Для выборки из справочника блюд только тех элементов, которые возможно в данный момент продать на кассе, необходимо отправить следующий запрос:
<RK7Query>
<RK7CMD CMD="GetOrderMenu" >
<Station code="1"/>
</RK7CMD>
</RK7Query>
В значении атрибута Station.code необходимо передать код станции, для которой будет актуализирован список блюд.
Дополнительно можно уточнить список по следующим параметрам:
- Order — конкретный, существующий заказ
- Waiter — официант
- Table — Стол
- OrderCategory — Категория заказа
Эти свойства могут быть добавлены к запросу в ноду RK7CMD, по аналогии со Station, однако для Order необходимо использовать атрибут guid в место code.
В ответ на запрос вернется XML документ следующего вида:
<RK7QueryResult ServerVersion="7.6.0.81" XmlVersion="243" NetName="CONF_MIDSERVER" Status="Ok" CMD="GetOrderMenu"
ErrorText="" DateTime="2019-12-30T11:37:25" WorkTime="0" Processed="1">
<PriceScale id="3" code="1" name="Основная"/>
<TradeGroup id="7" code="1" name="По умолчанию"/>
<Dishes>
<Item Ident="1000189" Price="100" quantity="3000"/>
<Item Ident="1000193" Price="100" quantity="2000"/>
<Item Ident="1000338" Price="100"/>
</Dishes>
<Modifiers>
<Item Ident="2003" ID="2003" Price="0"/>
<Item Ident="1000378" ID="1000378" Price="0"/>
</Modifiers>
</RK7QueryResult>
Обработка ошибок должна работать аналогично предыдущему запросу.
В нодах Dishes и Modifiers будет перечислен список блюд и модификаторов соответственно, доступных к продаже на данный момент.
Для каждой из позиций вернется стоимость за штуку в копейках в атрибуте Price. Price=”100” — один рубль.
Для позиций, которым заданы ограничения по количеству так же вернется атрибут quantity, указывающий на остаток блюда тысячных долях. То есть: quantity = “1000” — Одна порция.
Для демонстрации списка блюд, доступных к заказу необходимо выбрать из справочника блюд — первый запрос, лишь те блюда, которые есть в меню заказа — второй запрос.
Связать элементы можно при помощи атрибута ident.
Запрос меню с себестоимостью
При необходимости выгрузить себестоимость из r_keeper, в который настроена загрузка себестоимости из Store House 5, воспользуйтесь XML-запросом:
<?xml version="1.0" encoding="UTF-8"?>
<RK7Query >
<RK7CMD CMD="GetRefData" RefName="MENUITEMS" OnlyActive="true" WithMacroProp="1" PropMask="items.(IDENT, CODE, NAME, PRICETYPES^4)">
</RK7CMD>
</RK7Query>
В ответ на запрос вернется XML документ следующего вида:
<?xml version="1.0" encoding="utf-8"?>
<RK7QueryResult ServerVersion="7.7.0.232" XmlVersion="248" NetName="TSTWIN770" Status="Ok" CMD="GetRefData" ErrorText="" DateTime="2023-02-09T13:55:20" WorkTime="31" Processed="1" ArrivalDateTime="2023-02-09T13:55:20">
<RK7Reference DataVersion="373" ClassName="TRK7MenuItems" TotalItemCount="51">
<Items>
<Item Ident="1000015" Code="2" Name="суп" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000016" Code="3" Name="картофель жареный" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000025" Code="4" Name="Пинаколлада" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000027" Code="6" Name="Цыплёнок жаренный" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000028" Code="8" Name="Шашлык из баранины" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000042" Code="7" Name="Картофель Фри" PRICETYPES-4="2000"/>
<Item Ident="1000058" Code="12" Name="Хэппи монинг" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000059" Code="13" Name="Кофе66" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000060" Code="14" Name="Чай" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000237" Code="23" Name="Ром" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000238" Code="24" Name="Баккарди" PRICETYPES-4="10000"/>
<Item Ident="1000239" Code="25" Name="Бейлис" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000246" Code="27" Name="Молочный поросёнок" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000247" Code="28" Name="Бараньи рёбрышки" PRICETYPES-4="50000"/>
<Item Ident="1000256" Code="29" Name="Чай лимонный" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000322" Code="31" Name="Купон на 600 р." PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000492" Code="33" Name="картофельное пюре" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000972" Code="34" Name="Комбо Тест" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1000989" Code="39" Name="Штопор" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1001145" Code="41" Name="каша гречневая" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1001184" Code="42" Name="Условное блюдо" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1001295" Code="43" Name="Блюдо с открытой ценой" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1001403" Code="45" Name="Бесплатное блюдо 1" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1001404" Code="46" Name="Бесплатное блюдо 2" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1001405" Code="48" Name="ттттттт" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1001614" Code="47" Name="Сантьяго дэ Куба" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002103" Code="50" Name="BigBurger" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002104" Code="51" Name="StandBurger" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002105" Code="52" Name="SmallBurger" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002106" Code="53" Name="BigCola" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002107" Code="54" Name="StdCola" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002108" Code="55" Name="SmallCola" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002109" Code="56" Name="BigPotato" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002110" Code="57" Name="StdPotato" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002111" Code="58" Name="SmallPotato" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002119" Code="60" Name="SMALL_DINNER" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002147" Code="65" Name="Standart_Dinner" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002148" Code="66" Name="Big_Dinner" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002166" Code="74" Name="Small_COLA_2" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002229" Code="61" Name="Роллы 1" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002230" Code="75" Name="Роллы 2" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002235" Code="76" Name="Роллы 3" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002240" Code="78" Name="Роллы 4" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002245" Code="84" Name="Роллы 5" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002266" Code="91" Name="1час" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002473" Code="92" Name="Предоплата Plazius" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002474" Code="93" Name="предопл." PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002765" Code="94" Name="Акция блюдо 1" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002766" Code="95" Name="Акция блюдо 2" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002837" Code="96" Name="Акция блюдо 3" PRICETYPES-4="9223372036854775807"/>
<Item Ident="1002897" Code="98" Name="Сдача в чаевые" PRICETYPES-4="9223372036854775807"/>
</Items>
</RK7Reference>
</RK7QueryResult>
Где значение 9223372036854775807 соответствует — Не задано.
Запрос группы блюд
При необходимости выгрузить группу блюд из меню из r_keeper 7 воспользуйтесь XML-запросом.
Пример запроса для группы Бар:
<?xml version="1.0" encoding="UTF-8"?>
<RK7Query >
<RK7CMD CMD="GetRefData" RefName="CATEGLIST" OnlyActive="true" WithChildItems="2" PropMask="*">
<PROPFILTERS>
<PROPFILTER>
<PROPFILTER Name="Name" Value="Бар" />
</PROPFILTER>
</PROPFILTERS>
</RK7CMD>
</RK7Query>
В ответ на запрос вернется XML документ следующего вида:
Ответ
<?xml version="1.0" encoding="utf-8"?> <RK7QueryResult ServerVersion="7.7.0.232" XmlVersion="248" NetName="TSTWIN770" Status="Ok" CMD="GetRefData" ErrorText="" DateTime="2023-01-26T16:58:20" WorkTime="0" Processed="1" ArrivalDateTime="2023-01-26T16:58:20"> <RK7Reference DataVersion="121" ClassName="TCategListItems" Name="CATEGLIST" MinIdent="1" MaxIdent="0" ViewRight="0" UpdateRight="21" ChildRight="116" DeleteRight="21"
XMLExport="true" XMLMask="*" LeafCollectionCount="1" TotalItemCount="1"> <Items> <Item Ident="1000014" ItemIdent="1000014" SourceIdent="0" GUIDString="{912599B4-E190-4508-8871-F2CCFBA700A5}" AssignChildsOnServer="false" ActiveHierarchy="true"
Code="1" Name="Бар" AltName="" MainParentIdent="0" Status="rsActive" VisualType_Image="0" VisualType_BColor="12073565" VisualType_TextColor="16777215" VisualType_Flags="bsPictureTop"
Parent="0" Comment="" AddToOrder="false" ExtCode="1" EditRight="0" RightLvl="0" CategKind="0"> <Childs ClassName="tChildCollection"> <Child ChildIdent="1000025" IsTerminal="1"/> <Child ChildIdent="1000059" IsTerminal="1"/> <Child ChildIdent="1000060" IsTerminal="1"/> <Child ChildIdent="1000237" IsTerminal="1"/> <Child ChildIdent="1000238" IsTerminal="1"/> <Child ChildIdent="1000239" IsTerminal="1"/> <Child ChildIdent="1000989" IsTerminal="1"/> <Child ChildIdent="1001405" IsTerminal="1"/> <Child ChildIdent="1001494" IsTerminal="1"/> <Child ChildIdent="1001495" IsTerminal="1"/> <Child ChildIdent="1001614" IsTerminal="1"/> </Childs> <RIChildItems> <TRK7MenuItem ItemIdent="1000025" SourceIdent="0" GUIDString="{2ACC7522-E39E-4D72-AF74-7D8F9D7E4E08}" AssignChildsOnServer="false"
ActiveHierarchy="true" Code="4" Name="Пинаколлада" AltName="" MainParentIdent="1000014" Status="rsActive" VisualType_Image="0" VisualType_BColor="11394815"
VisualType_TextColor="16777215" VisualType_Flags="bsPictureTop" SalesTerms_Flag="[]" SalesTerms_StartSale="3561993778437" SalesTerms_StopSale="3561993778437"
RightLvl="0" AvailabilitySchedule="0" UseStartSale="false" UseStopSale="false" TaxDishType="1" Parent="1000014" ExtCode="3" ShortName="" AltShortName="" PortionWeight="0"
PortionName="" AltPortion="" Kurs="0" QntDecDigits="0" ModiScheme="0" ComboScheme="0" ModiWeight="0" CookMins="0" Comment="" Instruct="" Flags="[miOpenPrice]"
TaraWeight="0" ConfirmQnt="0" MInterface="0" MinRestQnt="0" BarCodes="[200100000001]" PriceMode="pmPerPiece" PartsPerPackage="0" OpenPrice="true" DontPack="false"
ChangeQntOnce="false" AllowPurchasing="false" UseRestControl="false" UseConfirmQnt="false" LabeledProduct="false" CategPath="Бар" SaleObjectType="sotMenuItem" ComboJoinMode="cjmNone"
ComboSplitMode="csmCanSplit" AddLineMode="almJoinLines" ChangeToCombo="0" GuestsDishRating="300" RateType="rtOneTime" MinimumTarifTime="0" MaximumTarifTime="0" IgnoredTarifTime="0"
MinTarifAmount="0" MaxTarifAmount="0" RoundTime="1" TariffRoundRule="trrMath" MoneyRoundRule="rr1Cent" DefTarifTimeLimit="0" ComboDiscount="0" LargeImagePath="" HighLevelGroup1="1000014"
HighLevelGroup2="0" HighLevelGroup3="0" HighLevelGroup4="0" BarCodesText="200100000001" BarcodesFullInfo="200100000001	1000.000" ItemKind="1" MeasureUnitID="0" Ident="1000025"> <RecommendedMenuItems ClassName="TRecommendedMenuItems"> <Items/> </RecommendedMenuItems> </TRK7MenuItem> <TRK7MenuItem ItemIdent="1000059" SourceIdent="0" GUIDString="{2057BA87-8EC1-4F49-A0FF-D25351FBA416}" AssignChildsOnServer="false" ActiveHierarchy="true" Code="13"
Name="Кофе66" AltName="" MainParentIdent="1000014" Status="rsActive" VisualType_Image="0" VisualType_BColor="-16777210" VisualType_TextColor="16777215" VisualType_Flags="bsPictureTop"
SalesTerms_Flag="[]" SalesTerms_StartSale="3562078702640" SalesTerms_StopSale="3562078702640" RightLvl="0" AvailabilitySchedule="0" UseStartSale="false" UseStopSale="false" TaxDishType="3"
Parent="1000014" ExtCode="9" ShortName="" AltShortName="" PortionWeight="0" PortionName="" AltPortion="" Kurs="0" QntDecDigits="0" ModiScheme="1000070" ComboScheme="1000070" ModiWeight="0"
CookMins="0" Comment="" Instruct="" Flags="[]" TaraWeight="0" ConfirmQnt="0" MInterface="0" MinRestQnt="0" BarCodes="" PriceMode="pmPerPiece" PartsPerPackage="0" OpenPrice="false" DontPack="false"
ChangeQntOnce="false" AllowPurchasing="false" UseRestControl="false" UseConfirmQnt="false" LabeledProduct="false" CategPath="Бар" SaleObjectType="sotMenuItem" ComboJoinMode="cjmNone"
ComboSplitMode="csmCanSplit" AddLineMode="almJoinLines" ChangeToCombo="0" GuestsDishRating="300" RateType="rtOneTime" MinimumTarifTime="0" MaximumTarifTime="0" IgnoredTarifTime="0"
MinTarifAmount="0" MaxTarifAmount="0" RoundTime="1" TariffRoundRule="trrMath" MoneyRoundRule="rr1Cent" DefTarifTimeLimit="0" ComboDiscount="0" LargeImagePath="" HighLevelGroup1="1000014"
HighLevelGroup2="0" HighLevelGroup3="0" HighLevelGroup4="0" BarCodesText="" BarcodesFullInfo="" ItemKind="1" MeasureUnitID="0" Ident="1000059"> <RecommendedMenuItems ClassName="TRecommendedMenuItems"> <Items/> </RecommendedMenuItems> </TRK7MenuItem> </RIChildItems> </Item> </Items> </RK7Reference> </RK7QueryResult>
Запрос налоговой группы для ресторана
Запрос
Запрос
<?xml version="1.0" encoding="UTF-8"?>
<RK7Query>
<RK7CMD CMD="GetRefData" RefName="AVAILABILITYSCHEDULES" WithChildItems="3" PropMask="*">
<PROPFILTERS>
<PROPFILTER Kind="AND">
<PROPFILTER Name="ObjectRefNo" Value="10"/>
<PROPFILTER Name="SalePointID" Value="1" />
</PROPFILTER>
</PROPFILTERS>
</RK7CMD>
</RK7Query>
Ответ
<?xml version="1.0" encoding="utf-8"?>
<RK7QueryResult ServerVersion="7.25.05.2000" XmlVersion="248" NetName="MIDSERV770" Status="Ok" CMD="GetRefData" ErrorText="" DateTime="2025-06-30T18:42:19" WorkTime="0" Processed="1" ArrivalDateTime="2025-06-30T18:42:19">
<RK7Reference DataVersion="144" ClassName="TAvailabilityScheduleCollGlobal" Name="AVAILABILITYSCHEDULES" MinIdent="1" MaxIdent="0" ViewRight="0" UpdateRight="0" ChildRight="0" DeleteRight="0" XMLExport="true" XMLMask="*" TotalItemCount="2">
<Items>
<Item Ident="1000002" ItemIdent="1000002" SourceIdent="0" GUIDString="{46005680-B6C7-4266-BABB-08423B9F0B6C}" SalePntKind="137" SalePointID="1" ObjectRefNo="10" ObjectIdent="1000989" AvailPeriod="109" TaxGroup="0"/>
<Item Ident="1000004" ItemIdent="1000004" SourceIdent="0" GUIDString="{23C4744F-B680-4ABC-B6B3-91A911BCE861}" SalePntKind="137" SalePointID="1" ObjectRefNo="10" ObjectIdent="1000060" AvailPeriod="0" TaxGroup="1"/>
</Items>
</RK7Reference>
</RK7QueryResult>
Для запроса полного меню ресторана используйте запрос <RK7CMD CMD="GetRefData" RefName="MENUITEMS" />.