Руководства
Введение в веб-платформу Falcon Space. C чего начать?Мануал для начинающего разработчика Falcon SpaceВидео о создании сайтов на Falcon SpaceВопросы и ответы для тех, кто начал разрабатывать на Falcon SpaceТиповые ситуации для админа-разработчика в панели управления Как создать таблицу на сайте по шагамКак создать форму на сайте по шагамКак создать дашборд в личном кабинете пользователяПример создания системы по учету Кадры (HR) на сайтеКак улучшить свой код - заметки по ревизии кодаКак сделать аналитический отчет или таблицу на сайтеПодробное описание процесса создания формы Обратная связьСоздание системы уведомлений из внешних источников (через API)Как отслеживать историю действий пользователя или историю событий по объекту системыКак сделать отслеживание посещений сайта конкретными людьми?Как сделать перевод сайта на другой язык для нетехнического специалистаКак сделать функционал оценки полезности материалаСоздание из под editor структуры личных кабинетов (роли, страницы)Улучшение адаптивности страниц под мобильные устройстваСоблюдение порядка в проекте в процессе сопровождения сайтаКак считать показатели год-к-году (YoY) в отчете по периодамКак добирать данные по объекту из внешних источников по API
Основа Falcon SpaceОсновные компонентыВозможностиКоммуникация пользователейДизайн, стилизация, юзабилити
Гид по стилям Falcon SpaceРуководство по юзабилити сайтов на Falcon SpaceЭлементы стилизации в разметке страниц кабинетов на Falcon SpaceУправление темами сайта. Как создать новую тему дизайна сайтаКак внедрять готовую верстку в страницуКак внедрить форму настроек внешнего вида сайтаГорячие клавиши Falcon SpaceСоздание своей темы для сайтаОграничения по изменению дизайнаКак сделать дизайн сайта со скругленными элементами (или без скруглений)Как сделать свою верхнюю полоску сайта (customHeader)Как внедрить новый шрифтКак через CSS управлять стилями конкретных страницКак показать элемент увеличенным при наведении (например ячейка таблицы)Изменение стилизации через CSSКак поменять столбцы местами на смартфоне (order-1 order-md-2)Как сделать анимацию иконокАнимация элементов. Как работать с анимациейДобавление анимацииУправление анимацией для форм, таблицКастомные CSS файлы для страницыПанели с тенью и со скруглением Как внедрить свой CSS на каждой странице порталаКак сделать основное меню горизонтальнымКак убрать все тени и сделать дизайн плоскимКастом разметка верхней панели (TopMakeup)Интерфейс кабинета - это не методы репозитория CRUD!Как сделать липкую панель сверху страницыКак сделать основное меню белымВывод справа на странице float панелиКак поменять степень затемнения фона у диалогового окнаУправление иконкой в окне alert справа вверху окнаКак стилизовать иконкуВывод на экран денежных сумм (отображение рублей, валюты) - as-moneyКак увеличить картинку на страницеВизуализация воронки на основе данныхКак сделать модальное окно определенной шириныПанели показа подсказок (для базовых инструкций по странице)Как сделать левое меню по умолчанию свернутым?
Лендинги
Работа с лендингами (lands)Как создать новый лендинг?Как максимально быстро создать лендинг на базе Falcon SpaceКак внедрить лендинг со своим шаблоном и стилямиКак создать сайт полностью на лендингах?Как устроен механизм лендингов внутриКак переместить лендинг на главную страницу (или на любую другую)Как сделать набор типовых лендингов (например, карточки товаров)?Как сделать копию лендинга с другим адресом или перенести лендинг на другой сайтКак использовать много раз одну секцию в разных лендахКак отключить секцию лендинга или менять их порядок на лендингеКак задать высоту/подложку секции лендингаКак для ленда подключить скрипты или CSSКак прописать SEO параметры для лендаКак создать свой шаблон новой секции лендинга?Как редактировать секцию лендингаГде посмотреть список лендингов?Как сделать меню лендинга или меню сайта на лендахКак сделать подстановочными фавикон, seo title у лендингаКак сделать так, чтобы PWA работал для лендингов
Универсальный APIИнтеграции
Подключение к удаленным серверам SQL Server через Linked ServerZapier интеграция на платформе Falcon SpaceПрием платежей через Яндекс.КассуИнтеграция с Робокассой (платежный шлюз)Пополнение средств через Yookassa (Юкасса)Прием платежей на сайте через CloudPaymentsИнтеграция с платежным шлюзом LifePayУведомление от ТБанка по операциям с расчетным счетомИнтернет-эквайринг Тинькоф БанкИнтеграция API DaData.ru подсказки по адресамИнтеграция коллтрекинга МАНГО ОФИС (режим Площадка)Интеграция API Курсы валют Центрального Банка РФИнтеграция API Почта РФИнтеграция API Служба доставки СДЭК (CDEK)Интеграция API Служба доставки Деловые линииИнтеграция API IpGeoBase Город по IP-адресуИнтеграция API DaData.ru Город по IP-адресуКак вычислить расстояние между 2 геоточками через Google MapsКак сделать интеграцию с Мой СкладКак сделать вебхук для передачи данных с Тильды на Falcon SpaceСканирование штрихкодов и QR кодов через камеру смартфонаПолучение данных контрагента по ИННВнедрение подсказок dadata на сайтВывод точек на карте Яндекс. Интеграция с Яндекс КартыИнтеграция с телефонией Zadarma.comПолучение данных о контрагенте - интеграция ЗаЧестныйБизнесИнтеграция с AMO CRMИмпорт контактов в CRM из Google КонтактыВход/регистрация через ВКонтакте(vk.com)Интеграция CRM с онлайн чатом на сайте (Replain)Как связать yandex metrika clientID с пользователем сайта?Как сделать обработку входящей почты (создание клиента в CRM из Email)Интеграция сайта с ChatGPT (openAI)Интеграция с Яндекс МетрикаИнтеграция с Youtube. Получение роликов каналаИнтеграция с Ozon, Wildberries - извлечение статистикиИнтеграция с API Яндекс Вебмастер
КаталогиНавигацияДокументыДополнительные компонентыПродвижение, SEOСистемные моменты
Отслеживание изменений хранимых процедур и страниц (logChanges)Логирование изменений объектов на примере хранимых процедурРабота с редактором кода в личном кабинете разработчикаЛогирование событий в приложении (trace)Действия в браузере actions JSONКак быстро перенести решение (таблицы, формы, страницы) на другую базу?Настройка диалоговых окон и alert окошекМелкие удобства для разработчика в личном кабинетеКак отследить и ограничить большое количество однородных запросов на сайтеИзменение процедуры поиска, процедуры общих элементов Layout, процедуры периодического запускаКак изменить длительность показа сообщенийФорма обратной связи по ошибкам, предложениям suggestionКак разграничивать права на уровне бизнес-логики хранимых процедурБезопасная обработка данных и проверка доступа в хранимых процедурахИспользование типовой разметки в виде сниппетов для решения различных задачКак логировать клики на определенных элементах в системеОбработка старых браузеров (сообщение об устаревшем браузере)Безопасность. Как скрыть некоторые заголовки (http headers) в запросахОтображение сообщения об offline (Нет сети)Рабочее место разработчика через терминалОбновляемые метки времени в сообщениях на сайтеПодсказка по интерфейсам хранимых процедур компонентовЗащита от CSRF атак через дополнительный токен в формахДополнительные параметры в @parameters (во многих хранимых процедурах)Как логировать события в Falcon в другую базу (чтобы ограничить рост основной базы данных)Сообщение об использовании куки (Cookies)Как искать код некоего компонента (таблицы, формы и т.д.) на страницеКак сделать так, чтобы почта отправлялась асинхронно без задержекРабота со сниппетами кодаУниверсальная кнопка действия as_submitРежим показа таблицы/формы в alert окнеРеализация системы анализа IP посетителей
Системное администрированиеHOWTO
Как сделать отдельный универсальный поискМодальная ссылка (as-modal)Как идентифицировать анонимного пользователя (по куки)?Дашборды. Как вызвать коллбек после загрузки дашбордаКак вынести правила редиректа в отдельный файл configСтраницы. Как сделать редирект на другую страницу при загрузкеСтраницы. Как изменить текст на главнойСтраницы. Как использовать дополнительные параметры на страницеСтраницы. Как выводить списковые данные в теле страницы (repeater)Страницы. Настройки страницы для формирования главного менюСтраницы. Мне нужен в URL параметр itemID, но там передается из-за сущностей InstanceIDСтраницы. Как сделать мастер описания функционала страницыКак добавить событие в календарь GoogleКак сделать кнопку определенного действияКак сделать горячие клавиши для событий (нажатие кнопки)Как показывать баланс пользователя вверху кабинета?Где взять фото пользователяКак сделать поддомены с разными языками для сайтаКак управлять страницей “404 Страница не найдена”Отслеживание всех действий пользователя в системеКак выводить денежные данныеКак дать возможность некоторым ролям вводить html в формах?Что делать если открытая вкладка (tab) сбрасывается при перезагрузке страницы?Как реализовать создание периодического отчета на почтуПопап (popup) окна - показ модальной формы по событию или таймаутуКак быстро просматривать типовые отчеты с возможностью редактирования SQLКак максимизировать показатели Google PageSpeed для сайта на Falcon SpaceКак реализовать окно уведомления об использовании куки (cookies)Вывод на странице штрихкода (barcode) и QR кодаКак в тексте сделать ссылки кликабельнымиКак внедрить на сайте автоопределение города с возможностью выбораКак внедрить оглавление в текстКак вставить универсальный поиск в любое место страницыКак определить координаты lat lng пользователя в текущий моментКак сделать сортировку дерева с Drag-and-DropКак обновить часть страницы по клику на кнопкеЗагрузка дашборда по ссылке as-dashboard-linkКак запретить копировать текст с сайта. Как добавлять ссылку копирайта в текст при копировании с сайтаКак изменить шаблоны хранимых процедур для Формы, Таблицы и др.Определение местоположения пользователя по IP через API (as-ip)Форма Нашли ошибку по Ctrl+EnterКак определить откуда пришел пользователь на сайт? Фиксация источника посещения пользователем сайтаКак сделать ссылку, которая скроллит к элементу на страницеКак показать/скрыть область на странице по ссылке - as-collapseКак сделать обновление интрефейса у другого пользователя по некоему событию
Таблицы
Как сделать таблицу в модальном окне (открывается в диалоговом окне)Как реализовать подтаблицу (вложенная таблица), подформу в таблицеКак связать 2 таблицы Загрузка таблицы по ссылкеКак связать таблицу и редактирование сущности (зависимая страница)Как использовать комментарии в таблицахКак добавить в фильтре значение Не выбрано со значениемКак установить ширину колонки в таблице Как добавить диапазон даты или чисел (слайдер) в фильтрКак сделать операции только для некоторых строкКак делать различный набор столбцов одной таблицы для разных ролейКак убрать показ количества строк результата в заголовке таблицы? Как сделать сортировку в таблицеКак сделать Editable для галочки (Да/Нет) в AS CRUDКак редактировать колонку с датойКак скрыть строчные операции в таблице для определенных строкКак добавить коллбек после загрузки таблицыОтображение таблиц на смартфонеКак работать с галочками в таблицеЧастые ошибки при настройке таблицы (почему не работает таблица)Как обновить подтаблицу после выполнения некой операцииКак обрабатывать групповые операции через модальную формуКак создать предустановленные фильтры для таблицыКак сделать сворачивание таблицы (collapse table)Как убрать старые dict процедуры в формах и таблицахКак сделать фильтр с деревом галочекКак отключить сохранение состояния таблицы (фильтры)Как сделать ссылку на всю строку таблицыКак передать через URL значение фильтраКак сделать обрезание ячеек таблицыСортировка строк в таблицеСоздание сущности с учетом значений фильтровОптимизация запроса SQL - извлечение данных для таблицыКастомная разметка в таблицеРежим кастом вывода через JS (custom)Как настроить дополнительные шапку и подвал у таблицыКак сделать зависимые фильтры в таблицеИмпорт данных в формате файлов txt, csv через таблицуКак гибко управлять видимостью столбцов таблицыКак сделать раскрытие подстроки через любую ссылкуРежим быстрой фильтрации строк без обращения на серверВыпадающая панель рядом с названием таблицы dropdownPanelКак убрать при загрузке установку фокуса ввода на фильтр (data-nofocus)?Как сделать аналитику по периодам (таблица с интервалами дат)Кастомизация вида операций таблицыСтилизация фильтров таблицы
Формы
Как вывести форму во всплывающем окне рядом с кнопкой (popover)Загрузка формы по ссылкеКак принимать в форму не 1 параметр (itemID), а несколько входящих параметров? data-param-p1Как сделать модальную форму Как добавить коллбек после загрузки формы и после сохранения формы.Как показывать на форме прогресс заполнения (прогресс заполнения формы)Как сделать форму в виде мастера шаговКак сделать подтверждение действия в СМС (SMS) в формеКак установить поля в форме по умолчанию при загрузкеКак показывать изменяющуюся информацию при изменении полейФормы. Как сделать в форме более 1 кнопки действий (несколько кнопок действий на форме)Как правильно обрабатывать цены (дробные числа) на формеКак передать в форму скрытый параметрКак в форме добавить примеры заполнения полей (example)Как выбрать значение списка через справочник в модальном окнеКак сделать окно подтверждения действия формыДинамическое изменение itemID у формы в зависимости от других элементов страницыКак скрывать/показывать, обновлять область на странице при изменении поля формыКак добавить новый элемент, если в списке на форме его нетКак перезагрузить страницу после сохранения формыКак вывести списковые данные или таблицу внутри формыКак сделать зависимые поля в форме (Страна, Город)Как сделать кастомную HTML разметку для формы (jsRender)Как создать кастом форму с подтверждением действия по Email или SMSУстановка фоновой панели для формыКак сделать задержку при сохранении формы (saveDelay)Подсказки-ограничители длины для полей в формеКак динамически изменять тип поля формыКак сохранить значение поля в браузере, чтобы каждый раз его не вбивать при загрузке (оставлять последнее сохраненное). Запоминание поля формы в браузереКак выводить разные данные на одной форме для разных ролейКак сделать форму с сохранением состоянияКак сделать поля с анимацией значенийИспользование Google Recaptcha в формахКак обновить таблицу после сохранения формы в модальном окнеКак указать произвольную маску для поля ввода в формеКастом проверка полей формы через JSКак в выборе даты (datepicker) задать доступные датыКак создать форму для редактирования сущностиЗагрузка формы в выпадающем окне (dropdown)Добавление смайликов (emoji) в поля формКак у формы сделать progress bar при загрузке формыРабота с датами в формахПоказ количества символов рядом с полем в формеКнопка очистки формы ResetКонтроль заполнения ключевых форм на сайтеКак сделать форму с простым подтверждением действия (confirm)Как поменять соотношение длины метки и поляКак при сохранении формы вывести сообщение printlog, а не alert
Поля формы
Поле Список поиска значения (autocomplete, search-select) Как в форме вывести список галочек (множественный выбор поля)Как сделать списки select и chosen с категориями (optgroup)Как сделать выбор адреса и сохранение координат места (lat,lng).Установка графика работы (поле формы weekTime)Как в форму в SaveItem передать некий скрытый параметр (например Куки или параметр URL)Как работать с полем типа Слайдер (ползунок)Как использовать в форме поле Выбор файлов. Типы полей формы files, remoteFile, fileContentКак редактировать текст элементов  HTML в Rich-редактореУправление настройками поля через options_ поляВставка ссылок по шаблону (ютуб ссылка, patternString)Как использовать Флажки и выбор радио с картинкойКак работать с полем ТаймерКак сделать выбор цвета в формеКак вывести дерево с выбором галочекКак выводить и сохранять множественный список через chosen поле.Обработка даты из поля datetime-localРедактор текста - код поля формы html2Как работать с полем Дробное числоКак настроить выбор вариантов для поля Интервал датВыбор из элементов с табуляцией - поле формы tabsТип поля imageCheckbox (флажок-картинка)Поле формы Градиент (gradient)
Загрузка файлов, картинок
Работа с ресурсами. Загрузка картинок, файловУправление файлами на сервере (файловый менеджер)Загрузка на форме текстовых файлов и обработка их в процедуре SaveItemКак добавить в колонку таблицы управление файламиЗагрузка файлов с drop областью и гибкой разметкой (компонент as-files)Как приводить картинки к заданным размерам при загрузке на сайтИмпорт и парсинг файла CSVЧем отличается код типа ресурса от типа объектаКак получить ссылку на ресурсКак установить права доступа на менеджер ресурсов?Как загружать фото с обрезкой Как увеличить размер подгружаемых файлов (как загружать большие файлы)Передача файлов по FTPКак искать битые ресурсы, картинкиПодбор оптимальных параметров менеджера ресурсовПодгружаемые файлыМассовая загрузка картинок в систему ресурсовНе грузится файл через менеджер ресурсовФайлы загружаются на сервер, но при скачивании выходит ошибка 404.3 (загрузка ODT, Проблема с MIME типами)Поддержка Webp формата для оптимизации картинокМассовая оптимизация картинок в менеджерах ресурсовНе выводятся картинки на сайте (401, 403 ошибка при загрузке картинок)Как установить JS callback после выполнения crop картинкиНе отображается картинка юзера справа вверхуКак изменить текст "Нет файлов" в as-resourceManager?Обработка спецсимволов в названии файлов Как поставить водяной знак на картинку при загрузкеКак оптимизировать качество картинок при загрузке на сайтКак создавать для загружаемой картинки копии с разными размерамиКак загружать файл, когда задействовано диалоговое окноКак загрузить файл по конкретному путиКак сделать возможность грузить только 1 фотоКак поставить фильтр на типы файлов и ограничить форматы загрузки картинок?Как обработать событие после удаления или добавления файлов? Не выводятся картинки в менеджере ресурсов. Что делать?Как вставить менеджер ресурсов в форму с заданным itemID
HOWTO SQLHOWTO JSHOWTO ВерсткаРешение проблем

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности

Пример создания системы по учету Кадры (HR) на сайте

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

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

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

Общий процесс выглядит так: 

  • создаем таблицы и связи в базе данных
  • создаем страницы и помещаем там сниппеты таблиц/форм.
  • реализуем таблицы и формы (определяем их поля + хранимые процедуры).

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

Создать базу данных и таблицы можно двумя способами: 

  1. Создаем структуру базы данных в SQL Server Management Studio (либо вы можете это сделать прямо в Falcon Space - https://falconspace.ru/docs/sozdanie-struktury-bd---sozdanie-tablic-bd-i-svyazey-mezhdu-nimi). Подключаемся к БД, добавляем новую диаграмму и  создаем таблицы и связи между ними. Пока в базе Сотрудники, Департаменты и Статусы сотрудников. Далее структуру можно постепенно расширять по мере появления новых потребностей. Можно сразу занести тестовые статусы в hr_statuses (Новый, Кандидат, Стажер, Работает, Уволен)
  2. Непосредственно на сайте. Для этого в меню "Система" выбираем "таблицы БД" и нажимаем кнопку "Новая таблица БД", вводим название новой таблицы. На странице управления таблицей добавляем нужные столбцы, указываем внешние ключи и индексы таблицы. Более подробно можно прочитать в этой статье.


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

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

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

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

Создаем 3 страницы - deps, humans, human (более подробно про работу со страницами можно прочитать в этой статье). 

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

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

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

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

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

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



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

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

Примечание: Страницу можно найти через поиск сверху или раздел Страницы (ссылка на страницу управления страницами для роли "admin" - /pages, для роли "editor" -  /editorpages).

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

В "меню быстрых действий" (молния справа вверху блок) создаем таблицу с кодом 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/wqzGD7UP

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 запрос (RunSQL) и в открывшемся окне добавляем такой код

select top 5 * from as_trace where code = 'print' order by id desc

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

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

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

Добавляем в 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 в таблицах), а на основе множества полей, используем компонент форма

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

Добавим  в панель быстрых действий можно через страницу /menu (кнопка Панель быстрых действий). В более старых версиях можно вносить правки через процедуру GetLayout SELECT 3 (Быстрые действия / 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/SBtBhk4r

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

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

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

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

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

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

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

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

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

Указываем спецпараметр - url-itemID в фигурных скобках - он подменится на странице на 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 устанавливаем url-itemID в фигурных скобках (при загрузке страницы это подменится на itemID из URL), а data-type = human (тот тип комментариев, который мы создали). 

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

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



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

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

  • Комментарии построчно ДА
  • 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 добавляем). Менеджер ресурсов - компонент для загрузки файлов и прикрепления к определенной сущности (например, human).

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

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

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

Заключение

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

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

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Нужна бесплатная консультация?
Планируете делать веб-проект?
Если видео Youtube плохо грузится, то попробуйте найти видео в ВК видео на канале Falcon Space
Сайт использует Cookie. Правила конфиденциальности OK
Подождите...