На этой странице собраны разные примеры формул, которые можно просто скопировать и начать использовать, без необходимости в них разбираться.
let({
text: 'Это текст, который обрезается по длине',
length: 20,
}, if(
length(text) > length,
substr(text, 0, length) & '…',
text
))
В формулу нужно подставить переменную с текстом, а так же заменить 20
на количество символов, после которого строка будет обрезаться.
let({
format: 'DAY.MONTH.YEAR HOUR:MINUTE',
date: now(),
}, let({ dateStr: toString(toDate(date)) }, reduce([
['YEAR', substr(dateStr, 0, 4)],
['MONTH', substr(dateStr, 5, 2)],
['DAY', substr(dateStr, 8, 2)],
['HOUR', substr(dateStr, 11, 2)],
['MINUTE', substr(dateStr, 14, 2)],
['SECOND', substr(dateStr, 17, 2)],
], replace(value, item[0], item[1]), format)))
Если формулу не менять, то она будет выводить отформатированную текущую дату и время. Можно заменить now()
переменной, дата в которой представлена в виде числа или строки.
let({
count: 22,
words: ['день', 'дня', 'дней'],
}, count & ' ' & words[if(
count % 100 > 4 and count % 100 < 20,
2, [2, 0, 1, 1, 1, 2][if(count % 10 > 5, 5, count % 10)]
)])
В формуле нужно заменить 22
на ваше число, и заменить слова.
let({
bytes: 332334,
units: ['B', 'KB', 'MB', 'GB', 'TB', 'PB'],
precision: 2,
zero: 'Empty',
}, if(bytes == 0, zero, let({
e: min([floor(log(bytes, 1024)), 5])
}, round(bytes / pow(1024, e), precision) & units[e])))
В формуле bytes
- это размер файла в байтах, units
- используемые обозначения, а zero
это текст, используемый при 0 байт.
let({
bytes: 435478876,
units: [' тыс.', ' млн.', ' млрд.', ' трлн.'],
precision: 0,
zero: '0',
}, if(bytes == 0, zero, let({
e: min([floor(log(bytes, 1000)), 4])
}, round(bytes / pow(1000, e), precision) & if (e > 0, units[e - 1], ''))))
let({
v:split(toString(var1),"."),
q: if(v[1]?==null,"","."&if(toNumber(v[1])<=9,v[1]&"0",v[1])),
e:let({
number: v[0],
delimiter: ' ',
},
let({
str: toString(number) },
trimStart(join(map(range(0, length(str)),
if((length(str) - item) % 3 == 0, delimiter, '') & substr(str, item, 1)
)))))
},
e&q)
let({
array: [1, 2, 3, 4, 5]
}, map(
sort(map(array, [item, random()]), item[1]),
item[0]
))
Данная формула перебирает массив array
в функции sort
, и возвращает массив в перемешанном виде в переменной pass
, а далее функция slice
собирает из этой переменной 9 символов для пароля. Количество символов можно регулировать изменяя число в slice
.
let({
array:
["A", "B", "C", "D", "E", "F", "G", "H", "I",
"K", "L", "M", "N", "O", "P", "Q", "R", "S",
"T", "V", "X", "Y", "Z", "a", "b", "c", "d",
"e", "f", "g", "h", "i", "k", "l", "m", "n",
"o", "p", "q", "r", "s", "t", "v", "x", "y",
"z", "1", "2", "3", "4", "5", "6", "7", "8",
"9", "0", "_", "$", "@", "%", "&", "~"],
pass: map(
sort(map(array, [item, random()]), item[1]),
item[0]
)
},
join(slice(pass, 0, 9 ), "")
)
Данная формула преобразует цвет из формата RGB в формат RGBA, добавляя Alfa канал
let({
color: data.fields.statusColor,
bgcolor: replace(color, ")", ", 0.12)"),
},
bgcolor
)
Берет аватарку. Если аватарки нет — картинка no-avatar
if( user.current.avatar == "",
"https://cs6.pikabu.ru/avatars/1121/x1121129-2144512139.png",
user.current.avatar)
let({
dueDate: data.fields.dueDate,
dateSplit: split(dueDate, ' '),
dateDay: join(reverse(split(dateSplit[0], ".")), "-"),
dateTime: dateSplit[1],
date: toNumber(toDate(dateDay & ' ' & dateTime)),
},
date
)
Данная формула выполняет транслитерацию rus-to-lat
let({
ru: "Съешь же ещё этих мягких французских булок, да выпей чаю",
text: lower(ru),
dict: {
a: ["а","a"],
b: ["б","b"],
v: ["в","v"],
g: ["г","g"],
d: ["д","d"],
e: ["е","e"],
yo: ["ё","yo"],
zh: ["ж","zh"],
z: ["з","z"],
i: ["и","i"],
ik: ["й","i"],
k: ["к","k"],
l: ["л","l"],
m: ["м","m"],
n: ["н","n"],
o: ["о","o"],
p: ["п","p"],
r: ["р","r"],
s: ["с","s"],
t: ["т","t"],
u: ["у","u"],
f: ["ф","f"],
h: ["х","kh"],
ts: ["ц","ts"],
ch: ["ч","ch"],
sh: ["ш","sh"],
sha: ["щ","sha"],
tz: ["ъ",""],
bi: ["ы","i"],
mz: ["ь",""],
ee: ["э","e"],
yu: ["ю","yu"],
ya: ["я","ya"],
space: [" ", "-"],
sim: ["!",""],
zpt: [",",""]
},
rep0: replaceAll(text, dict.a[0], dict.a[1]),
rep1: replaceAll(rep0, dict.b[0], dict.b[1]),
rep2: replaceAll(rep1, dict.v[0], dict.v[1]),
rep3: replaceAll(rep2, dict.g[0], dict.g[1]),
rep4: replaceAll(rep3, dict.d[0], dict.d[1]),
rep5: replaceAll(rep4, dict.e[0], dict.e[1]),
rep6: replaceAll(rep5, dict.yo[0], dict.yo[1]),
rep7: replaceAll(rep6, dict.zh[0], dict.zh[1]),
rep8: replaceAll(rep7, dict.z[0], dict.z[1]),
rep9: replaceAll(rep8, dict.i[0], dict.i[1]),
rep10: replaceAll(rep9, dict.ik[0], dict.ik[1]),
rep11: replaceAll(rep10, dict.k[0], dict.k[1]),
rep12: replaceAll(rep11, dict.l[0], dict.l[1]),
rep13: replaceAll(rep12, dict.m[0], dict.m[1]),
rep14: replaceAll(rep13, dict.n[0], dict.n[1]),
rep15: replaceAll(rep14, dict.o[0], dict.o[1]),
rep16: replaceAll(rep15, dict.p[0], dict.p[1]),
rep17: replaceAll(rep16, dict.r[0], dict.r[1]),
rep18: replaceAll(rep17, dict.s[0], dict.s[1]),
rep19: replaceAll(rep18, dict.t[0], dict.t[1]),
rep20: replaceAll(rep19, dict.u[0], dict.u[1]),
rep21: replaceAll(rep20, dict.f[0], dict.f[1]),
rep22: replaceAll(rep21, dict.h[0], dict.h[1]),
rep23: replaceAll(rep22, dict.ts[0], dict.ts[1]),
rep24: replaceAll(rep23, dict.sh[0], dict.sh[1]),
rep25: replaceAll(rep24, dict.sha[0], dict.sha[1]),
rep26: replaceAll(rep25, dict.tz[0], dict.tz[1]),
rep27: replaceAll(rep26, dict.bi[0], dict.bi[1]),
rep28: replaceAll(rep27, dict.mz[0], dict.mz[1]),
rep29: replaceAll(rep28, dict.ee[0], dict.ee[1]),
rep30: replaceAll(rep29, dict.yu[0], dict.yu[1]),
rep31: replaceAll(rep30, dict.ya[0], dict.ya[1]),
rep32: replaceAll(rep31, dict.space[0], dict.space[1]),
rep33: replaceAll(rep32, dict.ch[0], dict.ch[1]),
rep34: replaceAll(rep33, dict.zpt[0], dict.zpt[1]),
result: replaceAll(rep34, dict.sim[0], dict.sim[1]),
},
result)
let({
monthr: let({
format: 'MONTH',
date: now(),
}, let({ dateStr: toString(toDate(date)) }, reduce([
['YEAR', substr(dateStr, 0, 4)],
['MONTH', substr(dateStr, 5, 2)],
['DAY', substr(dateStr, 8, 2)],
['HOUR', substr(dateStr, 11, 2)],
['MINUTE', substr(dateStr, 14, 2)],
['SECOND', substr(dateStr, 17, 2)],
], replace(value, item[0], item[1]),
format
)))},
if(monthr == "01", "января",
if(monthr == "02", "февраля",
if(monthr == "03", "марта",
if(monthr == "04", "апреля",
if(monthr == "05", "мая",
if(monthr == "06", "июня",
if(monthr == "07", "июля",
if(monthr == "08", "августа",
if(monthr == "09", "сентября",
if(monthr == "10", "октября",
if(monthr == "11", "ноября", "декабря"))))))))))))
let({
c : var2,
q : if(length(toString(var2))<6 ,111111,toNumber(substr(var2,3))),
w : if(length(toString(var2))<6 ,111111, toNumber(substr(var2,1))),
e : if(length(toString(var2))<6 ,111111, toNumber(substr(var2,1,2))),
st : if(length(toString(var2))<6 ,111111, toNumber(substr(var2,0,3))),
h : ['сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот'],
t : ['', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто'],
o : ['один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять','десять'],
p : ['одиннацать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать'],
z : ['десять','одиннацать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать'],
a : ["одна тысяча","две тысячи","три тысячи","четыре тысячи","пять тысяч","шесть тысяч","семь тысяч","восемь тысяч","девять тысяч","десять тысяч",],
b : ["одиннадцать тысяч", "двенадцать тысяч", "тринадцать тысяч","четырнадцать тысяч","пятнадцать тысяч","шестнадцать тысяч","семнадцать тысяч","восемнадцать тысяч","девятнадцать тысяч"],
d : "тысяч",
},
if(c<=10,o[c-1],
if(c<20,p[toNumber(split(toString(c/10),".")[1])-1],
if(c<100,t[toNumber(split(toString(c/10),".")[0])-1]&if(exists(split(toString(c/10),".")[1]) == false,""," "&o[toNumber(split(toString(c/10),".")[1])-1]),
if(c<1000,h[toNumber(split(toString(c/100),".")[0])-1]&
if(toNumber(substr(c,1,1))==0,
if(toNumber(substr(c,2,1))==0,""," "&o[toNumber(substr(c,2,1))-1]),
if(toNumber(substr(c,1,1))==1," "&z[toNumber(substr(c,2,1))]," "&t[toNumber(substr(c,1,1))-1]&if(toNumber(substr(c,2,1))==0,""," "&o[toNumber(substr(c,2,1))-1]))
),
if(c<10000,a[toNumber(substr(c,0,1))-1]&
if(toNumber(substr(c,1,1))==0,""," "&h[toNumber(substr(c,1,1))-1])&
if(toNumber(substr(c,2,1))==0,
if(toNumber(substr(c,3,1))==0,""," "&o[toNumber(substr(c,3,1))-1]),
if(toNumber(substr(c,2,1))==1," "&z[toNumber(substr(c,3,1))]," "&t[toNumber(substr(c,2,1))-1]&if(toNumber(substr(c,3,1))==0,""," "&o[toNumber(substr(c,3,1))-1]))
),
if(c<20000,if(c==10000,a[9],b[toNumber(substr(c,1,1))-1]&
if(toNumber(substr(c,2,1))==0,""," "&h[toNumber(substr(c,2,1))-1])&
if(toNumber(substr(c,3,1))==0,
if(toNumber(substr(c,4,1))==0,""," "&o[toNumber(substr(c,4,1))-1]),
if(toNumber(substr(c,3,1))==1," "&z[toNumber(substr(c,4,1))]," "&t[toNumber(substr(c,3,1))-1]&if(toNumber(substr(c,4,1))==0,""," "&o[toNumber(substr(c,4,1))-1]))
)),
if(c<100000,t[toNumber(substr(c,0,1))-1]&if(toNumber(substr(c,1,1))==0," "&d," "&a[toNumber(substr(c,1,1))-1])
&
if(toNumber(substr(c,2,1))==0,""," "&h[toNumber(substr(c,2,1))-1])&
if(toNumber(substr(c,3,1))==0,
if(toNumber(substr(c,4,1))==0,""," "&o[toNumber(substr(c,4,1))-1]),
if(toNumber(substr(c,3,1))==1," "&z[toNumber(substr(c,4,1))]," "&t[toNumber(substr(c,3,1))-1]&if(toNumber(substr(c,4,1))==0,""," "&o[toNumber(substr(c,4,1))-1]))
),
if(c<1000000,h[toNumber(substr(c,0,1))-1]&
if(count(split(toString(st/100),"."))==1," "&d&" "&
if(q<=10 ,if(q-1==-1,"",o[q-1]),
if(q<20,p[toNumber(split(toString(q/10),".")[1])-1],
if(q<100,t[toNumber(split(toString(q/10),".")[0])-1]&if(exists(split(toString(q/10),".")[1]) == false,""," "&o[toNumber(split(toString(q/10),".")[1])-1]),
if(q<1000,h[toNumber(split(toString(q/100),".")[0])-1]&
if(toNumber(substr(q,1,1))==0,
if(toNumber(substr(q,2,1))==0,""," "&o[toNumber(substr(q,2,1))-1]),
if(toNumber(substr(q,1,1))==1," "&z[toNumber(substr(q,2,1))]," "&t[toNumber(substr(q,1,1))-1]&if(toNumber(substr(q,2,1))==0,""," "&o[toNumber(substr(q,2,1))-1]))
),''))))
," "&if(w<10000,a[toNumber(substr(w,0,1))-1]&
if(toNumber(substr(w,1,1))==0,""," "&h[toNumber(substr(w,1,1))-1])&
if(toNumber(substr(w,2,1))==0,
if(toNumber(substr(w,3,1))==0,""," "&o[toNumber(substr(w,3,1))-1]),
if(toNumber(substr(w,2,1))==1," "&z[toNumber(substr(w,3,1))]," "&t[toNumber(substr(w,2,1))-1]&if(toNumber(substr(w,3,1))==0,""," "&o[toNumber(substr(w,3,1))-1]))
),
" "&if(w<20000,if(w==10000,a[9],if(z==10,a[9],b[toNumber(substr(w,1,1))-1])&
if(toNumber(substr(w,2,1))==0,""," "&h[toNumber(substr(w,2,1))-1])&
if(toNumber(substr(w,3,1))==0,
if(toNumber(substr(w,4,1))==0,""," "&o[toNumber(substr(w,4,1))-1]),
if(toNumber(substr(w,3,1))==1," "&z[toNumber(substr(w,4,1))]," "&t[toNumber(substr(w,3,1))-1]&if(toNumber(substr(w,4,1))==0,""," "&o[toNumber(substr(w,4,1))-1]))
)),
if(w<100000,t[toNumber(substr(w,0,1))-1]&if(toNumber(substr(e,1,1))==0," "&d," "&a[toNumber(substr(w,1,1))-1])
&
if(toNumber(substr(w,2,1))==0,""," "&h[toNumber(substr(w,2,1))-1])&
if(toNumber(substr(w,3,1))==0,
if(toNumber(substr(w,4,1))==0,""," "&o[toNumber(substr(w,4,1))-1]),
if(toNumber(substr(w,3,1))==1," "&z[toNumber(substr(w,4,1))]," "&t[toNumber(substr(w,3,1))-1]&if(toNumber(substr(w,4,1))==0,""," "&o[toNumber(substr(w,4,1))-1]))
),
"")
)
)),
"Продолжать тут")
)
)
)
)
)
)
)
)
let({
units: ["ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"],
teens: ["десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"],
tens: ["", "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"],
hundreds: ["", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"],
number: var1,
// Разделяем число на целую и дробную части
integerPart: floor(number),
decimalPart: round((number - floor(number)) * 100), // Умножаем на 100 для обработки до сотых долей
// Функция для преобразования целой части
getIntegerPart: let({
n: integerPart,
h: floor(n % 1000 / 100),
t: floor((n % 100) / 10),
u: n % 10,
hundredText: if(h > 0, hundreds[h] & " ", ""),
tenText: if(t == 1, teens[u], if(t > 1, tens[t] & " ", "") & if(t != 1 and u > 0, units[u], ""))
}, hundredText & tenText),
// Функция для преобразования тысяч
getThousands: let({
tn: floor(integerPart / 1000) % 1000,
th: floor(tn / 100),
tt: floor((tn % 100) / 10),
tu: tn % 10,
thousandText: if(th > 0, hundreds[th] & " ", ""),
tenThousandText: if(tt == 1, teens[tu], if(tt > 1, tens[tt] & " ", "") & if(tt != 1 and tu > 0,
if(tu == 1, "одна",
if(tu == 2, "две", units[tu])
) & " ", "")
),
thousandsWord: ['тысяча', 'тысячи', 'тысяч'][if(
tn % 100 > 4 and tn % 100 < 20,
2, [2, 0, 1, 1, 1, 2][if(tn % 10 > 5, 5, tn % 10)]
)]
}, if(tn > 0, thousandText & tenThousandText & " " & thousandsWord & " ", "")),
// Функция для преобразования миллионов
getMillions: let({
mn: floor(integerPart / 1000000),
mh: floor(mn / 100),
mt: floor((mn % 100) / 10),
mu: mn % 10,
millionText: if(mh > 0, hundreds[mh] & " ", ""),
tenMillionText: if(mt == 1, teens[mu], if(mt > 1, tens[mt] & " ", "") & if(mt != 1 and mu > 0, units[mu], "")),
millionsWord: ['миллион', 'миллиона', 'миллионов'][if(
mn % 100 > 4 and mn % 100 < 20,
2, [2, 0, 1, 1, 1, 2][if(mn % 10 > 5, 5, mn % 10)]
)]
}, if(mn > 0, millionText & tenMillionText & " " & millionsWord & " ", "")),
// Функция для преобразования дробной части
getDecimalPart: let({
dn: decimalPart,
dt: floor(dn / 10),
du: dn % 10,
tenDecimalText: if(dt == 1, teens[du], if(dt > 1, tens[dt] & " ", "") & if(dt != 1 and du > 0,
if(du == 1, "одна",
if(du == 2, "две", units[du])
), "")),
decimalsWord: ['сотая', 'сотых', 'сотых'][if(
dn % 100 > 4 and dn % 100 < 20,
2, [2, 0, 1, 1, 1, 2][if(dn % 10 > 5, 5, dn % 10)]
)]
}, if(dn > 0, tenDecimalText & " " & decimalsWord, "")),
// Сборка результата
result: getMillions & getThousands & getIntegerPart & if(decimalPart > 0, " и " & getDecimalPart, "")
}, result)
let({
units: ["ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"],
teens: ["десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"],
tens: ["", "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"],
hundreds: ["", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"],
number: var1,
// Разделяем число на целую и дробную части
integerPart: floor(number),
decimalPart: round((number - floor(number)) * 100), // Умножаем на 100 для обработки до сотых долей
// Функция для преобразования целой части
getIntegerPart: let({
n: integerPart,
h: floor(n % 1000 / 100),
t: floor((n % 100) / 10),
u: n % 10,
hundredText: if(h > 0, hundreds[h] & " ", ""),
tenText: if(t == 1, teens[u], if(t > 1, tens[t] & " ", "") & if(t != 1 and u > 0, units[u], ""))
}, hundredText & tenText),
// Функция для преобразования тысяч
getThousands: let({
tn: floor(integerPart / 1000) % 1000,
th: floor(tn / 100),
tt: floor((tn % 100) / 10),
tu: tn % 10,
thousandText: if(th > 0, hundreds[th] & " ", ""),
tenThousandText: if(tt == 1, teens[tu], if(tt > 1, tens[tt] & " ", "") & if(tt != 1 and tu > 0,
if(tu == 1, "одна",
if(tu == 2, "две", units[tu])
) & " ", "")
),
thousandsWord: ['тысяча', 'тысячи', 'тысяч'][if(
tn % 100 > 4 and tn % 100 < 20,
2, [2, 0, 1, 1, 1, 2][if(tn % 10 > 5, 5, tn % 10)]
)]
}, if(tn > 0, thousandText & tenThousandText & " " & thousandsWord & " ", "")),
// Функция для преобразования миллионов
getMillions: let({
mn: floor(integerPart / 1000000),
mh: floor(mn / 100),
mt: floor((mn % 100) / 10),
mu: mn % 10,
millionText: if(mh > 0, hundreds[mh] & " ", ""),
tenMillionText: if(mt == 1, teens[mu], if(mt > 1, tens[mt] & " ", "") & if(mt != 1 and mu > 0, units[mu], "")),
millionsWord: ['миллион', 'миллиона', 'миллионов'][if(
mn % 100 > 4 and mn % 100 < 20,
2, [2, 0, 1, 1, 1, 2][if(mn % 10 > 5, 5, mn % 10)]
)]
}, if(mn > 0, millionText & tenMillionText & " " & millionsWord & " ", "")),
// Функция для преобразования дробной части
getDecimalPart: let({
dn: decimalPart,
dt: floor(dn / 10),
du: dn % 10,
tenDecimalText: if(dt == 1, teens[du], if(dt > 1, tens[dt] & " ", "") & if(dt != 1 and du > 0,
if(du == 1, "одна",
if(du == 2, "две", units[du])
), "")),
decimalsWord: ['копейка', 'копейки', 'копеек'][if(
dn % 100 > 4 and dn % 100 < 20,
2, [2, 0, 1, 1, 1, 2][if(dn % 10 > 5, 5, dn % 10)]
)]
}, if(dn > 0, tenDecimalText & " " & decimalsWord, "")),
// Сборка результата
rublesWord: ['рубль', 'рубля', 'рублей'][if(
integerPart % 100 > 4 and integerPart % 100 < 20,
2, [2, 0, 1, 1, 1, 2][if(integerPart % 10 > 5, 5, integerPart % 10)]
)],
result: getMillions & getThousands & getIntegerPart & " " & rublesWord & if(decimalPart > 0, " и " & getDecimalPart, "")
}, result)
let({
units: ["ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"],
teens: ["десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"],
tens: ["", "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"],
hundreds: ["", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"],
number: var1,
// Разделяем число на целую и дробную части
integerPart: floor(number),
decimalPart: round((number - floor(number)) * 100), // Умножаем на 100 для обработки до сотых долей
// Функция для преобразования целой части
getIntegerPart: let({
n: integerPart,
h: floor(n % 1000 / 100),
t: floor((n % 100) / 10),
u: n % 10,
hundredText: if(h > 0, hundreds[h] & " ", ""),
tenText: if(t == 1, teens[u], if(t > 1, tens[t] & " ", "") & if(t != 1 and u > 0, units[u], ""))
}, hundredText & tenText),
// Функция для преобразования тысяч
getThousands: let({
tn: floor(integerPart / 1000) % 1000,
th: floor(tn / 100),
tt: floor((tn % 100) / 10),
tu: tn % 10,
thousandText: if(th > 0, hundreds[th] & " ", ""),
tenThousandText: if(tt == 1, teens[tu], if(tt > 1, tens[tt] & " ", "") & if(tt != 1 and tu > 0,
if(tu == 1, "одна",
if(tu == 2, "две", units[tu])
) & " ", "")
),
thousandsWord: ['тысяча', 'тысячи', 'тысяч'][if(
tn % 100 > 4 and tn % 100 < 20,
2, [2, 0, 1, 1, 1, 2][if(tn % 10 > 5, 5, tn % 10)]
)]
}, if(tn > 0, thousandText & tenThousandText & " " & thousandsWord & " ", "")),
// Функция для преобразования миллионов
getMillions: let({
mn: floor(integerPart / 1000000),
mh: floor(mn / 100),
mt: floor((mn % 100) / 10),
mu: mn % 10,
millionText: if(mh > 0, hundreds[mh] & " ", ""),
tenMillionText: if(mt == 1, teens[mu], if(mt > 1, tens[mt] & " ", "") & if(mt != 1 and mu > 0, units[mu], "")),
millionsWord: ['миллион', 'миллиона', 'миллионов'][if(
mn % 100 > 4 and mn % 100 < 20,
2, [2, 0, 1, 1, 1, 2][if(mn % 10 > 5, 5, mn % 10)]
)]
}, if(mn > 0, millionText & tenMillionText & " " & millionsWord & " ", "")),
// Функция для преобразования дробной части
getDecimalPart: let({
dn: decimalPart,
dt: floor(dn / 10),
du: dn % 10,
decimalsWord: ['копейка', 'копейки', 'копеек'][if(
dn % 100 > 4 and dn % 100 < 20,
2, [2, 0, 1, 1, 1, 2][if(dn % 10 > 5, 5, dn % 10)]
)]
}, if(dn > 0, dn & " " & decimalsWord, "")),
// Сборка результата
rublesWord: ['рубль', 'рубля', 'рублей'][if(
integerPart % 100 > 4 and integerPart % 100 < 20,
2, [2, 0, 1, 1, 1, 2][if(integerPart % 10 > 5, 5, integerPart % 10)]
)],
fullResult: getMillions & getThousands & getIntegerPart & " " & rublesWord & if(decimalPart > 0, " " & getDecimalPart, ""),
result: upper(substr(fullResult, 0, 1)) & substr(fullResult, 1)
}, result)
Пример работы формулы https://cremax.ru/formula-playground?saved=63pxyf02m45jb414k8954esm
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Формула для адаптации введеных email в нормальный вид для возможности в дальнейшем работать с данным email //
// Автор: Соловей Дмитрий (Студия NCHub) //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Суть работы формулы: //
// 1. Собираем массив разрешенных симоволов в email //
// 2. Считаем количество символов в исходной строке //
// 3. Генерируем массив равной длинне строки //
// 4. Преобразовываем этот массив так, чтобы 1 символ был на каждый элемент массива //
// 5. Фильтруем только те значения, которые разрешены //
// 6. Склеиваем для возвращения строки //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
email = 'Криворуков Мальберт Юзерович <krivirukov@malbert.com>';
execude = ['A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i',
'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r',
'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z', '@',
'1','2','3','4','5','6','7','8','9','0','.','_','-'];
length = email.length();
range(0,length).map(substr(email,item,1)).filter(item in execude).join()
Пример работы формулы: https://cremax.ru/formula-playground?saved=63t3ql79ml2c85fq52m27y5i
let({
dateUser: toNumber(split(data.fields.dateBirth, '.')[2]),
dateYearNow: toNumber(split(toString(now()), '-')[0])
}, dateYearNow-dateUser)
Где вместо data.fields.dateBirth ваша переменная с датой рождения в формате:
data: {
fields: {
dateBirth: "1.08.1994"
}
Такое поле можно взять в библиотеке компонентов:
https://creatium.io/library/vybor-daty
ТЕХНИЧЕСКАЯ ПОДДЕРЖКА
Напишите нам. на связи 24/7. Среднее время ожидания ответа: 10-15 минут. Также вы можете вступить в наш Телеграм-чат, где собралось много специалистов и пользователей.
Агенты ответят через 10 минут