Руководтсво администратора/разработчика
Документация
Язык быстрой разработки
@-функции
Дополнительные функции, доступные как в Buildbox Studio, так и в HTML-шаблонах. Используются для доступа к внешним параметрам запроса (из URL), системных данных (дата, время, данные пользователя) и других операций.
Синтаксис
Как использовать @-функции в формах
@-функции - это обычные функции, которые принимают параметры и производят вычисления. Написание не чувствительно к регистру, поэтому @Time(Now) и @time(now) идентичны.
Параметрами может служить значение, параметр (при использовании в шаблоне), так и другая @-функция.
Если параметром является строка, то параметр должен быть заключен в одиночные кавычки (').
Пример простого использования в Buildbox Studio
@FieldSrc(title,null) >> null
Если значение не найдено.
Пример использования вложенной @-функции:
@SplitIndex(@Time(Now),'-',1,'разделение не возможно')
Пример использования внутри HTML-шаблона
Для использования @-функций в шаблонизаторе используется фунция dogparse, она вызывает обработку @-фукнции внутри HTML-шаблона
{{dogparse @FieldSrc(title,null) $.Request $Data}} >> 2019-12-21T14-21-11Z-bc800b
@Rand
Выводит случайное числовое значение в интервале 0-999999
@SendMail
Отправка email-письма в момент обработки
Функция @SendMail использует синтаксис функции Sendmail (смотреть подробнее)
Пример
@SendMail("smtp.gmail.com","587","sendaccount@gmail.com","12345","Петров [fromuser@gmail.com]","Иванов [touser@gmail.com], Сидоров [touser2@gmail.com]","Новое в итальянской кухне",$mes,"")
@Time
Возвращает текущее время
Функция Time возвращает текущее время (в текстовом формате).
Формат
@Time(param)
- param (NOW или THIS) - возвращает дату в формате 2006-01-02 15:04:05. Если значение не передано, то по-умолчанию формат RFC3339 - "2006-01-02T15:04:05Z07:00".
@Path
Получаем значения системных полей объекта
@URL
получаем данные из URL-запроса
@URL(имя_параметра_URL, значение по-умолчанию)
@Obj
Получение значения параметров текущего объекта
@Obj(параметр, значение по-умолчанию) - значения параметров текущего объекта
@DateModify
Изменение переданного времени
Функция DateModify возвращает измененное согласно переданному интервалу время (в текстовом формате).
Формат
@DateModify(date, modificator, format)
date (строка) - значение, которое будет преобразовано в формат времени и изменено согласно параметру modificator
modificator (строка) - шаблон изменения даты (в формате времени) (например: '+10h', '-1h10m10s')
format (строка) - формат переданной даты. Если значение не передано, то по-умолчанию формат RFC3339 - "2006-01-02T15:04:05Z07:00".
Примеры:
@DateModify("2020-11-25T15:30:00Z07:00", '+10h', '2006-01-02T15:04:05Z07:00') >> 2020-11-26T03:30:00Z07:00 @DateModify(@Time(Now), '-10h', '2006-01-02 15:04:05') - отняли 10 часов в текущей дате @DateModify("2020-11-30", '+10h', '2006-01-02') @DateModify('2020-11-30 15:30:00', '+10h', '2006-01-02 15:04:05')
@FieldValue
Получение выбранное/введенное значение аттрибутов текущего запроса
@FieldValue(id-поля на форме запроса) - получаем выбранное/введенное значение аттрибутов текущего запроса
Формат
@FieldValue(id_field, default_value, separator)
- id_field - id (идентификатор) поля, значение которого мы хотим получить (из формы ввода или из контекста данных);
- default_value - значение по-умолчанию, которое будет возвращено, в случае пустого значения функции
- separator (не обязательно, по-умолчанию ',') - разделитель, которым будут элементы, в случае обработки массива объектов.
Функция може обрабатывать не один объект, а несколько, в этом случае полученные значения будут возвращены в строке, разделеные указанным символом.
Пример:
@FieldValue('_owner','not user') - обрабатываем один объект > Иванов Иван Иванович @FieldValue('_owner','not user', ' и ') - обрабатываем несколько объектов > Иванов и Петров
@FieldSrc
Получение src-значения выбранного значения аттрибутов текущего запроса (только для полей-выбора)
Функция @FieldSrc получаем src-значение выбранного значения аттрибутов текущего запроса. Внимание! Только для полей-выбора (связь и множественная связь)
Формат
@FieldSrc(id_field, default_value, separator)
- id_field - id (идентификатор) поля, значение которого мы хотим получить (из формы ввода или из контекста данных);
- default_value - значение по-умолчанию, которое будет возвращено, в случае пустого значения функции;
- separator (не обязательно, по-умолчанию ',') - разделитель, которым будут элементы, в случае обработки массива объектов.
Функция може обрабатывать не один объект, а несколько, в этом случае полученные значения будут возвращены в строке, разделеные указанным символом.
Пример:
@FieldSrc('_owner','not user') > 2020-07-06T06-35-44z03-00-ac71a0 @FieldSrc('_owner','not user','|') > 2020-07-06T06-35-44z03-00-ac71a0|3020-07-06T06-35-44z03-00-ac71a1
@FieldSplit
Получение части значения из поля формы
Функция @FieldSplit разбиваем значения разделителю для указанного элемента (Value(по-умолчанию)/Src) для поля формы и возвращаем значение по указанному номеру (начала от 0)
Формат
@FieldSplit(id_field, element, separator, number_value)
- id_field - id (идентификатор) поля, значение которого мы хотим получить (из формы ввода или из контекста данных);
- element - элемент поля (value/src). По-умолчанию - value;
- separator - разделитель, по-которому будет разбито значение на элементы массива.
Внимание! В функцию нельзя вставить символ "/" (слешь), поэтому в случае необходимости используйте значение заместителя - slash. - number_value - номер возвращаемого значения в полученном массиве значений после разбиения. Первый элемент имеет номер 0.
Пример:
Необходимо получить имя/фамилию из строки владельца объекта "Иванова Иван Иванович" (поле имеет id - "_owner")
@FieldSplit('_owner','value',' ',1) > Иван @FieldSplit('_owner','value',' ',0) > Иванов
@User
Получаем значение состояния текущего пользователя
@User(параметр, значение по-умолчанию)
@Replace
Замена подстроки в строке
@Replace - ищет и заменяет подстроку в переднном значении
Формат
@Replace(string, old, new, count)
- string - значение в котором будет производиться замена;
- old - старое (заменяемое) значение/символ.
- new - на что заменять
- count - количество замен (по-умолчанию -1 - заменить все найденные вхождения)
Пример:
@Replace('Иванов Иван', 'И', 'Ли', -1) > Ливанов Ливан @Replace('Иванов Иван', 'И', 'Ли', 1) > Ливанов Иван
@Role
Вывод данных о текущей роли пользователя
Позволяет получить доступ к данным роли пользователя
Рецепты
Готовые решения для использования @-функций
1. Формируем номер как часть поля (вторая часть, разделенного тире (-) названия) и форматированная дата.
@FieldSplit('cityfrom','value','-',1)-@Replace(@Replace(@Replace(@Time(Now),':','',-1),'-','',-1),' ','-',-1)