Загрузка броней TravelLine в заказ-наряды 1С:УНФ расширением конфигурации

14.09.26

Функциональные - Управление услугами и сервисом

Типичная схема небольшой гостиницы: канал продаж и шахматка живут в TravelLine (TL: Channel Manager, Booking Engine, иногда WebPMS), а деньги, контрагенты и загрузка ресурсов — в 1С:Управление нашей фирмой. Между ними обычно стоит человек с таблицей: перенёс бронь, забыл дату выезда, перепутал категорию, не закрыл ресурс на даты проживания. Задача расширения узкая и практическая: один раз настроить подключение к TravelLine Partner API и дальше получать брони в УНФ уже как заказ-наряды. Обратной выгрузки квот и цен в TravelLine нет — это сознательное ограничение первой версии. Статья написана по итогам рабочей интеграции: от OAuth и разбора JSON до ограничений тарифа «Мини отель» и отличия блока доступности от настоящей брони гостя.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Загрузка броней TravelLine в заказ-наряды 1С:УНФ расширением конфигурации:
.cfe 33,09Kb
1 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Постановка задачи


Нужен односторонний обменTravelLine → УНФ без доработки типовых объектов.

Какое было выбрано соответствие свойств

Количество в строке работы — 1 (проживание), кратность — число ночей. Период ресурса совпадает с заездом и выездом. Отменённая бронь переводит заказ-наряд в завершённое отменённое состояние.


Почему расширение, а не изменение УНФ


Гостиничный учёт в УНФ хорошо ложится на заказ-наряд: работа — проживание в категории, ресурс — конкретный номер на интервал дат. Менять типовые модули ради этого не нужно. Расширение с префиксом Расш1_ добавляет свои справочники, регистры и обработку и не подписывается на события типовых документов.
• обновления УНФ ставятся штатно;
• права и подсистема изолированы;
• соответствия «идентификатор TravelLine → ссылка УНФ» лежат в своём регистре, повторная загрузка обновляет тот же заказ-наряд;
• протокол обмена пишется в журнал и сразу виден в обработке.


Состав расширения


В подключении хранятся адреса авторизации и API (по умолчанию partner.tlintegration.com), propertyId отеля, continueToken для инкрементальной выборки и дата последней синхронизации. Токен клиента — реквизит с режимом пароля.


Какие API TravelLine реально нужны


В кабинете TravelLine раздел «Подключения API» выглядит как набор галочек. Для этой задачи важны не все.


PMS API на тарифах вроде «Мини отель» часто стоит в статусе «Остановлено» и отвечает 403 You cannot consume this service. Это не значит, что брони читать нельзя: Read Reservation — отдельный продукт. Без PMS API расширение создаёт ресурсы по категориям и подставляет конкретный номер, только если он пришёл в самой брони.
Отдельная путаница — календарь «Блок доступности». Колонки «Продаётся онлайн» и «Закрыть / Открыть» — это квоты канала, а не документы бронирования. Read Reservation отдаёт только брони с номером вида ГГГГММДД-propertyId-… из раздела «Бронирования» (ручная бронь, сайт, OTA).


Авторизация и разбор JSON


Токен получают POST-запросом на /auth/token с grant_type=client_credentials. Дальше все вызовы идут с заголовком Authorization: Bearer.

Тело = "grant_type=client_credentials"
    + "&client_id=" + КодироватьURL(ИдентификаторКлиента)
    + "&client_secret=" + КодироватьURL(Токен);
Ответ = ВыполнитьHTTP(ХостАвторизации, "POST", "/auth/token", Тело, "application/x-www-form-urlencoded", "");


Если читать JSON в Структуру, ответ авторизации падает на полях вроде not-before-policy: дефис не является допустимым именем свойства. Читать нужно в Соответствие.

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
Данные = ПрочитатьJSON(ЧтениеJSON, Истина); // Соответствие
ЧтениеJSON.Закрыть();

Ниже перечень методов/свойств
1. Content API: GET /api/content/v1/properties — список отелей. Если код отеля в подключении пуст, записывается первый найденный propertyId.
2. GET /api/content/v1/properties/{propertyId} — массив roomTypes. На каждую категорию создаётся или находится номенклатура с типом «Работа».
3. PMS API: /api/pms/v2/properties/{id}/rooms. При 403 или 404 физические номера пропускаются без аварийного завершения, в протокол пишется причина.
4. Fallback: ресурс на категорию с техническим идентификатором roomType-{id}. В заказ-наряде он занимает место номера, пока в брони нет конкретного roomId.

Соответствия пишутся в регистр, поэтому повторная синхронизация не плодит дубли номенклатуры и ресурсов.
Как устроена загрузка броней
Read Reservation отдаёт постраничный список bookingSummaries.
• lastModification — старт выборки в UTC. Без него API инициирует полную синхронизацию с 2009-01-01, и HTTP-запрос легко упирается в таймаут;
• continueToken — продолжение с прошлого ответа; нельзя передавать вместе с lastModification;
• hasMoreData = false означает конец текущей порции, но следующие вызовы с тем же токеном уже вернут новые и изменённые брони.


В обработке с формы запускается загрузка за последние 24 месяца — так пользователь не зависит от застрявшего continueToken. Регламентное задание может идти инкрементально по сохранённому токену.
На каждую сводку запрашиваются детали GET .../bookings/{number}. Из roomStays берутся категория, даты, сумма, гости.


1. Найти заказ-наряд по регистру соответствий. Если нет — создать документ с видом операции «Заказ-наряд».
2. Контрагент — по ФИО гостя (создаётся при включённом флаге). Пока упрощенный вариант - в дальнейшем можно привязаться к телефону или электронной почте.
3. ТЧ «Работы» очищается и заполняется заново: номенклатура категории, количество 1, кратность = число ночей, сумма из priceAfterTax.
4. ТЧ «Ресурсы предприятия»: конкретный номер, если он есть в брони, иначе ресурс категории; Старт / Финиш = заезд / выезд.
5. Дополнительные услуги брони добавляются отдельными строками работ.
6. Документ записывается. Проведение — отдельный флаг: если оно падает на заполненности типовых реквизитов, остаётся запись.


Установка


1. В конфигураторе загрузить расширение из каталога выгрузки (префикс Расш1_, назначение «Дополнение»).
2. Проверить, что расширение активно, безопасный режим выключен: нужны HTTP-соединения и запись документов.
3. Обновить конфигурацию базы данных.
4. Назначить пользователям роль Расш1_ОсновнаяРоль.
5. В пользовательском режиме открыть раздел TravelLine — Синхронизация TravelLine.


Настройка подключения


В справочнике заполняются идентификатор и токен из кабинета TravelLine.

Код отеля можно не указывать: его подставит Content API при первой проверке. Организация — та, от которой будут заказ-наряды.
Рекомендуемый порядок кнопок:

«Проверить подключение» — токен и список отелей;

«Справочники» — категории и номера;

«Загрузить брони» — заказ-наряды. В протоколе должны появиться HTTP-код 200 и комментарии по логам.


Регламентное задание включено по умолчанию с периодом 900 секунд. На копии базы его лучше выключить.


Настройка кабинета TravelLine


В карточке API-подключения должны стоять как минимум Content API и Read Reservation API. Условия оферты TravelLine нужно принять в кабинете: без этого токен может выдаваться, а прикладные методы отвечать 403.


Чтобы в УНФ появились именно «Номер 101», а не ресурс «Стандарт», нужен PMS API и тариф, где он разрешён (Стандарт, Премиум или платная опция к «Мини отелю»). PMS Integration API для этой цели не подходит: он про доступность и блоки квот, а не про карточки физических номеров WebPMS.


Что сознательно не сделано (пока?)


• выгрузка броней и цен обратно в TravelLine;
• вебхуки — контур рассчитан на периодический обмен;
• сопоставления уже существующих номенклатуры и ресурсов: первое создание идёт автоматически по наименованию категории.
Это можно нарастить тем же расширением: регистр соответствий и журнал уже есть, менять типовую УНФ по-прежнему не потребуется.

 

Идеи для следующей версии


Можно будет добавить отправку броней непосредственно из 1С. Поменять интерфейс Планирования ресурсов с адаптацией к гостиницам


Заключение

Заказ-наряд УНФ удачно совпадает с гостиничной бронью: работа — категория, ресурс — номер на даты, контрагент — гость. По крайней мере другого решения в лоб с минимальными доработками я не увидел. TravelLine Partner API это покрывает связкой Content + Read Reservation;


Расширение является стартом для доработок - и предоставляется "как есть". Посмотрим на спрос - возможно будем адаптировать.


 

Проверено на следующих конфигурациях и релизах:

  • Управление нашей фирмой, редакция 3.0, релизы 3.0.14.143

Вступайте в нашу телеграмм-группу Инфостарт

TravelLine УНФ учет брони бронь заказ-наряд расширение REST OAuth Partner API гостиничный бизнес

См. также

Аналитик Бухгалтер Пользователь 1С:Предприятие 8 Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

Комплексная автоматизация 1С — универсальное решение для управления предприятием и автоматизации учета, производства, продаж и финансов. Подходит для малого и среднего бизнеса. Купить программу 1С:Комплексная автоматизация 8 (редакция 2.5) можно по выгодной цене с электронной поставкой. Внедрение системы позволит объединить все ключевые процессы в одной платформе и повысить эффективность компании. Узнайте стоимость, сравните версии и закажите автоматизацию для вашего бизнеса! Покупайте в Инфостарт и получайте 15% бонусов на наши услуги, сервисы и мероприятия!

108000 руб.

19.02.2016    91581    160    0    

147

Пользователь Руководитель проекта 1С:Предприятие 8 Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Отраслевое решение "1С:Управление микрофинансовой организацией и кредитным потребительским кооперативом КОРП" предназначено для комплексной автоматизации деятельности микрофинансовых организаций и кредитных потребительских кооперативов: обеспечение деятельности по предоставлению и привлечению денежных средств, ведение бухгалтерского и налогового учета всех хозяйственных операций микрофинансовых организаций (МФО) и кредитных потребительских кооперативов (КПК) на Едином плане счетов (ЕПС), формирование отчетности в соответствие с отраслевыми стандартами бухгалтерского учета (ОСБУ), утвержденными Банком России.

58500 руб.

03.02.2017    47203    5    4    

4

Бухгалтер Пользователь 1С:Предприятие 8 Недвижимость, риэлторская деятельность Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

Продукт предназначен для собственников коммерческой недвижимости, управляющих компаний, девелоперских организаций. Продукт позволяет повысить эффективность бизнеса компаний за счет автоматизации процессов по ведению реестрового учета объектов недвижимости, управлению договорами аренды и расчетами с арендаторами, эксплуатации объектов недвижимости. Программа обеспечивает решение задач бухгалтерского, управленческого, юридического и административного учета. Программа позволяет эффективно управлять недвижимостью разных типов: торговыми и офисными центрами, рынками, выставочными площадями, складами и т.п.

8000 руб.

17.02.2016    43502    11    1    

9

WEB-интеграция Разработчик Аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

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

17568 руб.

20.12.2024    7740    35    4    

35

Аналитик Бухгалтер Пользователь 1С:Предприятие 8 Рестораны, кафе и фаст-фуд Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

1С:Общепит - решение для автоматизации учета и управления на предприятиях общественного питания. Учет продуктов и рецептур, контроль качества, формирование меню, управление складом и заказами, а также аналитика и интеграции с оборудованием. Версии КОРП и ПРОФ. Купите 1С:Общепит с бонусом 15% в Инфостарт и получите надежный инструмент для автоматизации вашего предприятия!

50700 руб.

17.02.2016    75506    43    1    

24

Аналитик Бухгалтер Пользователь 1С:Предприятие 8 Энергетика и ЖКХ Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

Программный продукт предназначен для организации эффективного управления и автоматизации всех процессов в управляющих компаниях ЖКХ, товариществах собственников жилья (ТСЖ), жилищно-строительных кооперативах (ЖСК).

30600 руб.

21.02.2016    49027    21    1    

20

Сайты и интернет-магазины WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    25811    42    26    

30
Для отправки сообщения требуется регистрация/авторизация