Практикум. Сервис бронирования отелей. Объектная модель.
Общие сведения об объектной модели
Реализация любого приложения начинается с создания предметной области, типов объекта, их атрибутов и настройки связи между элементами объектной модели.
Перед тем как приступить к настройке приложения необходимо выделить основные используемые понятия:
-
Атрибут – значимая характеристика объекта, используется для идентификации, классификации, выражения количественной характеристики или состояния объекта;
-
Тип объектов – набор характеристик(атрибутов);
-
Экземпляр – набор сведений о конкретном объекте, создается Системой при заполнении данными;
-
Реестр объектов – накопитель сведений одного типа;
-
Связь – индикатор взаимоотношений между объектами. Существует 3 типа связей: наследования, агрегации и ассоциации.
При проектировании объектной модели существует возможность использовать готовые и создавать новые типы объектов. После описания типов данных и определения их характеристик платформа автоматически создаст оптимальные таблицы, ключи, индексы, связи и структуры.
Работа с объектной моделью включает в себя несколько этапов:
-
Создание предметной области, на которой будет происходить создание объектной модели;
-
Создание типов объекта. Перед созданием типа объекта необходима проверка отсутствия в Системе, что позволит обойти дублирование данных;
-
Определение атрибутивного состава нового типа объектов и других настроек;
-
Настройка связей ассоциации и агрегации между типами объекта;
-
Наполнение типа объектов данными – экземплярами объектов – и последующее использование созданного типа в реализации бизнес-приложения.
Описание модуля
Для решения рассматриваемой бизнес-задачи необходимо построить объектную модель, содержащую следующие типы объектов:
-
Заявка – ключевой тип объектов, с которым взаимодействуют пользователи системы: Клиенты создают новые экземпляры типа, а Менеджеры просматривают их;
-
Отель – таблица для хранения данных обо всех отелях, номера в которых можно забронировать. Клиент может просматривать экземпляры типа во время создания заявки;
-
Рейтинг – справочник, в котором хранятся записи о значении рейтинга отеля;
-
Номер – таблица для хранения данных о номерах во всех отелях. Клиент может просматривать экземпляры типа во время создания заявки;
-
Тип номера – справочник, в котором хранятся данные о типах номеров;
-
Тип питания – справочник, в котором хранятся данные о типах питания в номерах;
-
Клиент – таблица для хранения данных о зарегистрированных клиентах сервиса;
-
Гости – таблица для хранения данных о незарегистрированных гостях клиентов.
Целевая объектная модель должна выглядеть следующим образом:
Создание предметной области
Для удобства работы на платформе предусмотрена работа с моделью данных в виде ER-диаграммы (диаграммы предметной области), которая наглядно отображает состав и связи между элементами настраиваемой объектной модели.
Для создания новой ER-диаграммы есть два способа:
-
На стартовой странице в виджете «Предметные области» нажмите на кнопку «Создать».
-
Через главное меню перейти в пункт «Администрирование» – «Управление объектами» – «Предметные области». После перехода в реестре предметных областей создать новый экземпляр типа с помощью кнопки «Создать».
Создайте новую предметную область на стартовой странице. Для этого нажмите на кнопку «Создать» в разделе «Предметная область». Задайте для предметной области наименование «Сервис бронирования отелей». Сохраните диаграмму с помощью кнопки «Сохранить» на панели управления.
Определение типов объектов
Для реализации объектной модели используются типы объектов для описания сущностей.
В редакторе предметной области предусмотрено добавление уже имеющихся типов (системных) и создание новых.
Определение типа объектов «Заявка на бронирование»
Создайте новый тип объектов — ключевой тип объектов, экземпляры которого будут являться формами для заполнения клиентами сведений при бронировании отелей. Для этого на предметной области нажмите на кнопку «Создать новый тип объекта».
В блоке «Основное» данной формы расположены поля, отвечающие за наименование объекта, его отражение в БД в качестве реляционной таблицы, а также указывается объект-родитель, от которого будут унаследованы базовые атрибуты и свойства. Родитель «Объект» - является абстрактным объектом, содержащим минимально необходимый набор атрибутов. Важно корректно заполнить поля «Наименование таблицы» и «Родитель», так как после сохранения данного типа, изменить их будет нельзя.
Необходимо сразу корректно заполнить поля «Наименование таблицы» и «Родитель», так как после сохранения данного типа, изменить их будет нельзя. |
В появившемся окне заполните поле Наименование – «Заявка на бронирование» и идентификатор – [BOOKING_CARD]. В качестве родителя выберите тип объектов «Объект» и сохраните настройку типа объектов. Сохраните настройки типа объектов.
В нижней части окна на первой вкладке расположены атрибуты объекта. На вкладке «Атрибуты» отображается список всех атрибутов данного типа в таблице. В списке атрибутов указываются унаследованные (родительские), существующие и созданные пользователем атрибуты. Для того, чтобы отобразить список родительских атрибутов, необходимо активировать переключатель «Показать атрибуты родительского типа».
Чтобы добавить существующие в системе атрибуты, нажмите на кнопку «Добавить существующий» и в появившемся модальном окне выберите необходимый из перечня атрибутов. Использование существующих атрибутов позволит обойти дублирование данных и расширения базы данных.
Добавьте таким образом существующий атрибут «Прикрепленные файлы» [SYS_FILE_ID], который будет содержать сформированные чеки для отправки на оплату клиентам. В появившемся модальном окне активируйте переключатель «Выбор атрибута из полного списка атрибутов» и из раскрывающегося списка с помощью поиска найдите и выберите «Прикрепленные файлы» [SYS_FILE_ID]. После этого нажмите на кнопку «Ок», чтобы добавить его в список атрибутов текущего типа объекта.
Создание новых пользовательских происходит с помощью кнопки «Добавить новый». При добавлении атрибута могут быть определены не только его основные характеристики, но и внешний вид, версионность и дополнительные настройки.
Изменение типа и наименование поля таблицы недоступно после сохранения атрибута. |
Прочие атрибуты создаваемого типа будут созданы как новые. Чтобы создать новые атрибуты, на вкладке «Атрибуты» нажмите на кнопку добавления . При добавлении атрибута можно изменить его визуал, для этого необходимо перейти на вкладку «Визуал» и выбрать значение из раскрывающегося списка.
Добавьте для типа объектов «Заявка на бронирование» новые атрибуты, произведите их настройку в соответствии с таблицей ниже.
Вид атрибута | Исходное наименование | Наименование | Наименование поля таблицы | Тип атрибута | Обязательность | Значение по умолчанию | Дополнительные настройки | Визуал |
---|---|---|---|---|---|---|---|---|
Существующий |
Прикрепленные файлы |
Прикрепленные файлы |
SYS_FILE_ID |
Объект |
Нет |
- |
- |
Множественные файлы в виде таблицы |
Новый |
- |
Дата заезда |
ARRIVAL_DATE |
Дата |
Да |
Текущая дата |
- |
- |
Новый |
- |
Дата отъезда |
DEPARTURE_DATE |
Дата |
Да |
- |
- |
- |
Новый |
- |
Количество взрослых |
NUMBER_OF_ADULTS |
Целое число |
Да |
1 |
минимум |
- |
Новый |
- |
Количество детей |
NUMBER_OF_CHILDREN |
Целое число |
Да |
0 |
минимум |
- |
Новый |
- |
Комментарий клиента |
CLIENT_COMMENT |
Строка |
Нет |
- |
- |
Многострочный ввод |
Новый |
- |
Путешествую по работе |
IS_WORK_TRIP |
Логический |
Да |
Нет |
- |
Логический атрибут в виде checkbox’а |
Новый |
- |
Бронирую для себя |
BOOKING_FOR |
Логический |
Да |
Да |
- |
Логический атрибут в виде checkbox’a |
Новый |
- |
Согласие |
IS_AGREE |
Логический |
Да |
Да |
- |
Логический атрибут в виде checkbox’a |
Новый |
- |
Себестоимость заявки |
COST_PRICE |
Денежный |
Да |
0 |
2 знака после запятой |
Ввод денежных значений |
Новый |
- |
Комиссия |
RENT |
Денежный |
Да |
0 |
2 знака после запятой |
Ввод денежных значений |
Новый |
- |
Итоговая стоимость |
FINAL_PRICE |
Денежный |
Да |
0 |
2 знака после запятой |
Ввод денежных значений |
После добавления атрибутов сохраните изменения в настройках типа объектов и вернитесь к предметной области.
Определение типа объектов «Клиент»
Создайте тип объектов «Клиент» [CLIENT], установите для него родительский тип объектов «Сотрудник». Экземпляры типа объектов «Клиент» будут хранить информацию о клиенте, который производит бронирование. Сохраните тип объектов.
Так как для родительского типа существуют определенные настройки атрибутов, необходимо изменить атрибуты для корректного отображения других атрибутов и работы Системы в целом.
На вкладке «Атрибуты» активируйте переключатель «Показать атрибуты родительского типа» и внесите изменения для следующих родительских атрибутов:
-
E-MAIL [EMAIL] – на вкладке «Визуал» очистите поле выбора визуала для атрибута;
-
Телефон [PHONE] - на вкладке «Визуал» очистите поле выбора визуала для атрибута.
Сохраните изменения и добавьте новые атрибуты:
-
Телефон [PHONE_NUBMER] – тип значения «Строка», обязательность – «Да», визуал – «Телефон»;
-
e-mail [E_MAIL] – тип значения «Строка», обязательность – «Да», визуал – «Электронная почта»;
Сохраните изменения в настройках типа объектов.
После добавления атрибутов сохраните изменения в настройках типа объектов и вернитесь к предметной области.
Определение типа объектов «Гость»
Создайте тип объектов «Гость» [GUEST], установите для него родительский тип объектов «Сотрудник». Экземпляры типа объектов «Гости» будут хранить информацию о гостях. Для этого типа объектов достаточно родительских атрибутов «Имя», «Фамилия», «Отчество», поэтому создавать новые атрибуты не нужно.
Определение типа объектов «Отель»
Создайте новый тип объектов «Отель» [HOTEL], экземпляры этого типа объектов будут содержать описание отелей. В качестве родителя выберите тип объектов «Объект».
В разделе «Дополнительные настройки» на вкладке «Контроль доступа» установите «Вид контроля прав» – «Все пользователи имеют право на чтение». Сохраните настройки типа объектов.
Выберите из полного списка атрибутов и добавьте существующий атрибут «Адрес фактический» [ACTUAL_ADDRESS], измените наименование на «Адрес отеля» и установите для поля «Обязательность» значение «Да».
Добавьте для типа объектов «Отель» новые атрибуты, произведите их настройку.
В результате для типа объекта «Отель» должны быть следующие атрибуты:
Вид атрибута |
Исходное наименование |
Наименование |
Наименование поля таблицы |
Тип атрибута |
Обязательность |
Значение по умолчанию |
Дополнительные настройки |
Визуал |
Существующий |
Адрес фактический |
Адрес отеля |
ACTUAL_ADDRESS |
Текст |
Да |
- |
- |
Многострочный ввод |
Существующий |
Изображение |
Изображение отеля |
SYS_IMAGE |
Объект |
Да |
- |
Тип объектов - файл |
Изображение, скрывать кнопки во всплывающее меню, автоматический подбор ширины изображения |
Новый |
- |
Описание отеля |
HOTEL_DESCRIPTION |
Текст |
Да |
- |
- |
Текст с поддержкой сложного форматирования |
Новый |
- |
Город |
CITY_ID |
Объект |
Да |
- |
Тип - объект, тип объекта - Населенный пункт |
Представление атрибута. Множественный выбор объектов в виде listbox – Отображать как выпадающий список |
Тип объектов на предметной области.
Определение типа объектов «Рейтинг»
Создайте на предметной области новый тип объектов: «Рейтинг» [SCORE], выберите родительский тип объектов «Объект». Экземпляры этого типа объектов будут содержать информацию о рейтинге отеля. В разделе «Дополнительные настройки» на вкладке «Контроль доступа» установите «Вид контроля прав» – «Все пользователи имеют право на чтение». Сохраните настройки типа объектов.
Тип объектов на предметной области
Определение типа объектов «Номер»
Создайте новый тип объектов «Номер» [ROOM], экземпляры этого типа объектов будут содержать описание характеристик номеров отелей. В качестве родителя выберите тип объектов «Объект» и сохраните настройки типа объектов.
В разделе «Дополнительные настройки» на вкладке «Контроль доступа» установите «Вид контроля прав» – «Все пользователи имеют право на чтение».
Добавьте существующий атрибут «Изображение» [SYS_IMAGE] и переименуйте его в «Изображение номера» и на вкладке «Визуал» переведите переключатель «Автоматический подбор ширины изображения» в активное положение.
Определите для типа объектов «Номер» остальные атрибуты согласно таблице ниже.
Вид атрибута |
Исходное наименование |
Наименование |
Идентификатор |
Тип атрибута |
Обязательность |
Значение по умолчанию |
Дополнительные настройки |
Визуал |
Существующий |
Изображение |
Изображение номера |
SYS_IMAGE |
Объект |
Да |
- |
Тип объектов - файл |
Изображение, скрывать кнопки во всплывающее меню, автоматический подбор ширины изображения |
Новый |
- |
Макс. проживающих |
MAX_PEOPLE_ROOM |
Целое число |
Да |
1 |
Мин. - 1 |
- |
Новый |
- |
Цена за ночь (взр.) |
PRICE_PER_NIGHT_A |
Денежный |
Да |
0 |
Мин. - 0 |
Ввод денежных значений |
Новый |
- |
Цена за ночь (дет.) |
PRICE_PER_NIGHT_C |
Денежный |
Да |
0 |
Мин. - 0 |
Ввод денежных значений |
Тип объектов на предметной области
Настройка связей между типами объектов
Настройте связи между типами объектов на предметной области. Связь между типами объектов устанавливает отношения между совпадающими значениями в ключевых полях, что позволяет обращаться к записям одного типа из другого.
Существует 3 вида взаимосвязи между объектами:
-
Наследование – ссылка на родительский объект;
-
Ассоциация – создание объектного атрибута – атрибута с ссылкой на тип объектов;
-
Агрегации – создание дочернего атрибута – атрибут, хранящий в себе набор записей другой таблицы (типа объекта, указанного при настройках атрибута), которая в свою очередь имеет объектную ссылку на текущую таблицу.
Один родительский объект может иметь много дочерних, однако у всякого дочернего объекта может быть только один родитель. Кроме того, один и тот же объект может быть родительским для одних объектов и в то же время дочерним для других.
Связи с типом объектов «Клиент»
Настройте связь ассоциации между типом «Клиент» и «Гость», чтобы привязать гостей к конкретному клиенту. Для этого выделите таблицу типа объекта «Гость» и с помощью правой кнопки мыши вызовите панель действий.
Выберите действие «Создать ассоциативную связь» и протяните связь к типу объектов «Клиент», нажав на таблицу. Появится предзаполненное модальное окно создания объектного атрибута. Сохраните атрибут с помощью кнопки «Ок», тем самым создав ассоциативную связь.
После создания связи между таблицами типов объектов появится стрелка, указывающая, что на один объект типа «Клиент» приходится несколько объектов типа «Гость»:
Для того чтобы у клиента указывался список экземпляров типа «Гость», измените связь ассоциации на связь агрегации.
Для этого переведите курсор на стрелку связи и вызовите меню действий с помощью нажатия на нее правой кнопки мыши.
В меню действий выберите действие «Преобразовать в связь агрегации», после чего появится предзаполненное модальное окно создания дочернего атрибута. Поменяйте наименование атрибута на «Список гостей» и нажмите «Ок», чтобы создать атрибут, изменить связь и вернуться к предметной области.
После настройки связи агрегации между типами объектов изменится вид стрелки связи.
Сохраните настройки на предметной области.
Связи с типом объектов «Отель»
Создайте ассоциативную связь от типа объектов «Отель» к типу объектов «Рейтинг», тем самым создайте объектный атрибут «Рейтинг» [HOTEL_SCORE_ID], для того, чтобы менеджер мог заполнить значение рейтинга для отеля. В окне создания атрибута в поле «Обязательность» установите значение «Да».
Связи с типом объектов «Номер»
Добавьте на предметную область новые типы объектов: «Тип номера» [ROOM_TYPE], «Тип питания» [FOOD_TYPE] с родительским типом объектов «Объект» – экземпляры этих типов объектов будут содержать информацию с указанием типа номера и типа питания соответственно. В разделе «Дополнительные настройки» на вкладке «Контроль доступа» установите «Вид контроля прав» – «Все пользователи имеют право на чтение» этих типов. Сохраните настройки типов и предметную область.
Создайте ассоциативную связь от типа объектов «Номер» к только что созданным типам объектов и создайте новый объектные атрибуты: «Тип номера» [ROOM_TYPE_ID] и «Тип питания» [FOOD_TYPE_ID]. Для обоих атрибутов в окне создания атрибута в поле «Обязательность» установите значение «Да», установите визуал атрибута «Выбор из справочника в виде radio button’ов».
Создайте ассоциативную связь от типа объектов «Номер» к типу объектов «Отель», тем самым создайте объектный атрибут «Отель» [HOTEL_ID], для того, чтобы для номера указывать отель. В окне создания атрибута в поле «Обязательность» установите значение «Да».
Для того, чтобы у Отеля указывался список Номеров, измените связь ассоциации на связь агрегации.
Для этого переведите курсор на стрелку связи и вызовите меню действий с помощью нажатия на нее правой кнопки мыши.
В меню действий выберите действие «Преобразовать в связь агрегации», после чего появится предзаполненное модальное окно создания дочернего атрибута. Поменяйте наименование атрибута на «Список номеров» и нажмите «Ок», чтобы создать атрибут, изменить связь и вернуться к предметной области.
Сохраните предметную область.
Связи с типом объектов «Заявка на бронирование»
Настройте ассоциативную связь от типа объектов «Заявка на бронирование» к типу объектов «Клиент», тем самым создайте новый объектный атрибут «Клиент» [HOTEL_CLIENT_ID] для того, чтобы заявка содержала в себе информацию о клиенте. Сохраните атрибут по кнопке «Ок», тем самым настроив связь, затем сохраните изменения на предметной области.
После создания связи между таблицами типов объектов появится стрелка, указывающая на связь ассоциации.
Создайте ассоциативную связь от типа объектов «Заявка на бронирование» к типу объектов «Номер», чтобы в заявке указывался выбранный клиентом номер, тем самым создайте новый объектный атрибут «Номер» [BOOKING_ROOM_ID], в поле «Обязательность» установите значение «Да», установите визуал атрибута «Выбор из справочника в виде radio button’ов».
Создайте ассоциативную связь от типа объектов «Заявка на бронирование» к типу объектов «Отель», чтобы в заявке указывался выбранный клиентом отель, а также для дальнейшей настройки фильтрации записей по значению объекта. Создайте связь и тем самым создайте объектный атрибут «Отель» [BOOKING_HOTEL_ID], в поле «Обязательность» установите значение «Да», установите визуал атрибута «Выбор из справочника в виде radio button’ов». Сохраните изменения на предметной области.
Создайте ассоциативную связь от типа объектов «Заявка на бронирование» к типу объектов «Рейтинг», тем самым создав объектный атрибут «Рейтинг» [BOOKING_SCORE_ID], для того, чтобы в заявке отображался выбранный клиентом рейтинг, по которому в дальнейшем будет происходить фильтрация отелей.
На вкладке «Визуал» выберите из выпадающего списка визуал атрибута «Выбор из справочника в виде radio button’ов» и смените расположение на «В строку».
Создайте ассоциативную связь от типа объектов «Заявка на бронирование» к типам объектов «Тип номера» [BOOKING_ROOM_TYPE_ID] и «Тип питания» [BOOKING_FOOD_TYPE_ID], для того, чтобы в заявке отображались выбранные клиентом объекты типов, по которым в дальнейшем будет происходить фильтрация номеров. Для обоих атрибутов в окне создания атрибута в поле «Обязательность» установите значение «Да», установите визуал атрибута «Выбор из справочника в виде radio button’ов».
Настройка выражений на типах объектов
Выражения – это алгоритмы на типе объекта, выполняющие автоматическое заполнение привязанных к ним атрибутов. С помощью выражений можно реализовать автонаименование объектов, их нумерацию, расчет вычислимых показателей, а также заполнение атрибутов данными.
Алгоритм – это некая последовательность вычислительных шагов, используемая для выполнения определенной задачи или преобразования данных.
Создание и настройка выражений происходит в настройках типа объекта на вкладке «Выражения\Автокалькуляции». Все системные и созданные пользователями алгоритмы выражений хранятся в реестре алгоритмов объектов в папке «Карточки объектов», в который можно перейти с помощью главного меню: «Администрирование» - «Управление объектами» - «Алгоритмы объектов».
Также можно создать собственную папку для хранения созданных алгоритмов с помощью кнопки на верхней панели. |
Если выражения наследуются от родительского типа объектов, их невозможно отредактировать и удалить на уровне дочернего типа. Например, все типы объектов по умолчанию содержат выражение для автоматического заполнения наименования объекта. Указанное выражение наследуется от типа «Объект». Для задания нового алгоритма следует использовать кнопку «Переопределить настройки».
Для создания нового выражения воспользуйтесь кнопкой «Добавить новое выражение».
Настройте алгоритм для автоматического наименования варианта размещения для экземпляров типа объектов «Номер». Для этого в настройках типа объектов «Номер» перейдите на вкладку «Выражения/Автокалькуляция», выберите строку с алгоритмом для атрибута Наименование и нажмите на кнопку «Переопределить настройки» над реестром выражений.
Создайте алгоритм «Алгоритм наименования номера» [ROOM_NAME_ALG], который будет автоматически генерировать наименование после сохранения. Заполните формулу алгоритма.
Для этого воспользуйтесь следующими функциями:
-
attr – функция вставки значения атрибута в алгоритм, находится в группе «Источники». Выбор атрибутов ограничен заявленным базовым типом объекта, в рамках которого выполняется алгоритм. В качестве атрибута можно вставить цепочечный атрибут - список атрибутов объектного атрибута, для этого необходимо раскрыть вложенный список;
-
text – оператор для ввода текстовых значений (текста), находится в группе «Текст».
Выполните следующие шаги, чтобы повторить формулу алгоритма:
-
Вызовите функцию attr, в появившемся окне выберите атрибут, значение которого будет подставляться в алгоритм – Тип номера.Наименование;
-
Введите с клавиатуры «+» для конкатенации(склеивания) элементов и строк формулы алгоритма между собой;
-
Вызовите функцию text, в кавычках введите с клавиатуры пробел, а затем укажите «+» и вставьте атрибут Тип питания.Наименование.
Сохраните алгоритм и настройки типа объектов «Номер» и вернитесь на предметную область.
Аналогичным образом переопределите алгоритм для автоматического наименования экземпляров типа объектов «Заявка на бронирование».
Создайте алгоритм «Алгоритм наименования заявки» [REQ_NAME_ALG], который будет автоматически формировать наименование заявки, в которой будет указываться клиент, дата создания заявки, отель и номер бронирования.
Заполните формулу алгоритма:
Воспользуйтесь следующими функциями:
Чтобы повторить формулу алгоритма, используйте функции attr и text следующим образом:
-
Вставьте атрибут Клиент с помощью функции attr, введите с клавиатуры знак сложения и вызовите функцию text, в кавычках укажите « от »;
-
Введите с клавиатуры знак сложения, вызовите функцию dateFormat и вместо параметра currentdate() вставьте атрибут Дата создания с помощью функции attr;
-
Введите с клавиатуры знак сложения и вызовите функцию text, в кавычках укажите «: »;
-
Введите с клавиатуры знак сложения и вставьте атрибут Отель.Наименование с помощью функции attr, затем аналогично вставьте атрибут Номер.Наименование;
Сохраните алгоритм и вернитесь к настройке типа объектов.
Создайте алгоритм для подсчета себестоимости бронирования без учета комиссии сервиса.
Сумма себестоимости равняется произведению количества дней бронирования и суммы количества гостей, умноженного на цену за номер.
Добавьте новое выражение с помощью кнопки на панели инструментов, в появившемся окне в поле «Алгоритм, на основании которого считается выражение» по кнопке раскройте список дополнительных действий и выберите «Добавить».
Создайте алгоритм «Алгоритм подсчета себестоимости» [COST_PRICE_ALG] и сохраните настройки алгоритма по кнопке сохранения.
Заполните формулу алгоритма.
Воспользуйтесь следующими функциями:
-
attr;
-
reportDatesBeetwen – расчет количество отчетных периодов между двумя датами.
Выполните следующие шаги, чтобы повторить формулу алгоритма:
-
Вызовите функцию reportDatesBeetwen, в появившемся окне выберите Тип периода - День, так будет проводиться расчет количества забронированных ночей. Вместо второго аргумента с помощью функции attr укажите атрибут Дата заезда, а в качестве третьего – Дата отъезда;
-
Введите с клавиатуры знак умножения и вставьте скобки;
-
В скобках с помощью функции attr вставьте атрибут Количество взрослых, затем введите с клавиатуры знак умножения и укажите атрибут Номер.Цена за ночь (взр.);
-
Вставьте знак сложения и повторите 3 шаг для атрибутов Количество детей и Номер.Цена за ночь (дет.);
Сохраните алгоритм, в окне «Добавить выражение/Автокалькуляцию» переведите в активное состояние переключатель «Установить результат в атрибут» – таким образом результат будет сохраняться в атрибуте типа объектов. Выберите атрибут «Себестоимость заявки» [COST_PRICE], а в поле «Автоматический пересчет выражения» установите «При изменении атрибутов, используемых в алгоритме».
Аналогично создайте новое выражение «Алгоритм подсчета комиссии» [RENT_ALG], который будет рассчитывать комиссию, составляющую 10% от себестоимости заявки.
Заполните формулу алгоритма, используя функцию attr.
Установите результат в атрибут «Комиссия» [RENT], а в поле «Автоматический пересчет выражения» установите «При изменении атрибутов, используемых в алгоритме».
Аналогично создайте новое выражение «Алгоритм подсчета итоговой стоимости» [FINAL_PRICE_ALG], который будет подсчитывать итоговую стоимость бронирования, состоящую из комиссии и себестоимости заявки.
Заполните формулу алгоритма, используя функцию attr.
Установите результат в атрибут «Итоговая стоимость» [FINAL_PRICE], а в поле «Автоматический пересчет выражения» установите «При изменении атрибутов, используемых в алгоритме».
Сохраните алгоритм выражения по кнопке «Ок», затем сохраните изменения в настройках типа объектов с помощью аналогичной кнопки. После этого сохраните предметную область и настроенную объектную модель.
Наполнение справочников
Заполните справочник типа объектов «Тип питания» для того, чтобы в дальнейшем заполнить справочники типов «Номер» и «Отель». Для этого откройте настройки типа объектов «Тип питания» и на панели управления по кнопке «Открыть реестр» перейдите к реестру.
Реестр созданного типа в реестре не имеет записей объектов. На верней панели инструментов расположены кнопки взаимодействия с реестром и объектами типа.
Создайте новый объект, в форме для заполнения укажите Наименование – Без питания, затем сохраните объект по кнопке на панели инструментов.
После сохранения вернитесь к реестру по кнопке на панели информации.
Аналогично в реестре объектов создайте следующие элементы:
-
Завтрак;
-
Завтрак, ужин;
-
Завтрак, обед, ужин;
Аналогично заполните справочники в соответствии с Приложением в следующей последовательности: «Тип номера», «Рейтинг».