Руководтсво администратора/разработчика

Документация

Язык быстрой разработки

@-функции

Дополнительные функции, доступные как в 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)