Пример создания подсистемы Кадры на платформе Falcon Space

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

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

Реализация проекта 

Проектирование базы данных

Создаем структуру базы данных в SQL Server Management Studio 

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

Можно сразу занести тестовые статусы в hr_statuses (Новый, Кандидат, Стажер, Работает, Уволен)

Проработка структуры приложения 

Будет кабинет HR менеджера, в котором он сможет управлять Департаментами, Сотрудниками: 

  • Страница Департаменты: таблица с возможностью редактирования параметров департамента, а также с возможностью просмотра сотрудников данного департамента. 
  • Страница Сотрудники: единая таблица сотрудников. 
  • Страница Сотрудник: вывод информации о сотруднике (лучше сразу это делать отдельной страницей, чтобы в дальнейшем на нее было проще ссылаться. Также постепенно это форма будет усложняться и есть смысл вынести все управляющие действия по сотруднику на отдельную форму, а не размещать эти данные в таблице). 

Создание структуры страниц в Falcon 

Создаем 3 страницы - deps, humans, human. 

Коды страниц важно указывать без пробелов и других спецсимволов (по сути код является часть названия хранимых процедур).

Настройка страницы deps

Через кнопку Сниппеты добавляем сниппет Таблица на страницу 

Указываем в сниппете код будущей таблицы deps (необязательно должен совпадать с таблицей) и сохраняем (Ctrl + Shift + S).

Указываем также роли доступа к странице - admin,hr (без пробелов, роль можно создать позже в /roles. admin даем доступ, чтобы можно было под ним сразу смотреть и тестировать). 

Также отмечаем галочку Скрыть заголовок на странице, чтобы не показывать стандартный заголовок  на странице (мы будем использовать заголовок от таблицы). 



Через кнопку SQL страницы настраиваем хлебные крошки, title для страницы. 

Код SQL Страницы - https://pastebin.com/yNhz8Z5i

Примечание: Страницу можно найти через поиск сверху или раздел Страницы.

Создание таблицы Департаменты 

Через верхний блок создаем таблицу с кодом deps.

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

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

ВАЖНО: primary key должен идти первым (иметь наименьший ord, должен быть помечен как pk=Да). 

Мы пометили поля code и name как редактируемые (в виде редактирования строки). Также будет 1 фильтр - по полю name. 

Устанавливаем возможность сортировки по полям code, name.

В настройках таблицы (страница Редактирование параметров таблицы "Отделы") указываем:  

  • Роли admin,hr
  • Быстрое создание по имени ДА
  • Функция удаления ДА
  • Размер пагинации 30

Редактируем процедуру GetItems для таблице (на странице Управление таблицей). 

Код процедуры с комментариями:  

https://pastebin.com/vtu7QbwE

Переходим по адресу /deps на страницу отделов и видим пустую таблицу (можно добавить через Management Studio данные, чтобы посмотреть как будет выглядеть заполненная страница).

Создаем процедуры добавления (FastCreate), редактирования полей (UpdateField) и удаления элемента (DeleteItem) на странице Редактирование параметров таблицы "Отделы".

SQL добавления - https://pastebin.com/8sR43Wr2

SQL редактирования поля - https://pastebin.com/DLTtkYTJ

SQL удаления - https://pastebin.com/5Aca46Vx

Примечание: FastCreate создает сущность по 1 полю. Если нужно более сложное создание элемента, то используется отдельная модальная форма. 

Проверяем, что работают все основные функции - вывод, добавление, редактирование, удаление. сортировка, фильтрация по имени.


Таким образом мы довольно быстро создали таблицу отделов с типовым набором функций. 

Использование хранимых процедур позволяет делать сколь угодно гибкими бизнес-логику по извлечению и обработке данных (например, фильтр может работать не только для фильтрации вывода, но и как способ изменения формата вывода данных). 

Примечание:

1. Исключения вы можете смотреть в меню быстрых действий (Молния наверху) - Исключения. 

2. Удобнее смотр результата делать через кабинет администратора, т.к. он получает более расширенную информацию о работе страницы (тексты ошибок-исключений, отладочная информация в Chrome Console). 

3. Если нужно подсмотреть данные в хранимых процедурах используйте exec as_print @str='123'. Вывод будет указываться на /start в панели print.

Вывод подтаблицы людей в таблице Отделы 

Мы добавим возможность посмотреть людей в отделе прямо в таблице Отделы. 

Добавляем в SQL GetItems для таблицы deps дополнительный столбец sub_name, в котором указываем сниппет новой таблицы (и в data-itemID передаем наш текущий отдел). 

Код SQL GetItems - https://pastebin.com/veWLbvbB

Примечание: в таблицах можно использовать псевдополя с префиксами, например, sub_, desc_ backcolor_ и т.д. - они добавляют ячейкам таблицы дополнительные возможности и стили. 

Теперь в выводе таблицы можно увидеть значок +, при нажатии на который идет попытка загрузить таблицу (и выдается ошибка, т.к. такой таблицы пока нет в системе).  В целом в sub_ можно поместить любую разметку, которая будут “скрываться” в поле. 

Создаем таблицу humans, проставляем  roles = admin,hr. Быстрое создание - ДА 

Добавляем колонки и настраиваем их параметры. 

Для примера сделаем редактирование полей Фрилансер (переключатель) и Статус (список выбора). 

Кликаем на хранимую процедуру для поля statusID - она задает возможные значения для списка статусов. 

SQL для statusID - https://pastebin.com/T36kQ706

SQL GetItems - https://pastebin.com/WpU6xabY

SQL FastCreate - https://pastebin.com/J7HgDTTF

SQL UpdateField - https://pastebin.com/cFfP6LP4

Проверяем работу таблицы - открываем ее как подтаблицу в deps, добавляем людей, меняем поле Статус и переключатель Фрилансер. 

Добавление сотрудника через форму 

В случае, если нам нужно создавать запись в базе не на основе 1 поля (как в Fast Create в таблицах), а на основе множества полей, используем компонент форма. 

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

В SELECT 3 добавляем нашу ссылку (данный select можно формировать в зависимости от username и ролей текущего пользователя). 

Код SQL - https://pastebin.com/Wmz3KhLq

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

Создаем форму (через панель быстрых действий) newHuman. В настройках формы прописываем Роли = admin,hr. 

Создаем и настраиваем столбцы (пусть будет 2 поля - ФИО и отдел). 

Для поля Отдел прописываем хранимую процедуру - https://pastebin.com/9DT07ZhA

Используем разметку формы по умолчанию, т.к. оставляем пустым поле Custom HTML в настройках формы. 

Прописываем процедуру GetItem (инициализация полей формы) - https://pastebin.com/69BXbTHb

Процедуру проверки данных перед сохранением формы CheckItem мы по факту не будем использовать и она всегда будет возвращаться result=true - https://pastebin.com/UgpF5rfU

В процедуре SaveItem мы сохраняем нового сотрудника - https://pastebin.com/0yNrLZTc

Проверяем как работает форма добавления сотрудника.

Страница просмотра сущности (человека)

Создадим страницу человека, на которой мы сможем менять информацию о нем, а также выводить другие данные. Будем использовать кастомизированную разметку для этого. 

Также добавим возможность вести комментарии по данному человеку. 

Создание страницы Human 

Создаем страницу human (через панель быстрых действий наверху страницы). 

Добавляем на страницу сниппет вывода формы - https://pastebin.com/j3zfKSds

Указываем спец параметр - primer-sozdaniya-podsistemy-kadry-na-platforme-falcon-space - он подменится на странице на URL параметр с таким именем - itemID. 

Ставим галочку Скрывать заголовок и указываем Роли = admin,hr




Указываем SQL страницы - https://pastebin.com/zQunrp9k

Страница /hr, указанная в хлебных крошках, пока не создана (это будет просто страница всех сотрудников). 

Создание формы Human 

Создаем форму human, указываем  Роли - admin,hr.  

Убираем галочку Скрыть форму после сохранения

Указываем столбцы: depID, fio, phone, freelancer, info.

Указываем SQL для поля depID - https://pastebin.com/ippzur19

Примечание: поля не обязательно должны повторять столбцы таблицы БД. Их можно использовать и для вывода общей информации, построенной в GetItem. 

Прописываем извлечение данных человека в GetItem - https://pastebin.com/1ks5Jrz0

Теперь посмотрим промежуточный результат, заходим на страницу одного из людей /human/2 (подходящий itemID можно взять из таблицы hr_humans)

Пока используется разметка по умолчанию. Прописываем новую разметку в Custom HTML в управлении формой -  https://pastebin.com/AKxqYp8x

В разметке используются специальные переменные вида: 

  • {colcontrol-field} - добавить поле field 
  • {colview-field} - добавить поле на просмотр
  • {collabel-field} - добавить метку от поля
  • {colwithlabel-field} - добавить полноценное поле с меткой

Реализуем процедуру CheckItem (без проверки) - https://pastebin.com/KRNyQ7Tv

Реализуем SaveItem - https://pastebin.com/cHumvzaC

Проверяем работу кнопки сохранения формы: 



Добавление ссылки на страницу Сотрудник в таблицу Humans

Через поиск сверху находим таблицу humans и в GetItems прописываем ссылку в поле fio - https://pastebin.com/TtnvBytz

Альтернативный вариант - можно форма human показывать прямо на той странице в модальном окне, для этого используем сниппет модальной формы и сделаем эту ссылку в поле desc_ для fio - https://pastebin.com/H8SP82p7

 Результат (на фоне видна кнопка Редактировать, которая вызывает это модальное окно): 

Добавление комментариев к человеку

Добавление комментариев на страницу человека

В разделе Компоненты/Типы комментариев (/commentTypes) добавляем новый элемент human

Устанавливаем роли на добавление, удаление и просмотр: admin,hr

Находим страницу human через поиск и выбираем Редактировать. 

Вставляем сниппет комментариев на страницу (сохранение Ctrl + Shift + S). 

В качестве data-itemID устанавливаем primer-sozdaniya-podsistemy-kadry-na-platforme-falcon-space, а data-type = human (тот тип комментариев, который мы создали). 

Сниппет - https://pastebin.com/5C6RQMWT

Проверяем на странице сотрудника /human/2 работу комментариев: 



Добавление комментариев в таблицу

В настройках таблицы humans (находим через поиск сверху) указываем настройки: 

Комментарии построчно ДА

Ctrl + Click на строке для показа комментариев ДА 

Код для комментариев human

В итоге в таблице humans будут доступны комментарии в виде подтаблицы: 

Создание страницы humans

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

Создаем страницу hr

Роли - admin,hr

Снимаем галочку Скрыть заголовок 

Добавляем сниппет таблицы humans с data-itemID=’’   https://pastebin.com/2YMB1hFG

SQL страницы - https://pastebin.com/HPyadWYJ

Чуть меняем в таблице humans хранимку GetItems - https://pastebin.com/NNHFr029 (добавлено условие or @filterItemID=’’).

В итоге получае вывод таблицы humans на странице /hr

Создание роли и пользователя

До этого мы все делали в рамках роли admin (именно поэтому в доступах мы везде прописывали admin,hr, чтобы под админом можно было протестировать форму). 

Создание роли hr

Переходим на Роли /roles и добавляем роль hr 

Создание пользователя с ролью hr

Переходим на Пользователи /members и создаем пользователя с ролью hr.

В отдельном браузере проверяем как работает вход под новым пользователем. 

Добавление меню для пользователя

Меню формируется через настройки страниц или раздел /menu. 

Добавим в меню пункт База сотрудников (/hr) и отделы (/deps). Через поиcк находим эти страницы и ставим для них следующие параметры: 

  • порядок в меню - число. 
  • галочка В меню
  • иконка в меню (по умолчанию fa fa-cube). 

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

В итоге кабинет hr выглядит следующим образом. 

Примечание: 

  • Чтобы пользователь по умолчанию переходил на определенную страницу, в настройках этой страницы ставим галочку Панель управления
  • Пункты меню могут иметь вложенность до 1 уровня. Вы можете выбрать родителя для пункта через настройку Родительская страница в меню

Добавление фото/файлов на странице Сотрудника

Добавим возможность прикрепить к человеку некие файлы. 

В разделе Компоненты / Типы ресурсов добавляем новый тип human (имя необязательно должно совпадать с кодом страницы или с чем то еще). 

Настраиваем основные параметры Типа ресурса: 

Добавляем сниппет менеджера ресурсов в форму human (в GetItem формы в поле info добавляем). 

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

Если в сниппет менеджера ресурсов добавим data-compact=”1”, то будет более компактный вид элементов: 

Примечание. если файлы не грузятся, в первую очередь проверьте, что есть доступ на запись у процесса пула (группа IIS_USRS) к папке /uploads на сервере

Заключение

Таким образом мы создали небольшую систему учета по кадрам, которую в дальнейшем можно развивать под свои специфические бизнес-процессы. 

Хорошо “набив руку” на типовых компонентах (Таблица, Форма, Дашборд), можно кардинально снизить время создания подобных учетных системы, а также улучшить качество выпускаемого продукта (по сравнению с более сложным процессом заказной разработки на полном стеке веб-разработки). 

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства

Бесплатное обучение разработке на Falcon Space

Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space.
Примечание