Готовые примеры формул

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

Обрезание текста по длине

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({
  number: 1233445,
  delimiter: ' ',
}, let({ str: toString(number) }, trimStart(join(map(
  range(0, length(str)),
  if((length(str) - item) % 3 == 0, delimiter, '') & substr(str, item, 1)
)))))

Перемешивание списка в случайном порядке

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)

Дата и время из поля с datapicker из формата ДД.ММ.ГГГГ ЧЧ:ММ в формат Unix Date

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)

 

ТЕХНИЧЕСКАЯ ПОДДЕРЖКА

Не можете найти то, что ищете?

Напишите нам. на связи 24/7. Среднее время ожидания ответа: 10-15 минут. Также вы можете вступить в наш Телеграм-чат, где собралось много специалистов и пользователей.

Поддержка Creatium

Агенты ответят через 10 минут

Агенты ответят

Блог, курсы и полезные материалы 

Платформа сайтов любой сложности