В процессе внедрения и сопровождения конфигурации "1С:Отель" специалисты часто сталкиваются с рядом специфических технических проблем — от настройки торгового оборудования до интеграции с внешними системами бронирования. В этой статье мы подробно разберем решения наиболее актуальных вопросов, возникающих при работе с этой системой. Мы рассмотрим программные исправления ошибок эквайринга, настройки обменов данными и нюансы работы с платформой.
Одной из критических проблем, с которой мы можем столкнуться при использовании интегрированных терминалов Сбербанка, является задвоение чеков. Ситуация выглядит следующим образом: авторизация проходит один раз, но фискальный регистратор печатает два чека на одну сумму. Это происходит из-за особенностей работы драйвера sbrf.dll, который в некоторых случаях может некорректно возвращать управление (проблема многопоточности или асинхронности).
Чтобы устранить эту ошибку, нам необходимо внести изменения в код обработки обслуживания или формы документа оплаты. Рассмотрим программное решение, которое предотвращает повторную печать, если чек уже был зарегистрирован.
В форме документа Payment (Оплата) в функции PrintCheque необходимо добавить проверку на существование атрибутов чека перед попыткой печати. Если чек уже есть в системе, мы прерываем выполнение и записываем предупреждение в журнал регистрации.
Рассмотрим пример кода, который решает эту задачу:
Function PrintCheque(rMessage)
// Пытаемся отловить случай с повторной печатью чеков на ККМ
If tcCashRegisters.GetChequeAttributes(ThisObject.Ref) <> Undefined Then
Cancel = True;
WriteLogEvent("Попытка напечатать повторный чек в форме ", EventLogLevel.Warning, ThisObject.Metadata, ThisObject.Ref);
Return(false);
EndIf;
rMessage = "";
vCashRegisterProcessor = cmGetCashRegisterDataProcessor(CashRegister);
If PaymentMethod.PrintNonFiscalCheque Then
If Not IsBlankString(PaymentMethod.NonFiscalChequeTemplate) Then
Return vCashRegisterProcessor.pmPrintNonFiscalCheque(Sum, VATSum, ThisObject, TrimAll(PaymentMethod.NonFiscalChequeTemplate), rMessage);
Else
rMessage = NStr("en='Non-fiscal cheque template is not filled for payment method!'; ru='У способа оплаты не заполнен шаблон нефискального чека!'; de='Zahlungsmethode hat eine leer Vorlage für die nonfiscal Kassenbon!'");
Return False;
EndIf;
Else
Return vCashRegisterProcessor.pmPrintCheque(Sum, VATSum, ThisObject, rMessage, , ValueIsFilled(CorrectionType), CorrectionType, CorrectionDescription, CorrectionDocumentNumber, CorrectionDocumentDate);
EndIf;
EndFunction
При настройке обмена между 1С:Отель и CRM Битрикс24 мы можем столкнуться с ошибкой авторизации, даже если приложение на стороне портала установлено корректно. Часто проблема кроется в длине токена авторизации.
В более старых версиях конфигурации длина токена была ограничена 36 символами. Однако Битрикс изменил стандарты безопасности, и теперь токены стали длиннее. Если в журнале регистрации мы видим ошибки соединения, нам следует проверить параметры сеанса.
Решение:
B24Token (или аналогичный, отвечающий за хранение токена).
// Было:
SessionParameters.B24Token = ""; // Ограничение по умолчанию могло быть жестким в типе
// Стало (убедитесь, что тип параметра позволяет хранить длинные строки):
SessionParameters.B24Token = "100"; // Или задаем явную типизацию через Новый ОписаниеТипов
Если при открытии "Карты использования номеров" (шахматки) программа выдает ошибку о том, что компонента не установлена или у пользователя нет прав (даже при запуске от администратора), причина часто кроется в разрядности платформы 1С.
Для отрисовки графиков в старых редакциях 1С:Отель используется внешняя компонента ExG2antt.dll (ActiveX). Эта библиотека является 32-битной (x86). Если мы запускаем клиент 1С:Предприятие версии x64, эта компонента не сможет загрузиться, так как 64-битные приложения не могут напрямую использовать 32-битные DLL.
Варианты решения:
ExG2antt.dll присутствует в системной папке или папке платформы (обычно C:\Program Files (x86)\1cv8\common\) и зарегистрирован в системе.Планировщик, который корректно работает на 64-битных клиентах, в веб-клиенте и на Linux. Если проблема критична, стоит рассмотреть обновление.При настройке выгрузки цен и доступности в Channel Manager TravelLine часто возникают неочевидные ошибки. Разберем основные моменты, которые необходимо проверить, если данные не выгружаются.
1. Ошибка выгрузки цен (Код валюты)
Если в логах обмена мы видим, что доступность (Inventory) уходит корректно, а цены (Rates) возвращают ошибку, нам нужно проверить коды валют. Стандарт ISO требует использования цифровых кодов.
В справочнике валют 1С код рубля часто записан как "RUB". Однако TravelLine может ожидать цифровой код "643".
Что делать: В настройках соответствия кодов (или в справочнике валют, в зависимости от версии обработки обмена) необходимо убедиться, что для рубля сопоставлен код 643. Если в таблице сопоставления есть лишние записи, их нужно удалить, оставив только корректную пару.
2. Брони не загружаются в 1С
Если бронирования есть в экстранете, но не попадают в 1С, первым делом включим "Режим отладки" в справочнике настроек взаимодействий. Обязательно укажем путь к папке логов, доступной серверу 1С.
Анализируя полученные XML-файлы, проверим:
Начинающие пользователи часто сталкиваются с ситуацией, когда отчет "Справка о наличии свободных мест" пуст, хотя номера в базе заведены. Разберем по шагам, что необходимо проверить для корректного отображения доступности и цен.
Также важно различать виды размещения при заселении. Если необходимо поселить одного человека в двухместный номер так, чтобы к нему никого не подселили (и он оплатил весь номер), в документе размещения следует выбирать вид размещения "Номер", а не "Место". Это автоматически заблокирует весь ресурс номера.
Иногда требуется вести учет услуг для гостей, которые не проживают в отеле (посетители бассейна, ресторана, арендаторы), используя "постоянный" счет. В 1С:Отель для этого предусмотрен механизм "Мастер-счетов".
Чтобы создать такой счет:
Альтернативный вариант — настроить шаблон фолио для сторонних посетителей в настройках гостиницы на вкладке "Правила начисления".