Частые ошибки и решения при настройке и эксплуатации 1С:Отель

Программист 1С v8.3 (Управляемые формы) Управленческий учет Сфера услуг, туризм и социальный сектор
← На главную

В процессе внедрения и сопровождения конфигурации "1С:Отель" специалисты часто сталкиваются с рядом специфических технических проблем — от настройки торгового оборудования до интеграции с внешними системами бронирования. В этой статье мы подробно разберем решения наиболее актуальных вопросов, возникающих при работе с этой системой. Мы рассмотрим программные исправления ошибок эквайринга, настройки обменов данными и нюансы работы с платформой.

Исправление двойной печати чеков при оплате картой (Sberbank)

Одной из критических проблем, с которой мы можем столкнуться при использовании интегрированных терминалов Сбербанка, является задвоение чеков. Ситуация выглядит следующим образом: авторизация проходит один раз, но фискальный регистратор печатает два чека на одну сумму. Это происходит из-за особенностей работы драйвера 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

Ошибка авторизации при интеграции с Битрикс24

При настройке обмена между 1С:Отель и CRM Битрикс24 мы можем столкнуться с ошибкой авторизации, даже если приложение на стороне портала установлено корректно. Часто проблема кроется в длине токена авторизации.

В более старых версиях конфигурации длина токена была ограничена 36 символами. Однако Битрикс изменил стандарты безопасности, и теперь токены стали длиннее. Если в журнале регистрации мы видим ошибки соединения, нам следует проверить параметры сеанса.

Решение:

  1. Откроем конфигуратор.
  2. Найдем параметр сеанса B24Token (или аналогичный, отвечающий за хранение токена).
  3. Увеличим длину строки в его свойствах или в коде инициализации до 100 символов.
  4. В модуле установки параметров сеанса изменим инициализацию:

// Было:
SessionParameters.B24Token = ""; // Ограничение по умолчанию могло быть жестким в типе

// Стало (убедитесь, что тип параметра позволяет хранить длинные строки):
SessionParameters.B24Token = "100"; // Или задаем явную типизацию через Новый ОписаниеТипов

Проблема с отображением карты номеров (компонента ExG2antt)

Если при открытии "Карты использования номеров" (шахматки) программа выдает ошибку о том, что компонента не установлена или у пользователя нет прав (даже при запуске от администратора), причина часто кроется в разрядности платформы 1С.

Для отрисовки графиков в старых редакциях 1С:Отель используется внешняя компонента ExG2antt.dll (ActiveX). Эта библиотека является 32-битной (x86). Если мы запускаем клиент 1С:Предприятие версии x64, эта компонента не сможет загрузиться, так как 64-битные приложения не могут напрямую использовать 32-битные DLL.

Варианты решения:

  1. Установить и использовать 32-битную (x86) платформу 1С:Предприятие на клиентских машинах, где требуется работа с шахматкой.
  2. Убедиться, что файл ExG2antt.dll присутствует в системной папке или папке платформы (обычно C:\Program Files (x86)\1cv8\common\) и зарегистрирован в системе.
  3. В новых версиях конфигурации (редакция 9.0 и выше) разработчики перешли на использование нативного объекта платформы Планировщик, который корректно работает на 64-битных клиентах, в веб-клиенте и на Linux. Если проблема критична, стоит рассмотреть обновление.

Нюансы интеграции с TravelLine

При настройке выгрузки цен и доступности в Channel Manager TravelLine часто возникают неочевидные ошибки. Разберем основные моменты, которые необходимо проверить, если данные не выгружаются.

1. Ошибка выгрузки цен (Код валюты)

Если в логах обмена мы видим, что доступность (Inventory) уходит корректно, а цены (Rates) возвращают ошибку, нам нужно проверить коды валют. Стандарт ISO требует использования цифровых кодов.

В справочнике валют 1С код рубля часто записан как "RUB". Однако TravelLine может ожидать цифровой код "643".

Что делать: В настройках соответствия кодов (или в справочнике валют, в зависимости от версии обработки обмена) необходимо убедиться, что для рубля сопоставлен код 643. Если в таблице сопоставления есть лишние записи, их нужно удалить, оставив только корректную пару.

2. Брони не загружаются в 1С

Если бронирования есть в экстранете, но не попадают в 1С, первым делом включим "Режим отладки" в справочнике настроек взаимодействий. Обязательно укажем путь к папке логов, доступной серверу 1С.

Анализируя полученные XML-файлы, проверим:

Настройка тарифов и справки о наличии мест

Начинающие пользователи часто сталкиваются с ситуацией, когда отчет "Справка о наличии свободных мест" пуст, хотя номера в базе заведены. Разберем по шагам, что необходимо проверить для корректного отображения доступности и цен.

  1. Приказ по ценам. Убедитесь, что документ "Приказ об установлении цен" проведен датой раньше, чем дата, на которую мы смотрим наличие мест. Если приказ от сегодняшнего числа (например, 12:00), а мы пытаемся поселить гостя с заездом сегодня в 14:00, цена может не подхватиться из-за особенностей среза последних записей.
  2. Календарь. В настройках тарифа должен быть заполнен календарь на весь интересующий период. Каждой дате должен быть присвоен "Тип дня" (например, "Основной сезон" или "Будни").
  3. Связь цены и типа дня. В приказе по ценам цены должны быть установлены именно для тех типов дней, которые указаны в календаре.
  4. Курс валюты. Проверьте справочник валют. Курс рубля должен быть равен 1. Если курс не задан или равен 0, цены не рассчитаются.
  5. Галочка "Входит в цену". В документе установки цен убедитесь, что для услуг проживания стоит признак включения в цену тарифа.

Также важно различать виды размещения при заселении. Если необходимо поселить одного человека в двухместный номер так, чтобы к нему никого не подселили (и он оплатил весь номер), в документе размещения следует выбирать вид размещения "Номер", а не "Место". Это автоматически заблокирует весь ресурс номера.

Постоянные счета для непроживающих гостей

Иногда требуется вести учет услуг для гостей, которые не проживают в отеле (посетители бассейна, ресторана, арендаторы), используя "постоянный" счет. В 1С:Отель для этого предусмотрен механизм "Мастер-счетов".

Чтобы создать такой счет:

  1. Создайте новый лицевой счет (фолио).
  2. В форме счета (или в списке, нажав F2) установите галочку "Мастер-счет".
  3. Такой счет не будет требовать обязательного закрытия при выезде (так как нет факта проживания) и может использоваться для накопления начислений.

Альтернативный вариант — настроить шаблон фолио для сторонних посетителей в настройках гостиницы на вкладке "Правила начисления".

← На главную