В современной гостиничной индустрии бесшовная интеграция между рестораном и службой приема гостей является стандартом качества. Одной из самых востребованных функций является «закрытие на номер» — возможность гостя поужинать в ресторане и записать сумму чека на свой гостиничный счет (фолио), чтобы оплатить всё при выезде. Однако настройка связки 1С:Отель и Rkeeper часто вызывает вопросы из-за отсутствия подробных пошаговых инструкций в открытом доступе, хотя такие задачи, как загрузка курсов валют, обычно решаются гораздо быстрее.
В рамках этой статьи мы подробно разберем, как реализовать эту задачу, проанализируем архитектуру обмена и выясним, какие «подводные камни» могут встретиться в процессе настройки.
Прежде чем приступать к кликам в интерфейсе, давайте разберем логику взаимодействия. Важно понимать, что в данной связке 1С:Отель выступает в роли сервера (слушателя), а Rkeeper — в роли клиента.
Когда официант в ресторане выбирает тип оплаты «На номер», кассовая станция Rkeeper инициирует запрос к базе данных отеля. Процесс выглядит следующим образом:
Рассмотрим подробнее этапы настройки каждой из систем.
Проанализируем необходимые действия в конфигурации 1С. Основная работа ведется в разделе настроек параметров системы и справочниках интерфейсов.
Во-первых, нам необходимо активировать поддержку внешних систем. Перейдем в раздел Параметры системы, далее выберем вкладку Интерфейсы. Здесь мы должны найти настройки FMS-интерфейса (часто называемого PostInterface). Этот интерфейс отвечает за прием сообщений от ресторанных систем.
Разберем по шагам ключевые поля:
5001 или 8081. Убедитесь, что этот порт открыт в брандмауэре Windows и настройки сети позволяют кассовому серверу Rkeeper достучаться до него.Далее нам необходимо настроить сопоставление данных. В справочнике Способы оплаты создадим новый элемент, например, «Закрытие из ресторана». В поле Код для внешних систем укажем идентификатор, который будет присылать Rkeeper (например, код 2 или 10, в зависимости от настроек в менеджерской части RK).
Теперь перейдем к настройкам ресторанной части. Хотя со стороны Rkeeper документация обычно более доступна, выделим главные моменты, без которых интеграция не заработает.
Посмотрим на справочник драйверов в менеджерской части Rkeeper. На кассовый сервер необходимо добавить драйвер связи с PMS-системой. Обычно это драйвер типа fms.dll или специализированный XML-интерфейс. В настройках драйвера укажем IP-адрес сервера 1С и тот самый порт, который мы открыли ранее.
Рассмотрим настройку типов оплат в Rkeeper:
Важный нюанс: для работы обмена в Rkeeper должна быть активна лицензия на XML Interface или Interface to PMS. Без этого кассовый сервер не сможет инициировать внешние запросы.
Выясним причину, по которой многие внедрения застревают на этапе тестирования. Это несоответствие справочников. Нам необходимо выполнить маппинг (сопоставление) кодов отделов.
В 1С:Отель каждая услуга привязана к Номенклатуре и Секции оплаты. В Rkeeper блюда также распределены по департаментам. Чтобы сумма ужина корректно упала в счет гостя, нам нужно настроить таблицу соответствий в 1С. Рассмотрим пример кода, описывающего логику обработки входящего запроса (условно):
// Пример логики обработки входящей транзакции от Rkeeper
Процедура ОбработатьЗапросОтРесторана(ДанныеЧека)
КодОтдела = ДанныеЧека.DepartmentCode;
Сумма = ДанныеЧека.Amount;
// Ищем соответствие услуги отеля коду отдела ресторана
УслугаОтеля = Справочники.Номенклатура.НайтиПоКоду(КодОтдела);
Если УслугаОтеля.Пустая() Тогда
ВызватьИсключение "Не настроено сопоставление для отдела " + КодОтдела;
КонецЕсли;
// Начисляем услугу на фолио гостя
НачислитьУслугуНаНомер(ДанныеЧека.НомерКомнаты, УслугаОтеля, Сумма);
КонецПроцедуры
Обратите внимание на налоговые ставки. Если в Rkeeper блюдо идет с НДС 20%, а в 1С:Отель услуга «Питание» настроена с НДС 0% или «Без НДС», система может выдать ошибку при попытке проведения документа. Рекомендуем заранее синхронизировать налоговые настройки в обеих базах.
Как отмечалось в обсуждении, специалисты часто запрашивают значительные суммы за «простую настройку». Проанализируем ситуацию: работающая интеграция — это не только прописанный IP-адрес. Это:
Разберем, как проверить работоспособность связки. После настройки портов и интерфейсов воспользуемся утилитами для проверки TCP-соединения (например, telnet или TestPort). Если порт отвечает, попробуем совершить тестовую продажу.
В 1С:Отель полезно заглянуть в журнал регистрации или специализированный лог FMS-интерфейса (если он включен в настройках). Там можно увидеть структуру XML-пакета, который пришел от Rkeeper. Технически процесс приема данных напоминает загрузку приходной накладной в 1С из внешних XML-файлов. Если в пакете видны ошибки типа Invalid Room Number или Guest Not Found, значит, связь установлена, но данные в запросе не соответствуют текущему состоянию базы отеля.
Подводя итог, настройка интеграции 1С:Отель и Rkeeper требует системного подхода. Несмотря на заявленную «готовность» интеграции, основная работа заключается в тонкой подстройке справочников и сетевых интерфейсов под конкретные бизнес-процессы вашего объекта.