Практикум. Система анкетирования и исследования клиентов. Объектная модель
Реализация любого приложения начинается с создания предметной области, типов объектов, их атрибутов и настройки связи между элементами объектной модели.
Перед тем как приступить к настройке приложения необходимо выделить основные используемые понятия:
-
Атрибут – значимая характеристика объекта, используется для идентификации, классификации, выражения количественной характеристики или состояния объекта;
-
Тип объектов – набор характеристик (атрибутов);
-
Экземпляр – набор сведений о конкретном объекте, создается Системой при заполнении данными;
-
Реестр объектов – накопитель сведений одного типа;
-
Связь – индикатор взаимоотношений между объектами. Существует 3 типа связей: наследования, агрегации и ассоциации.
При проектировании объектной модели существует возможность использовать готовые и создавать новые типы объектов. После описания типов данных и определения их характеристик платформа автоматически создаст оптимальные таблицы, ключи, индексы, связи и структуры.
Работа с объектной моделью включает в себя несколько этапов:
-
Создание предметной области, на которой будет происходить создание объектной модели;
-
Создание типов объектов. Перед созданием типа объектов необходима проверка отсутствия в Системе, что позволит обойти дублирование данных;
-
Определение атрибутивного состава нового типа объектов и других настроек;
-
Настройка связей ассоциации и агрегации между типами объектов;
-
Наполнение типа объектов данными – экземплярами объектов – и последующее использование созданного типа в реализации бизнес-приложения.
Для решения рассматриваемой бизнес-задачи необходимо построить объектную модель, содержащую следующие типы объектов:
-
Анкета клиента – ключевой тип объектов, с которым взаимодействуют пользователи. В нем хранится информация об ответах клиента в анкете;
-
Данные клиента – таблица для хранения данных о клиентах, а именно их персональных данных;
-
Справочник – основной тип-родитель для создаваемых в Системе справочников:
-
Семейное положение – справочник для хранения данных статусе семейного положения клиента;
-
Тип деятельности – справочник для хранения данных о роде занятий клиента;
-
Категория должности – справочник для хранения информации о должности клиента;
-
Уровень образования – справочник для хранения информации об образовании клиента;
-
Уровень дохода в месяц – справочник для хранения информация о доходе клиента;
-
Категория прав – справочник для хранения данных об имеющихся категориях прав клиента;
-
Тип кузова автомобиля – справочник для хранения данных о предпочитаемых типах кузова автомобиля;
-
Цель клиента – справочник для хранения данных о намерениях клиента купить или заменить свой автомобиль;
-
Критерии выбора автомобиля – справочник для хранения данных о факторах, которыми руководствуется клиент при выборе автомобиля;
-
Марка автомобиля – справочник для хранения данных о текущих марках автомобилей клиента;
-
Стоимость автомобиля – справочник для хранения данных о стоимости автомобиля.
-
Целевая объектная модель выглядит следующим образом:

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

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

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

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

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

Определение справочников
Определение справочника
Необходимо создать «Справочник» - тип объектов, хранящий экземпляры дочерних справочников. Он используется для стандартизации атрибутивного состава для типов-справочников, а также реализации их связи для обращения к значениям каждого при необходимости.
Создайте новый тип объектов, для этого на предметной области необходимо нажать на кнопку «Создать новый тип объекта».
В появившемся модальном окне в блоке «Основное» расположены поля, отвечающие за наименование объекта, его отражения в БД в качестве реляционной таблицы, а также указывается объект-родитель, от которого будут унаследованы базовые атрибуты и свойства. Тип объектов «Объект» - является абстрактным объектом, содержащим минимально необходимый набор атрибутов.
|
Важно корректно заполнить поле «Наименование таблицы», так как после сохранения типа, изменить их будет нельзя. Так же значение поля «Родитель» можно менять только в случае отсутствия связей настраиваемого типа объекта с другими объектами. |
В появившемся окне заполните поле Наименование – «Справочник» и идентификатор – [DICTIONARY]. В качестве родителя выберите тип объектов «Объект» и сохраните тип объектов.

Вернитесь к предметной области с помощью кнопки «Ок». Вы можете перемещать тип объектов на предметной области, используя принцип перетаскивания drag&drop.
Сохраните настройки предметной области с помощью кнопки на панели управления.
Определение дочерних справочников
Создайте справочник «Семейное положение» [FAMILY_STATUS], в качестве объекта-родителя выберите созданный тип объектов «Справочник». Сохраните тип объектов и вернитесь к предметной области с помощью кнопки «Ок».

Аналогично создайте следующие типы объектов, выбрав в качество объекта-родителя «Справочник»:
-
«Тип деятельности» [OCCUPATION];
-
«Категория должности» [JOB_POSITION];
-
«Категория прав» [LICENSE_CATEGORY];
-
«Тип кузова автомобиля» [TYPE_BODY_AUTO];
-
«Цель клиента» [CUSTOMER_AIM];
-
«Критерии выбора автомобиля» [SELECTION_CRITERIA];
-
«Марка автомобиля» [AUTO_BRAND].

Сохраните предметную область.
Создайте справочник «Уровень образования» [EDUCATION_LEVEL], в качестве объекта-родителя выберите тип объектов «Справочник». Сохраните тип объектов.
В модальном окне настройки типа объектов в нижней части окна на первой вкладке расположены атрибуты объекта. На вкладке «Атрибуты» отображается список всех атрибутов данного типа в таблице. В списке атрибутов указываются унаследованные (родительские), существующие и созданные пользователем атрибуты.
Чтобы добавить существующие в системе атрибуты, необходимо нажать на кнопку «Добавить существующий» и в появившемся модальном окне выбрать интересующий из перечня атрибутов. Использование существующих атрибутов позволит избежать дублирования данных и расширения базы данных.

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

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

Аналогично создайте типы объектов «Уровень дохода в месяц» [INCOME_LEVEL] и «Стоимость автомобиля» [AUTO_COST], в качестве объекта-родителя выберите тип объектов «Справочник». В оба типа объектов аналогично добавьте существующий атрибут «Порядок» [ORD].
Сохраните предметную область.

Определение типа объектов «Данные клиента»
Создайте новый тип объектов «Данные клиента» [CUSTOMER_DATA] — тип объектов, экземпляры которого будут содержать персональные данные клиентов. В качестве объекта родителя выберите тип «Сотрудник» – системный тип объектов с определенным набором минимальных атрибутов, необходимых для хранения персональных данных. Сохраните настройки типа объектов.
На вкладке «Атрибуты» настройте атрибутивный состав типа объектов «Данные клиента». В списке атрибутов указываются унаследованные (родительские), существующие и созданные пользователем атрибуты. Для того чтобы отобразить список родительских атрибутов, необходимо активировать переключатель «Показать атрибуты родительского типа».

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

В модальном окне настройки атрибута его параметры расположены на следующих вкладках:
-
Основное – ввод основной информации об атрибуте;
-
Визуал – выбор визуального представления атрибута;
-
Версионность значений – определение зависимости значения атрибута от времени;
-
События – настройка дополнительных действий при изменении значения атрибута в объекте;
-
Дополнительное – ввод иных (некритичных) характеристик атрибута.
На вкладке «Основное» заполните поля:
-
Наименование – «Возраст»;
-
Идентификатор – «CLIENT_AGE»;
-
Тип – «Целое число»;
-
Минимум – «18».
Минимальное значение возраста «18», так как именно в этом возрасте человек может иметь водительские права.

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

Определение типа объектов «Анкета клиента»
Создайте новый тип объектов «Анкета клиента» [QUESTIONNAIRE] — тип объектов, экземпляры которого будут содержать результаты анкеты клиента. В качестве объекта родителя выберите «Объект» – системный базовый тип объектов, который является родителем для каждого типа объектов в Системе. Сохраните настройки типа объектов.
Добавьте атрибуты для типа объектов (см. Таблица 1).
Таблица 1. Атрибуты типа объектов «Анкета клиента»
| Тип атрибута | Наименование | Наименование поля таблицы | Тип атрибута | Обязательность | Значение по умолчанию | Дополнительные настройки | Визуал |
|---|---|---|---|---|---|---|---|
Существующий |
Ответственный сотрудник |
EMP_RESP |
Объект |
Да |
- |
Тип объекта - Сотрудник |
- |
Существующий |
Возраст |
CLIENT_AGE |
Целое число |
Нет |
- |
минимум – 18 |
- |
Новый |
Наличие прав |
IS_LICENSE_AVAILABLE |
Логический |
Да |
Нет |
- |
Логический атрибут в виде checkbox’а |
Новый |
Наличие авто |
IS_CAR_AVAILABLE |
Логический |
Да |
Нет |
- |
Логический атрибут в виде checkbox’а |
Новый |
Номер анкеты |
PROFILE_NUMBER |
Целое число |
Да |
- |
- |
- |
Новый |
Количество автомобилей |
CAR_COUNT |
Целое число |
Нет |
0 |
минимум – 0 |
- |
Новый |
Комментарий клиента |
CLIENT_COMMENT |
Текст |
Нет |
- |
Размер -2000 |
Многострочный ввод |
Сохраните настройки типа объектов. Вернитесь на предметную область.

Настройка связей между типами объектов
Настройте связи между типами объектов на предметной области. Связь между типами объектов устанавливает отношения между совпадающими значениями в ключевых полях, что позволяет обращаться к записям одного типа из другого.
Существует 3 вида взаимосвязи между объектами:
-
Наследование – ссылка на родительский объект;
-
Ассоциация – создание объектного атрибута – атрибута со ссылкой на тип объектов;
-
Агрегация – создание дочернего атрибута – атрибута, хранящего в себе набор записей другой таблицы (типа объекта, указанного при настройках атрибута), которая в свою очередь имеет объектную ссылку на текущую таблицу.
Перед настройкой связей скроем лишние связи от справочников к родительскому типу объектов «Справочник». Для этого необходимо открыть контекстное меню и выбрать действие «Убрать Тип объекта из Предметной области».

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

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

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

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

Создать ассоциативную связь можно с типом объектов, который не расположен на предметной области. Для этого перейдите к настройке типа объектов «Данные клиента», дважды нажав на него на предметной области. Создайте новый атрибут и в модальном окне заполните следующие поля:
-
Наименование – Город;
-
Наименование поля таблицы – CITY_ID;
-
Тип – Объект;
-
Обязательность – Да.
В поле «Тип объекта» создайте новый тип, для этого раскройте панель дополнительных действий и выберите команду «Добавить».

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

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

Связи с типом объектов «Анкета клиента»
Аналогично настройте связи для типа объектов «Анкета клиента». Создайте обязательные объектные атрибуты, то есть связи ассоциации к следующим справочникам:
-
Категория прав – активируйте переключатель «Множественный выбор»;
-
Марка автомобиля – активируйте переключатель «Множественный выбор»;
-
Критерии выбора автомобиля – активируйте переключатель «Множественный выбор»;
-
Цель клиента;
-
Тип кузова автомобиля;
-
Стоимость автомобиля;
-
Данные клиента.
Таким образом предметная область будет выглядеть следующим образом:

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

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

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

Создайте остальные объекты с помощью кнопки на панели управления. Заполните поля в соответствии с таблицей ниже (см. Таблица 2).
Таблица 2. Объекты типа объектов «Стоимость автомобиля»
| Наименование | Порядок |
|---|---|
1 – 2 млн. руб. |
2 |
2 – 5 млн. руб. |
3 |
Более 5 млн. руб. |
4 |
После этого реестр будет выглядеть следующим образом:
Для того чтобы заполнить сразу несколько справочников и не переходить к каждому реестру по отдельности, можно создавать объекты в типе объектов «Справочник», который является родительским созданных ранее типов-справочников.
Для этого вернитесь на стартовую страницу, нажав на логотип в главном меню.
На виджете «Типы объектов» с помощью поиска найдите тип «Справочник» и нажмите на него, чтобы перейти к его настройкам.

Если тип объектов «Справочник» не отображается в виджете, есть несколько вариантов перехода к настройкам типа объектов:
-
Перейти к реестру типа объектов:
-
На стартовой странице на виджете «Типы объектов» с помощью кнопки «Показать все»;
-
С помощью пункта меню: «Администрирование» - «Управление объектами» - «Типы объектов»;
-

-
Перейти к предметной области, в которой точно расположен необходимый тип объектов:
-
На стартовой странице на виджете «Предметные области»;
-
С помощью пункта меню: «Администрирование» - «Управление объектами» - «Предметные области»;
-

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

Заполните реестры согласно таблице (см. Таблица 3).
Таблица 3. Наполнение справочников
| Семейное положение | Цель клиента | Уровень дохода в месяц | Уровень образования | Город | ||
|---|---|---|---|---|---|---|
Наименование |
Наименование |
Наименование |
Порядок |
Наименование |
Порядок |
Наименование |
Женат/замужем |
Собираюсь купить новый автомобиль |
до 25 тыс. руб. |
1 |
Начальное |
1 |
Пермь |
Холост/не жената |
Собираюсь заменить автомобиль |
25-50 тыс. руб. |
2 |
Среднее |
2 |
Москва |
50-100 тыс. руб. |
3 |
Высшее |
3 |
Анапа |
||
100-200 тыс. руб. |
4 |
Ученая степень |
4 |
|||
200 тыс. руб. и более |
5 |
|||||
Заполнение остальных справочников будет рассмотрено позже.
Настройка алгоритмов на типах объектов
На платформе GreenData предусмотрена работа с алгоритмами. Алгоритм – это некая последовательность вычислительных шагов, используемая для выполнения определенной задачи или преобразования данных.
Система поддерживает работу со всеми типами алгоритмов: линейными, разветвляющимися, циклическими. Они задаются на внутреннем языке, который строится на основе языка Groovy – объектно-ориентированного языка программирования, который является дополнением к языку Java.
Алгоритмы делятся на две группы: бэковые и фронтовые.
Бэковые – алгоритмы объектов, которые выполняются на серверной части приложения. Они используются для:
-
заполнения значений атрибутов типа объектов;
-
расчета вычислимых показателей;
-
запуска этапа процесса интеграции;
-
создания условий и действий на бизнес-процессе;
-
трансформации аналитических форм;
-
настройки действий и операций над объектами системы.
Процесс создания и настройки алгоритмов состоит из нескольких этапов:
-
Создание алгоритма (способ создания нового алгоритма зависит от его типа);
-
Определение параметров карточки алгоритма;
-
Создание формулы алгоритма;
-
Назначение алгоритма к объекту с целью дальнейшего использования.
Каждый алгоритм может переиспользоваться в Системе несколько раз.
Все системные и созданные пользователями бэковые алгоритмы хранятся в реестре алгоритмов объектов, в который можно перейти с помощью главного меню: «Администрирование» - «Управление объектами» - «Алгоритмы объектов».

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

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

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

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

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

Создайте новый объект «Нумерация анкет» [BLANK_COUNTER] и сохраните с помощью кнопки на панели управления.

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

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

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

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

Чтобы повторить алгоритм воспользуйтесь функцией «SequenceNextVal» в группе «Дополнительные»: в модальном окне выберите созданную ранее последовательность «Нумерация анкет» и вставьте в формулу алгоритма с помощью кнопки «Готово».

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

Сохраните настройки выражения и типа объектов.
Выражение для заполнения ответственного сотрудника
Создайте новое выражение для автозаполнения атрибута «Ответственный сотрудник» значением текущего пользователя системы. Добавьте новый алгоритм «Алгоритм заполнения ответственного сотрудника», базовый тип объектов – «Анкета клиента». Укажите папку хранения алгоритма «Система анкетирования». Сохраните настройки алгоритма. Алгоритм будет возвращать наименование текущего сотрудника.
Заполните формулу алгоритма:

Чтобы повторить алгоритм воспользуйтесь функцией возвращения атрибутов текущего пользователя в группе «Пользователи и группы»: в модальном окне выберите атрибут «Сотрудник» и вставьте в формулу алгоритма с помощью кнопки «Ок».

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

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

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

Для этого воспользуйтесь следующими функциями:
Выполните следующую последовательность шагов, чтобы повторить алгоритм:
-
В группе «Текст» вызовите функцию «text», в формуле алгоритма в кавычках введите «Анкета №», затем для склеивания фрагментов строки введите с помощью клавиатуры «+»;
-
Вставьте значение атрибута «Номер анкеты» с помощью функции «attr»;
-
Аналогично шагу 1 введите текст и знак сложения;
-
В группе «Дата» вызовите функцию «dateFormat»: в качестве первого аргумента укажите атрибут «Дата создания», второй аргумент, указывающий формат даты, измените на «dd.MM.yyyy»;
Сохраните алгоритм с помощью кнопки «Ок».
Сохраните настройки выражения и типа объектов.
Настройка проверок
Проверка наличия прав
Проверки представляют собой разновидность алгоритмических выражений, предназначенных для принятия решений том, удовлетворяет ли добавляемый экземпляр определенным условиям и его сохранения. В основе проверки лежит алгоритм, возвращающий значение «Истина» или «Ложь» в зависимости от значения атрибута для экземпляра типа объектов.
Если список проверок типа объекта не пуст, то при сохранении данных карточки объекта автоматически выполняются все проверки. Если какая-либо проверка не пройдена, то Система блокирует сохранение данных и извещает пользователя об ошибке валидации входных данных.
В настройках типа объектов «Анкета клиента» перейдите на вкладку «Проверки».
До сохранения анкеты необходимо производить проверку на наличие значения в атрибуте «Категория прав», если у атрибута «Наличие прав» указано значение «Да».
Создайте новую проверку и заполните следующие поля:
-
Наименование – «Проверка наличия категорий прав»;
-
Обязательность выполнения – «Да»;
-
Тип проверки – «Алгоритмическая»;
-
Жизненный цикл – «Перед сохранением»;
-
Описание – «Укажите категорию(-ии) прав, если у респондента есть права».
В поле «Алгоритм проверки» создайте новый: раскройте панель дополнительных действий и выберите команду «Добавить».

Создайте алгоритм «Алгоритм проверка наличия прав», базовый тип объектов – «Анкета клиента». Укажите папку хранения алгоритма «Система анкетирования». Алгоритм будет проверять логическое значение поля атрибута «Наличие прав» и наличие значения в поле атрибута «Категория прав», если условие возвращает значение «true», то сохранение объекта становится невозможным.
Заполните формулу алгоритма:

Для этого воспользуйтесь следующими функциями:
Выполните следующую последовательность действий, чтобы повторить алгоритм:
-
Для того чтобы в алгоритме указать условие, в группе «Логико-арифметические» вызовите функцию «iif». В поле формулы алгоритма в скобках заполните условие. Для этого в группе «Источники» с помощью функции «attr» вставьте атрибут «Наличие прав». С помощью клавиатуры введите «= true»;
-
Для того чтобы указать еще одно условие, которое должно обязательно выполняться (логическое «И»), в группе «Логико-арифметические» вызовите функцию «and» (или введите ее с помощью клавиатуры). Также в группе «Логико-арифметические» вызовите функцию «isNull», которая будет проверять наличие значения в указанном атрибуте. В скобках в качестве параметра вставьте атрибут «Категория прав»;
-
Заполните второй и третий аргумент функции «iif» с помощью клавиатуры: второй аргумент указывает на то, что возвращает функция при значении «Истина» для логического выражения (непустое значение атрибута), третий – если результат логического выражения – «Ложь» (пустое значение атрибута).
Сохраните алгоритм и настройки проверки с помощью кнопки «Ок».
Проверка наличия авто
До сохранения анкеты необходимо производить проверку на наличие значения в атрибутах «Количество автомобилей» и «Марка автомобиля», если у атрибута «Наличие авто» указано значение «Да».
Создайте новую проверку и заполните следующие поля:
-
Наименование – «Проверка данных о текущем автомобиле»;
-
Обязательность выполнения – «Да»;
-
Тип проверки – «Алгоритмическая»;
-
Жизненный цикл – «Перед сохранением»;
-
Описание – «Если у респондента есть автомобиль(-и), укажите количество и марку(-и)».
В поле «Алгоритм проверки» создайте новый: раскройте панель дополнительных действий и выберите команду «Добавить».

Создайте алгоритм «Проверка данных о текущем автомобиле», базовый тип объектов – «Анкета клиента». Укажите папку хранения алгоритма «Система анкетирования». Алгоритм будет проверять значение логического атрибута «Наличие авто» и значения атрибутов «Текущее количество машин» и «Марка автомобиля», если условие возвращает значение «true», то сохранение объекта становится невозможным.
Заполните формулу алгоритма:

Для этого воспользуйтесь следующими функциями:
Выполните следующую последовательность действий, чтобы повторить алгоритм:
-
Для того чтобы в алгоритме указать условие, в группе «Логико-арифметические» вызовите функцию «iif», в скобках заполните условие. Для этого в группе «Источники» с помощью функции «attr» вставьте атрибут «Наличие авто». С помощью клавиатуры введите «= true»;
-
Для того чтобы указать еще одно условие, которое должно обязательно выполняться (логическое «И»), в группе «Логико-арифметические» вызовите функцию «and» (или введите ее с помощью клавиатуры). Чтобы проверить значение атрибута «Количество автомобилей» на выполнение условия, что его значение равняется «0», вставьте атрибут «Количество автомобилей» и с помощью клавиатуры введите «= 0»;
-
В группе «Логико-арифметические» вызовите служебное слово «or» (или введите его с помощью клавиатуры). Вставьте в формулу проверку наличия значения атрибута «Марка автомобиля», для этого в группе «Логико-арифметические» воспользуйтесь функцией «isNull», а в скобках в качестве аргумента вставьте атрибут «Марка автомобиля»;
-
Заполните второй и третий аргумент функции «iif» с помощью клавиатуры: второй аргумент указывает на то, что возвращает функция при соблюдении условий, третий – если условия не соблюдены.
Сохраните алгоритм и настройки проверки с помощью кнопки «Ок».
Проверка цели клиента
До сохранения анкеты необходимо производить проверку на наличие значения в атрибутах «Стоимость автомобиля», «Критерии выбора автомобиля» и «Тип кузова автомобиля», если у атрибута «Цель клиента» указано значение отличное от «Не собираюсь покупать/менять автомобиль».
Создайте новую проверку и заполните следующие поля:
-
Наименование – «Проверка цели клиента»;
-
Обязательность выполнения – «Да»;
-
Тип проверки – «Алгоритмическая»;
-
Жизненный цикл – «Перед сохранением»;
-
Описание – «Если респондент хочет заменить/купить автомобиль, заполните желаемую стоимость автомобиля, тип кузова автомобиля и чем он руководствуется при выборе автомобиля».
В поле «Алгоритм проверки» создайте новый: раскройте панель дополнительных действий и выберите команду «Добавить».
Создайте алгоритм «Алгоритм проверки цели клиента», базовый тип объектов – «Анкета клиента». Укажите папку хранения алгоритма «Система анкетирования». Алгоритм будет проверять выбранное значение в атрибуте «Цель клиента» и наличие значений в полях атрибутов «Критерии выбора автомобиля», «Тип кузова автомобиля» и «Стоимость автомобиля». Если цель клиента – купить или заменить автомобиль, то он должен заполнить все остальные поля, связанные с выбором автомобиля.
Сохраните настройки алгоритма с помощью кнопки
на панели управления.
Заполните формулу алгоритма:

Для этого воспользуйтесь следующими функциями:
Выполните следующую последовательность действий, чтобы повторить алгоритм:
-
В группе «Логико-арифметические» вызовите функцию «iif», в скобках заполните условие. Для этого в группе «Источники» с помощью функции «attr» вставьте атрибут «Цель клиента». С помощью клавиатуры введите «!=»;
-
Чтобы добавить элемент типа объектов, в группе «Источники» воспользуйтесь функцией «dict»: в модальном окне выберите тип объектов, элементы которого необходимо отобразить – «Цель клиента». Из списка элементов необходимо выбрать «Не собираюсь покупать/менять автомобиль»;

-
В группе «Логико-арифметические» воспользуйтесь служебным словом «and» (или введите его с помощью клавиатуры в поле с формулой алгоритма). С помощью клавиатуры вставьте скобки.
-
В группе «Логико-арифметические» в скобках вызовите функцию «isNull», которая будет проверять наличие значения в поле атрибута. В скобках в качестве параметра вставьте атрибут «Критерии выбора автомобиля»;
-
В группе «Логико-арифметические» вызовите функцию «or» (или введите ее с помощью клавиатуры в поле с формулой алгоритма);
-
Аналогично шагу 6, вызовите функцию «isNull», в скобках в качестве параметра вставьте атрибут «Тип кузова автомобиля»;
-
В группе «Логико-арифметические» воспользуйтесь служебным словом «or» (или введите его с помощью клавиатуры в поле с формулой алгоритма);
-
Аналогично шагу 6, вызовите функцию «isNull», в скобках в качестве параметра вставьте атрибут «Стоимость автомобиля»;
-
Заполните второй и третий аргумент функции «iif» с помощью клавиатуры.
Сохраните алгоритм и настройки проверки с помощью кнопки «Ок».
Сохраните изменения на типе объектов.
Настройка событий
События до сохранения
События – это алгоритмы, срабатывающие до и/или после сохранения экземпляра типа объектов или перед его удалением.
В настройках типа объектов «Анкета клиента» перейдите на вкладку «События». Создайте новое событие до сохранения, которое будет очищать значение некоторых полей при определённых условиях, чтобы избежать некорректных данных: это необходимо в случае, например, если была указана категория прав, а затем для атрибута «Наличие прав» было установлено значение «Нет». В группе «События жизненного цикла объекта» в поле «Событие до сохранения» раскройте панель дополнительных действий и выберите команду «Добавить».

Создайте алгоритм «Алгоритм очистки полей до сохранения», базовый тип объектов – «Анкета клиента». Укажите папку хранения алгоритма «Система анкетирования». Алгоритм будет очищать заполненное поле атрибута «Марка автомобиля» и устанавливать значение «0» для атрибута «Количество автомобилей».
Заполните формулу алгоритма:

Для этого воспользуйтесь следующими функциями:
Выполните следующую последовательность действий, чтобы повторить алгоритм:
-
В группе «Логико-арифметические» вызовите функцию «if», в скобках заполните условие. Для этого в группе «Источники» с помощью функции «attr» вставьте атрибут «Наличие авто». С помощью клавиатуры введите «= false»;
-
Для того чтобы реализовать очистку значения атрибута, в блоке операторов вызовите функцию «attr»: в модальном окне активируйте переключатель «Установить значение», выберите атрибут «Количество автомобилей» и добавьте в формулу алгоритма с помощью кнопки «Ок». После этого в поле формулы алгоритма появится функция, которое присваивает атрибуту, указанному в качестве первого аргумента, значение, указанное в качестве второго аргумента. Для того чтобы атрибуту присваивалось значение «0», вместо «null» введите необходимое число с клавиатуры;

-
Для очистки атрибута с возможностью множественного выбора, в следующей строке операторов к выполнению с помощью клавиатуры введите функцию «clearMultiSelectValue». Для того чтобы значение менялось в текущем объекта, в скобках в качестве первого аргумента вставьте функцию «currentObject» из группы «Объекты», в качестве второго аргумента в кавычках укажите идентификатор атрибута, который необходимо очистить от значений: «Марка автомобиля» – «AUTO_BRAND_ID».
Сохраните алгоритм и настройки проверки с помощью кнопки «Ок».
Сохраните изменения на типе объектов и вернитесь к предметной области с помощью кнопки «Ок».
Настройте подсчет возраста клиента, для этого необходимо настроить событие до сохранения на типе объектов «Данные клиента». Перейдите в настройки типа объекта и на вкладке «События» в группе «События жизненного цикла объекта» в поле «Событие до сохранения» раскройте панель дополнительных действий и выберите команду «Добавить».
Создайте алгоритм «Рассчитать возраст клиента». Базовый тип объектов будет заполнен автоматически системой. Сохраните алгоритм с помощью кнопки сохранения
на панели управления. Данный алгоритм будет рассчитывать возраст относительно текущей даты.
Заполните формулу алгоритма:

Для этого воспользуйтесь следующими функциями:
Для определения формулы алгоритма, выполните следующие шаги:
-
В группе «Алгоритмы» выберите функцию var: в модальном окне заполните поле c названием переменной значением «curr_date» и создайте ее;

-
В группе «Даты» выберите функцию «currentDate», чтобы переменной присваивалась текущая дата;

-
В новой строке в поле формулы алгоритма создайте переменную «birthday». В качестве значения переменной определите значение атрибута. Для этого в группе «Источники» выберите функцию «attr»: в модальном окне в списке атрибутов базового типа объекта (указанного в группе «Общая информация»), выберите и добавьте атрибут «День рождения» с помощью кнопки «Ок»;

-
Создайте переменную «curr_month», которая будет хранить значение текущего месяца. В качестве присваемого значения в группе «Даты» вызовите функцию «getMonth»: в скобках укажите переменную «curr_date», выбрав ее в списке после вызова функции «var»;
-
Аналогично создайте переменную «b_month», которая будет хранить месяц дня рождения;
-
Аналогично создайте переменную «curr_day» и «b_day», которые будут хранить значение дня текущей даты и дня рождения соответственно. Для этого в группе «Даты» воспользуйтесь функцией «getDay»;
-
Создайте переменную «age» и с помощью клавиатуры присвойте ей значение 1;
-
В группе «Логико-арифметические» вызовите функцию «if»: в скобках заполните условие, вставив значения переменных с помощью функции «var». Воспользуйтесь клавиатурой, чтобы ввести знак «не меньше»;
-
В качестве операторов к выполнению снова вызовите функцию «if» и также заполните условие;
-
В качестве операторов к выполнению присвойте переменной «age». Для этого в группе «Дата» и вызовите функцию «reportDatesBetween»: в модальном окне выберите единицу вычисления «Год» для расчета разницы в годах. В поле формулы алгоритма удалите второй аргумент и укажите переменную «birthday», а вместо последнего аргумента – «curr_date». Затем после функции с помощью клавиатуры введите «-1»;
-
После блока операторов внутренней функции «if» в группе «Логико-арифметические» вызовите функцию «else», в блоке операторов присвойте переменной «age» значение, вызвав функцию «reportDatesBetween» и, аналогично шагу 10, изменив аргументы;
-
После блока операторов внешней функции «if» вызовите функцию «else» и заполните блок аналогично шагу 11;
-
После блока операторов функции «else» в группе «Алгоритмы» вызовите функцию «return», а затем вставьте переменную «age».
Сохраните алгоритм с помощью кнопки «Ок».
Сохраните изменения на типе объектов и вернитесь к предметной области с помощью кнопки «Ок».
События после сохранения
Настройте подсчет возраста клиента, для этого необходимо настроить событие после сохранения на типе объектов «Анкета». Перейдите в настройки типа объекта и на вкладке «События» в группе «События жизненного цикла объекта» в поле «Событие после сохранения» раскройте панель дополнительных действий и выберите команду «Добавить».
Добавьте новый алгоритм «Возраст клиента анкеты», базовый тип объектов – «Анкета клиента». Укажите папку хранения алгоритма «Система анкетирования». Сохраните настройки алгоритма. Алгоритм будет возвращать наименование текущего сотрудника.
Заполните формулу алгоритма:

Чтобы повторить алгоритм воспользуйтесь функцией attr в разделе «Источники»: в модальном окне выберите цепочечный атрибут «Данные клиента» - «Возраст» и вставьте в формулу алгоритма с помощью кнопки «Ок».
Сохраните алгоритм с помощью кнопки «Ок». Сохраните изменения на типе объектов.