Was this article helpful?

Спасибо за вашу оценку!

Оставляя более подробный отзыв, вы помогаете нам улучшать документацию

Практикум. Сервис доставки блюд. Объектная модель

Реализация любого приложения начинается с создания предметной области, типов объектов, их атрибутов и настройки связи между элементами объектной модели.

Перед тем как приступить к настройке приложения необходимо выделить основные используемые понятия:

  • Атрибут – значимая характеристика бизнес-сущности, используется для идентификации, классификации, выражения количественной характеристики или состояния объекта;

  • https://docs.greendata.ru/platform/ru/architecture-of-system-objects.html#%D1%82%D0%B8%D0%BF%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0[Тип объектов] – набор характеристик (атрибутов) для описания бизнес-сущности;

  • https://docs.greendata.ru/platform/ru/architecture-of-system-objects.html#%D1%8D%D0%BA%D0%B7%D0%B5%D0%BC%D0%BF%D0%BB%D1%8F%D1%80%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0[Экземпляр] – набор сведений о конкретном объекте, создается Системой при заполнении данными;

  • https://docs.greendata.ru/platform/ru/architecture-of-system-objects.html#%D1%80%D0%B5%D0%B5%D1%81%D1%82%D1%80%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2[Реестр объектов] – накопитель сведений одного типа;

  • Связь – индикатор взаимоотношений между объектами. Существует 3 типа связей: наследования, агрегации и ассоциации.

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

Работа с объектной моделью включает в себя несколько этапов:

  1. Создание предметной области, на которой будет происходить создание объектной модели;

  2. Создание типов объектов. Перед созданием типа объектов необходима проверка отсутствия в Системе, что позволит обойти дублирование данных;

  3. Определение атрибутивного состава нового типа объектов и других настроек;

  4. Настройка связей между типами объектов;

  5. Наполнение типа объектов данными – экземплярами объектов, последующее использование созданного типа в реализации бизнес-приложения.

Для решения рассматриваемой бизнес-задачи необходимо построить объектную модель, содержащую следующие типы объектов:

  • Справочник – тип объектов, который будет хранить экземпляры дочерних справочников:

    • Справочник. Блюдо – справочник, которых хранит экземпляры блюд ресторанов, с указанием цены, веса и других особенностей;

    • Справочник. Категория – справочник, который хранит категории блюд;

    • Справочник. Ресторан – справочник, который хранит экземпляры ресторанов со списком блюд и адресом расположения;

    • Справочник. Способ оплаты – справочник, который хранит значения способов оплаты заказа;

  • Клиент – тип объектов, который хранит персональные данные о клиентах сервиса;

  • Заказ из ресторана – ключевой тип объектов, с которым взаимодействуют пользователи. Клиенты создают экземпляры типа, а Менеджеры просматривают и редактируют их;

  • Позиция из заказа – таблица для хранения данных о выбранном для заказа блюде, количестве и стоимости. Связывает заказ и справочник блюд.

Целевая объектная модель должна выглядеть следующим образом:

image005

Создание предметной области

Для удобства работы на платформе предусмотрена работа с моделью данных в виде ER-диаграммы (диаграммы предметной области), которая наглядно отображает состав и связи между элементами настраиваемой объектной модели.

Для создания новой ER-диаграммы есть два способа:

1. На стартовой странице в виджете «Предметные области» нажмите на кнопку «Создать».

image

2. Через главное меню перейти в пункт «Администрирование»«Управление объектами»«Предметные области». После перехода в реестре предметных областей создать новый экземпляр типа с помощью кнопки «Создать».

image007

Создайте новую предметную область. Задайте для предметной области наименование «Сервис доставки блюд». Сохраните экземпляр с помощью кнопки на верхней панели.

image008

Определение типов объектов

При реализации объектной модели используются типы объектов для описания сущностей.

В редакторе предметной области предусмотрено добавление уже имеющихся типов объектов и создание новых.

image009

Определение справочников

Создайте справочные типы объектов для хранения данных о блюдах, их категориях, ресторанах.

Тип объектов «Справочник»

Создайте новый тип объектов «Справочник» – тип объектов, который будет хранить экземпляры дочерних справочников. Он используется для стандартизации атрибутивного состава для типов-справочников, а также реализации их связи для обращения к значениям каждого при необходимости.

Создайте тип объектов «Справочник» [DICTIONARY], в качестве родителя укажите тип объектов «Объект» — это абстрактный объект, содержащий минимальный необходимый набор атрибутов.

Необходимо корректно заполнить поля «Наименование таблицы» и «Родитель», так как после сохранения данного типа, изменить их будет нельзя.

image010

Сохраните настройки типа объекта с помощью кнопки «Ок» и вернитесь к предметной области – созданный тип объектов будет расположен на ней в виде прямоугольника с наименованием. При необходимости добавить новый справочник, в качестве родителя можно будет использовать тип объектов «Справочник».

image

Тип объектов «Справочник. Блюдо»

Добавьте тип объектов для хранения данных о блюдах «Справочник. Блюдо» [DICT_DISH]. В качестве родителя выберите тип объектов «Справочник» и сохраните настройки типа объектов.

image012

В нижней части окна расположены настройки типа объектов.

На вкладке «Атрибуты» отображается список всех атрибутов данного типа в виде таблицы. В списке указываются следующие атрибуты:

  • Родительские – все атрибуты, унаследованные от типа объектов, указанного в поле «Родитель». Некоторые их настройки можно изменить, но сам список этих атрибутов может быть изменен только на уровне настройки родительского типа объектов;

  • Существующие – атрибуты, существующие в системе у других типов объектов и использованные повторно;

  • Пользовательские – все новые атрибуты, созданные в рамках текущего типа объектов.

Для того чтобы отобразить список родительских атрибутов, необходимо установить флаг «Показать атрибуты родительского типа». Все остальные атрибуты видны без дополнительных действий.

image013

Чтобы добавить существующие в системе атрибуты, нажмите на кнопку «Добавить существующий» и в появившемся модальном окне выберите необходимый из перечня атрибутов. Использование существующих атрибутов позволит обойти дублирование данных и расширение базы данных.

image

Чтобы создать новый атрибут, редактировать или удалить его воспользуйтесь кнопками на панели управления.

image

В окне создания и настройки атрибута его параметры расположены на следующих вкладках:

  • Основное – ввод основной информации об атрибуте;

  • Визуал – выбор визуального представления атрибута;

  • Версионность значений – определение зависимости значения атрибута от времени;

  • События – настройка дополнительных действий при изменении значения атрибута в объекте;

  • Дополнительное – ввод иных характеристик атрибута.

Добавьте существующий атрибут «Изображение» [SYS_IMAGE], который будет содержать изображения блюд. Для этого нажмите на кнопку «Добавить существующий», в появившемся модальном окне активируйте переключатель «Выбор атрибута из полного списка атрибутов» и в раскрывающемся списке с помощью поиска найдите и выберите «Изображение» [SYS_IMAGE]. После этого нажмите на кнопку «Добавить», чтобы добавить его в список атрибутов текущего типа объекта.

image

Перейдите к настройке добавленного атрибута, для этого выберите его и воспользуйтесь кнопкой редактирования или нажмите дважды на него. На вкладке «Основное» измените значение в поле «Наименование» на «Фотография блюда».

image

Перейдите на вкладку «Визуал» и выберите «Изображение», после чего появятся дополнительные настройки: чтобы не указывать точную высоту картинки активируйте опцию «Растянуть по ширине». После чего примените изменения атрибута с помощью кнопки «Ок».

image

Аналогично добавьте существующий атрибут для хранения значения цены «Сумма» [SUMM]. Перейдите в настройки атрибута и измените значения в следующих полях:

  • Наименование – «Цена»;

  • Количество знаков после запятой – «2»;

  • Минимум – «0»;

  • Значение по умолчанию – «0»;

  • Обязательность – «Да».

image

Сохраните настройки типа объектов с помощью кнопки на панели управления. Создайте новый пользовательский атрибут для хранения значения веса блюда. Заполните поля следующим образом:

  • Наименование – «Вес»;

  • Наименование поля для таблицы – «DISH_WEIGHT»;

  • Тип – «Числовой»;

  • Минимум – «0»;

  • Количество знаков после запятой – «2»;

  • Значение по умолчанию – «0»;

  • Обязательность – «Да».

Изменение типа и наименования поля для таблицы недоступно для изменения после сохранения атрибута.

image

Добавьте логический атрибут для обозначения является ли блюдо острым или нет.

Заполните поля следующим образом:

  • Наименование – «Острое»;

  • Наименование поля для таблицы – «IS_SPICY»;

  • Тип – «Логический»;

  • Значение по умолчанию – «Нет»;

  • Обязательность – «Да».

image

На вкладке «Визуал» выберите представление «Логический атрибут в виде checkbox’а».

image

Аналогично создайте логический атрибут для веганского блюда. Настройте визуал и выберите представление «Логический атрибут в виде checkbox’а» как у атрибута «Острое».

image

При необходимости вы можете расширить список атрибутов типа объектов, например добавить состав блюда, значения КБЖУ и прочее.

После добавления атрибутов сохраните изменения в настройках типа объекта с помощью кнопки «Ок» и вернитесь к предметной области. Сохраните предметную область.

image

Тип объектов «Справочник. Категория»

Создать тип объекта можно не только на предметной области. Если есть необходимость обращаться к объектам типа, нужно создать объектный атрибут, который будет связывать два типа объектов и позволять использовать один при описании сущности другого (подробнее будет рассмотрено в 2.3. Настройка связей между типами объекта).

Вернитесь к настройкам типа «Справочник. Блюдо» и создайте новый объектный атрибут:

  • Наименование – «Категория блюда»;

  • Наименование поля для таблицы – «DICT_DISH_CATEGORY_ID»;

  • Тип – «Объект»;

  • Обязательность – «Да».

image

В появившемся окне создайте новый тип объектов «Справочник. Категория блюда» [DICT_DISH_CATEGORY] и установите для него родителя - «Справочник». Экземпляры этого типа объектов будут содержать категории блюд.

image027

Сохраните настройки типа и вернитесь к настройке атрибута с помощью кнопки «Ок».

image

Сохраните настройки атрибута и типа объектов «Справочник. Блюдо» и вернитесь к предметной области.

Функционал Системы позволяет отобразить связанные типы объектов, используемые в качестве объектных атрибутов в других типах (подробнее про работу с объектами на предметной области). Нажмите на точку рядом с типом объектного атрибута для добавления на предметную область дочерних объектов и объектов-справочников. Отобразите на предметной области связанный тип объектов «Справочник. Категория блюда» для объектного атрибута «Категория блюда».

image

После этого тип объектов отобразится на предметной области. Расположение объектов и их связей может быть изменено при помощи перетаскивания (Drag&Drop).

image

Сохраните настройки предметной области.

Тип объектов «Справочник. Ресторан»

Создайте тип объектов для хранения ресторанов «Справочник. Ресторан» [DICT_REST]. В качестве родителя выберите тип объектов «Справочник» и сохраните настройки типа объектов.

image031

Добавьте существующий атрибут «Адрес фактический» [ACTUAL_ADDRESS] для хранения адреса ресторана. Измените наименование на «Адрес ресторана» и укажите «Обязательность» - «Да».

Добавьте существующий атрибут «Изображение» [SYS_IMAGE] для хранения изображения ресторана. Измените наименование на «Фотография ресторана» и укажите «Обязательность» - «Да». Также настройте визуал «Изображение» и активируйте опцию «Растянуть по ширине».

image032

После добавления атрибутов сохраните изменения в настройках типа объекта с помощью кнопки «Ок» и вернитесь к предметной области.

Чтобы не усложнять предметную область, уберите тип «Справочник» с предметной области. Для этого раскройте панель действий, нажав на тип объектов правой кнопки мыши. Затем выберите способ удаления «Убрать Тип объекта из Предметной области». После этого он не будет отображаться на предметной области, но к типу объектов «Справочник» также можно обращаться, так как из системы он не удален.

Сохраните предметную область.

image033

Определение типа объектов «Клиент»

Создайте тип объектов «Клиент» [DELIVERY_CLIENT], экземпляры которого будут хранить данные о клиентах сервиса.

В рамках бизнес-задачи предполагается, что Клиенты могут самостоятельно регистрироваться в системе и оформлять заказ. Регистрация пользователей в Системе предусмотрена только в рамках использования типа «Сотрудник» и его дочерних. Поэтому тип объектов, содержащий данные о клиентах, должен наследоваться от типа объектов «Сотрудник» – системного типа объектов, предназначенного для хранения персональных данных пользователей системы. Он неразрывно связан с типом «Пользователь», который определяет учетные данные для входа сотрудника в систему и группы доступа, в которые входит пользователь (подробнее процесс создания сотрудника и пользователя рассмотрен в 4.2 Создание сотрудника и пользователя).

Несмотря на смысл наименования типа, установите для текущего типа объектов родительский тип «Сотрудник». Сохраните тип объектов.

image034

Необходимо изменить настройки атрибутов, унаследованных от родительского типа. Для этого на вкладке «Атрибуты» активируйте переключатель «Показать атрибуты родительского типа» и внесите изменения для следующих родительских атрибутов:

  • E-MAIL [EMAIL] – на вкладке «Визуал» выберите значение «Электронная почта»;

image035

  • Телефон [PHONE] - на вкладке «Визуал» выберите значение «Телефон».

image036

Сохраните настройки типа объектов и вернитесь на предметную область. Сохраните предметную область.

image037

Определение типа объектов «Позиция в заявке»

Создайте новый тип объектов «Позиция из заказа» [ORDER_ITEM], экземпляры этого типа объектов будут содержать сведения о количестве и стоимости конкретного блюда из заказа. В качестве родителя выберите тип объектов «Объект» и сохраните настройки типа объектов.

image038

Аналогично добавьте существующий атрибут для хранения значения цены «Сумма» [SUMM]. Перейдите в настройки атрибута и измените значения в следующих полях:

  • Наименование – «Стоимость»;

  • Количество знаков после запятой – «2»;

  • Минимум – «0»;

  • Значение по умолчанию – «0»;

  • Обязательность – «Да».

image

Создайте пользовательский атрибут для хранения заказываемого количества конкретного блюда. Заполните поля следующим образом:

  • Наименование – «Количество»;

  • Наименование поля для таблицы – «DISH_NUM»;

  • Тип – «Целое число»;

  • Минимум – «1»;

  • Значение по умолчанию – «1»;

  • Обязательность – «Да».

image

Сохраните настройки типа объектов и вернитесь к предметной области. Сохраните предметную область.

image

Определение типа объектов «Заказ из ресторана»

Создайте новый тип объектов «Заказ из ресторана» [REST_ORDER_FORM], экземпляры этого типа объектов будут содержать информацию о заказах клиента. В качестве родителя выберите тип объектов «ДО. Документ» и сохраните настройки типа объектов.

image042

Тип объектов «ДО. Документ» это системный тип объектов, настройки которого нельзя изменить. Но его можно использовать в качестве родителя для типов объектов, по данным которых в дальнейшем будут формироваться документы, так как он имеет необходимые для этого атрибуты «Дата документа», «Номер документа» и «Прикрепленные файлы».

image043

В экземплярах типа, для которого тип «ДО. Документ» - родительский, можно менять настройки унаследованных атрибутов. Чтобы просмотреть все родительские атрибуты, нажмите на кнопку «Показать атрибуты родительского типа».

Настройте атрибут «Состояние» [STATE_ID]:

  • Наименование – «Состояние заказа»;

  • Значение по умолчанию – «Новый» (такое состояние будет у заказа во время создания и после сохранения объекта);

  • Обязательность – «Да».

image

Настройте атрибут «Прикрепленные файлы» [SYS_FILE_ID], установите визуал «Виджет для файлов».

image

Настройте атрибутивный состав типа объекта согласно таблице ниже (см. Таблица 1).

Таблица 1. Атрибуты типа объектов «Заказ из ресторана»
Вид атрибута Исходное наименование Наименование Наименование поля таблицы Тип атрибута Обязательность Значение по умолчанию Дополнительные настройки

Существующий

Адрес фактический

Адрес доставки

ACTUAL_ADDRESS

Строка

Нет

-

-

Существующий

Дата назначения

Дата и время заказа

INIT_TIME

Дата и время

Да

Текущая дата

Существующий

Сумма

Итоговая сумма заказа

SUMM

Денежный

Да

0

Минимум – 0, знаков после запятой - 2

Существующий

Комментарий

Комментарий к заказу

RESP_COMMENT

Текст

Нет

-

Визуал – «Многострочный ввод»

Новый

-

Оплачен

IS_PAYED

Логический

Да

Нет

Визуал – «Логический атрибут в виде checkbox’а»

Сохраните настройки типа объектов.

image046

Добавьте атрибут «Способ оплаты» [DICT_PAYMENT_WAY_ID] аналогично главе 2.2.1.3 Тип объектов «Справочник. Категория» – при создании атрибута добавьте тип объектов «Справочник. Способ оплаты» [DICT_PAYMENT_WAY], родитель – «Справочник». Укажите визуал – «Выбор из справочника в виде radio button’ов». Этот справочник будет хранить варианты оплаты заказа.

image

Сохраните тип объектов и вернитесь к предметной области. Вынесите тип «Справочник. Способ оплаты» на предметную область и сохраните ее.

image048

Настройка связей между типами объекта

Настройте связи между типами объектов на предметной области. На платформе реализован функционал установки связей для сопоставления данных между двумя типами объектов.

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

Существует 3 вида взаимосвязи между объектами:

  • Наследования – ссылка на родительский объект;

  • Ассоциации – создание объектного атрибута – атрибута с ссылкой на тип объектов;

  • Агрегации – создание дочернего атрибута – атрибут, хранящий в себе набор записей другой таблицы (типа объекта, указанного при настройках атрибута), которая в свою очередь имеет объектную ссылку на текущую таблицу.

Один родительский объект может иметь много дочерних, однако у всякого дочернего объекта может быть только один родитель. Кроме того, один и тот же объект может быть родительским для одних объектов и в то же время дочерним для других.

Связи вида «Ассоциация»

Настройте связи типа «Ассоциация», чтобы объекты одного типа объектов можно было использовать при описании объекта другого типа объектов.

Связи «Справочник. Блюдо»

Настройте связь от типа объектов «Справочник. Блюдо» к типу «Справочник. Ресторан», для того чтобы хранить информацию о ресторане, в котором это блюдо доступно к заказу. Для этого выберите тип объектов «Справочник. Блюдо» и откройте выпадающий список действий, выберите команду «Создать ассоциативную связь» и щелкните по типу объектов «Справочник. Ресторан».

image

После этого откроется модальное окно создания атрибута: измените наименование на «Ресторан» и установите в нем обязательность – «Да». При необходимости в текущем окне можно изменить настройки атрибута до сохранения, но после часть настроек будет недоступна для редактирования. Сохраните изменения, нажав на кнопку «Ок».

image

Таким образом, в типе объектов «Справочник. Блюдо» будет создан объектный атрибут, ссылающийся на Тип объектов «Справочник. Ресторан», а на предметной области они будут соединены стрелкой, обозначающую ассоциативный тип связи.

image

Сохраните предметную область.

Связи «Позиция из заказа»

Настройте связь от типа объектов «Позиция из заказа» к типу «Справочник. Блюдо», для того чтобы хранить информацию о выбранном для заказа блюде. В настройках атрибута измените наименование на «Блюдо» и установите в нем обязательность – «Да».

image

Сохраните атрибут и вернитесь к предметной области.

Настройте связь от типа объектов «Позиция из заказа» к типу «Заказ из ресторана», для того чтобы хранить информацию о том, к какому заказу относится позиция из заказа. В настройках атрибута измените наименование на «Заказ из ресторана» и установите в нем обязательность – «Да».

image

Сохраните атрибут и вернитесь к предметной области. Сохраните предметную область.

image

Связи «Заказ из ресторана»

Настройте связь от типа объектов «Заказ из ресторана» к типу «Справочник. Ресторан», для того чтобы хранить информацию о ресторане, из которого делается заказ. В настройках атрибута измените наименование на «Ресторан», наименование поля для таблицы – «DICT_REST_ORDER_ID», а также установите обязательность – «Нет».

image

Сохраните атрибут и вернитесь к предметной области.

Настройте связь от типа объектов «Заказ из ресторана» к типу «Клиент», для того чтобы хранить информацию о клиенте, который сделал заказ. В настройках атрибута измените наименование на «Клиент» и установите в нем обязательность – «Нет».

image

Сохраните атрибут и вернитесь к предметной области.

image057

Связи вида «Агрегация»

Настройте связи типа «Агрегация», чтобы реализовать возможность объекту одного типа объектов содержать коллекцию объектов другого типа.

Связи «Справочник. Ресторан»

Для того чтобы в ресторане указывался список блюд, то есть экземпляры типа «Справочник. Блюдо», измените связь ассоциации на связь агрегации. Для этого на предметной области выделите стрелку, обозначающую связь и в выпадающем списке действий выберите «Преобразовать в связь агрегации».

image

Создайте дочерний атрибут, измените его наименование на «Список блюд».

image

Сохраните атрибут и вернитесь к предметной области.

Связи «Заказ из ресторана»

Аналогично настройте связь агрегации между типами объектов «Заказ из ресторана» и «Позиция из заказа», для того чтобы была возможность указывать несколько позиций для заказа.

Создайте дочерний атрибут «Позиции заказа».

image

Сохраните атрибут и вернитесь к предметной области. Сохраните предметную область.

image061

Заполнение справочников

Заполните объектами справочные типы объектов «Справочник. Категория блюда» и «Справочник. Способ оплаты». Справочники «Справочник. Ресторан» и «Справочник. Блюдо» необходимо заполнить позже, после настройки визуалов (см. Настройка визуалов).

Заполнение типа объектов «Справочник. Категория блюда»

После сохранения типа объектов появятся дополнительные возможности, представленные кнопками в верхней части окна настройки типа объектов.

Перейдите в настройки типа объектов «Справочник. Категория блюда». Для того чтобы заполнить Тип объектов экземплярами, следует перейти к реестру с помощью кнопки «Открыть реестр».

image

В реестре объектов могут быть добавлены новые записи, отредактированы или удалены существующие. Создайте новую запись в реестре используя кнопку image063 на панели управления.

image

Заполните поле «Наименование» - «Завтрак» и сохраните объект.

image

Вернитесь к реестру и аналогичным образом создайте экземпляры справочника категорий блюд:

  • Горячее;

  • Салат;

  • Суп;

  • Закуска;

  • Десерт;

  • Напитки.

image

После наполнения реестра вернитесь к предметной области.

Заполнение типа объектов «Справочник. Способ оплаты»

Аналогично заполните реестр типа «Справочник. Способ оплаты» следующими объектами:

  • Картой при оформлении заказа;

  • Картой курьеру;

  • Наличными курьеру.

image

После наполнения реестра вернитесь к предметной области.

Определение выражений для типов объекта

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

Создание и настройка выражений происходит в настройках типа объекта на вкладке «Выражения\Автокалькуляции». Все системные и созданные пользователями алгоритмы выражений хранятся в реестре алгоритмов объектов в папке «Карточки объектов», в который можно перейти с помощью главного меню: «Администрирование» - «Управление объектами» - «Алгоритмы объектов».

Также можно создать собственную папку для хранения созданных алгоритмов с помощью кнопки на верхней панели.

image068

Если выражения наследуются от родительского типа объектов, их невозможно отредактировать и удалить на уровне дочернего типа. Например, все типы объектов по умолчанию содержат выражение для автоматического заполнения наименования объекта. Указанное выражение наследуется от типа «Объект». Для задания нового алгоритма следует использовать кнопку «Переопределить настройки».

Для создания нового выражения воспользуйтесь кнопкой «Добавить новое выражение».

image

Выражения для типа «Позиция из заказа»

Настройте алгоритм для автоматического наименования экземпляра для типа объектов «Позиция в заявке». Для этого в настройках типа объектов «Позиция из заказа» на вкладке «Выражения/Автокалькуляция» выберите строку с алгоритмом наименования и выберите «Переопределить настройки».

image

Редактор алгоритмов содержит в себе поле для формулы и панель «Инструменты», на которой располагаются доступные функции: набор функций определяется типом алгоритма.

image071

Создайте алгоритм «Алгоритм наименования позиции в заказе» [ALG_NAME_POS], который будет автоматически генерировать значение для атрибута «Наименование» при создании экземпляра. Наименование будет содержать информацию о выбранном блюде и заказанном количестве. Сохраните настройки алгоритма с помощью кнопки сохранения на панели управления.

image

Заполните формулу алгоритма.

image073

Для этого воспользуйтесь следующими функциями:

Выполните следующую последовательность действий чтобы создать формулу алгоритма:

1. На панели инструментов в разделе «Источники» выберите функцию attr. В появившемся окне выберите атрибут, значение которого будет подставляться в алгоритм – Блюдо. Наименование;

image

2. Введите с клавиатуры «+» для конкатенации(склеивания) элементов и строк формулы алгоритма между собой;

3. На панели инструментов в разделе «Текст» вызовите функцию text, укажите в кавычках «, в кол-ве: », а затем введите «+» и вставьте атрибут «Количество» с помощью функции attr, аналогично шагу 1;

4. После этого аналогично шагам 2-3 добавьте текст « шт.».

Сохраните алгоритм и вернитесь к настройке типа объектов «Позиция из заказа».

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

image

Создайте новое выражение для подсчета стоимости блюда в заказе. Для этого создайте новое выражение с помощью кнопки на вкладке «Выражения/Автокалькуляции». В появившемся окне оставьте активным переключатель «Выражение». Чтобы создать алгоритм выражения, в поле «Алгоритм, на основании которого считается выражение» раскройте список дополнительных действий и выберите «Добавить».

image

Создайте алгоритм «Алгоритм подсчета стоимости позиции» [ALG_SUM_POS], который будет автоматически рассчитывать стоимость позиции, путем произведения цены блюда на его заказываемое количество. Заполните формулу алгоритма:

image077

Воспользуйтесь функцией attr.

Выполните шаги, чтобы повторить формулу алгоритма:

  1. Вставьте атрибут Блюдо.Цена с помощью функции attr;

  2. Введите с клавиатуры знак умножения;

  3. Вставьте атрибут Количество также с помощью функции attr.

Сохраните настройки алгоритма и в настройках выражения переведите в активное положение переключатель «Установить результат в атрибут». Заполните поле значением из выпадающего списка «Стоимость» и в поле «Автоматический пересчет выражения» выберите из списка значение «При изменении атрибутов, используемых в алгоритме».

image

Сохраните настройки выражения, изменения на типе объектов и вернитесь к предметной области.

Выражения для типа «Заказ из ресторана»

Необходимо создать выражение, которое будет автоматически нумеровать заявки. Для реализации механизма автонумерации на платформе представлен отдельный тип объектов «Автонумерация» [SYS_SEQUENCE]. Для того чтобы перейти к нему, откройте главное меню и перейдите в раздел «Справочники» - «Автонумерация».

image

В открывшемся реестре создайте новый экземпляр «Автонумерация заказов» [ORDER_NUM], укажите текущее значение – 1. Сохраните объект.

image

Перейдите на стартовую страницу, нажав на логотип в главном меню, и вернитесь на предметную область, нажав на ее иконку.

image

Откройте настройки типа объектов «Заказ из ресторана» и перейдите на вкладку «Выражения/Автокалькуляции». Переопределите настройки выражения для автоматической нумерации документов.

image082

Создайте алгоритм «Алгоритм автонумерации заказов» [ALG_NUMBER_ORDER], который будет автоматически последовательно нумеровать новые заказы. Заполните поле формулой алгоритма:

image083

Воспользуйтесь функциями:

Выполните следующие шаги чтобы повторить формулу алгоритма:

1. Необходимо реализовать проверку на то, является ли текущий объект новым или он уже сохранен в Системе. Воспользуйтесь функцией if из раздела «Логико-арифметические»;

2. Для проверки является ли объект новым воспользуйтесь функцией isNewObject из раздела «Объекты». В качестве аргумента функции укажите функцию currentObject из этого же раздела;

3. В качестве операторов действия укажите функцию возвращения return из раздела «Алгоритмы». После нее вызовите функцию sequenceNextVal из раздела «Дополнительные» – в появившемся окне выберите «Автонумерация заказов»;

image

4. После фигурных скобок функции if вставьте функцию else из раздела «Логико-арифметические», указывающую список действий при несоблюдении условий;

5. Аналогично шагу 3 укажите функцию возвращения return, а затем укажите атрибут, который содержит номер документа: для этого воспользуйтесь функцией attr из раздела «Источники». В списке атрибутов выберите и вставьте «Номер документа».

Сохраните изменения и вернитесь к настройке выражений типа.

Перейдите к настройкам выражения и в поле «Автоматический пересчет выражения» выберите значение «При изменении атрибутов, используемых в алгоритме».

image

Сохраните настройки типа объектов.

Переопределите настройки выражения для атрибута «Наименование».

image086

Создайте алгоритм «Алгоритм наименования заказа» [ALG_NAME_ORDER], который будет автоматически составлять наименование с данными о номере заказа и клиента. Заполните поле формулой алгоритма:

image087

Воспользуйтесь функциями:

Выполните следующие шаги, чтобы повторить формулу алгоритма:

  1. На панели инструментов в разделе «Текст» вызовите функцию text, укажите в кавычках «Заказ № », а затем введите «+» и вставьте атрибут «Код» с помощью функции attr из раздела «Источники»;

  2. Аналогично шагу 1 укажите «, Клиент: » и атрибут «Клиент».

Сохраните настройки алгоритма. Перейдите в настройки выражения и в поле «Автоматический пересчет выражения» выберите значение «При изменении атрибутов, используемых в алгоритме».

image

Сохраните настройки выражения и типа объектов.

Создайте выражение для автозаполнения клиента – поле должно быть заполнено текущим пользователем, создающим экземпляр типа объектов. Создайте алгоритм «Алгоритм клиента заказа» [ALG_CLIENT_ORDER], укажите базовый тип объектов – «Заказ из ресторана». Алгоритм будет указывать код сотрудника текущего пользователя. Заполните формулу алгоритма:

image089

Воспользуйтесь функцией currentUser.атрибут из раздела «Пользователи и группы»: в модальном окне выберите атрибут «Сотрудник» - «Код».

Сохраните настройки алгоритма. Перейдите в настройки выражения и в поле «Атрибут» выберите «Клиент», а способ пересчета выражения оставьте «При первом сохранении».

image

Сохраните настройки выражения и типа объектов.

Выражения должны располагаться таким образом, чтобы расчет номера заказа производился раньше, чем наименование. Чтобы поменять порядок выполнения выражения, необходимо отметить выражение для заполнения атрибута «Номер документа» и воспользоваться кнопками на панели управления. Разместите выражения в порядке заполнения атрибутов: Номер документа, Клиент, Наименование.

image091

После того, как порядок будет изменен, сохраните настройки типа объектов.

Автокалькуляция для типа «Заказ из ресторана»

Создайте новое выражение для подсчета итоговой суммы заказа в настройках типа объектов «Заказ из ресторана». На вкладке «Выражения/Автокалькуляции» нажмите на кнопку создания выражения и активируйте переключатель «Автокалькуляция».

Заполните поля следующими значениями:

  1. Атрибут со списком объектов – Позиции заказа;

  2. Атрибут для сохранения значения – Итоговая сумма заказа;

  3. Атрибут для агрегации значения – Стоимость;

  4. Способ агрегации – Сумма.

image

Сохраните и вернитесь к настройкам типа объекта с помощью кнопки «Сохранить». Сохраните и примените настройки типа объекта по кнопке «Ок».