Базовые встроенные функции
Базовые встроенные функции могут использоваться без ограничений при формировании любых публикаций и личных данных. Часть из них реализованы специально для нужд данной системы, а часть являются простыми ссылками на PHP-функции, их полными аналогами как с точки зрения именования, так и с точки зрения правил использования (порядка и типа передачи параметров). Дополнительные аналоги PHP-функций могут быть включены администратором в систему простой регистрацией их в конфигурационном файле вычислительной среды. Также несложно создать и включить в состав системы PHP-переходники, регламентирующие порядок использования тех или иных дополнительно подключаемых PHP-функций для разных категорий пользователей.
Функции идентификации пользователя
ip() - возвращает имя пользователя, обратившегося к публикации.
sp() - возвращает статус текущего пользователя (0 - неавторизованный, 1 - Читатель, 2 - Писатель, 3 - Эксперт, 6 - Редактор, 7 - Администратор).
Разметка
@vzp("Ваш идентификатор=",ip(),"Ваш статус=",sp())
Вывод
Ваш идентификатор= #673f2e430bce0 Ваш статус= 0 Строковые функции
stroka(p1,p2,...,pN) - сцепляет все переданные ей аргументы в единую строку без каких-бы то ни было разделителей. Аргументами могут быть значения любого типа - переменные, константы и одномерные массивы.
Остальные строковые функции являются либо прямыми отсылками к PHP-функциям, либо простыми переходниками к ним. Поэтому здесь приведены лишь краткие описания. Детали см. в справках по PHP-функциям.
strlen(s) - возвращает число символов в строке s.
Пустые символы:
" " (ASCII 32 (0x20)), символ пробела.
"\t" (ASCII 9 (0x09)), символ табуляции.
"\n" (ASCII 10 (0x0A)), символ перевода строки.
"\r" (ASCII 13 (0x0D)), символ возврата каретки.
"\0" (ASCII 0 (0x00)), NUL-байт.
"\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.
ltrim(str) - возвращает строку str с удалёнными из начала строки пустыми символами.
rtrim(str) - возвращает строку str с удалёнными в конце строки пустыми символами.
trim(str) - возвращает строку str с удалёнными в начале и конце строки пустыми символами.
strtoupper(str) - возвращает строку str, в которой все символы переведены в верхний регистр.
strtolower(str) - возвращает строку str, в которой все символы переведены в нижний регистр.
strpos(haystack,needle,offset) - возвращает позицию первого вхождения подстроки needle в строку haystack. Если подстрока needle не найдена, возвращает NULL. Если задан offset, то поиск начинается с символа с номером offset (нумерация символов строк начинается с нуля).
substr(str,start,dlina) - возвращает подстроку строки str длиной dlina, начинающегося со start символа по счету. Если параметр dlina не задан, то выбираются все символы до конца строки.
str_replace(search,replace,subject) - возвращает строку subject, в которой все вхождения search заменены на replace.
strcmp(str1,str2) - возвращает отрицательное число, если str1 меньше, чем str2; положительное число, если str1 больше, чем str2, и 0 если строки равны. Функция учитывает регистр символов.
strcmpx(str1,str2) - возвращает отрицательное число, если str1 меньше, чем str2; положительное число, если str1 больше, чем str2, и 0 если строки равны. Функция НЕ учитывает регистр символов.
strncmp(str1,str2,n) - возвращает отрицательное число, если str1 меньше, чем str2; положительное число, если str1 больше, чем str2, и 0 если строки равны. Функция учитывает регистр символов и сравнивает только первые n символов.
convert_cyr_string(str,from,to) - преобразует строку str из одной кириллической кодировки в другую. Аргументы from и to задают входную и выходную кодировки, соответственно, и состоят из одного символа. Поддерживаются следующие кодировки:
k - koi8-r
w - windows-1251
i - iso8859-5
a - x-cp866
d - x-cp866
m - x-mac-cyrillic
Математические функции
ostatok(x,n) - возвращает остаток от целочисленного деления x на n. Если либо x, либо n не являются целыми числами, то они округляются до ближайшего целого.
cislo(x) - возвращает 1, если аргумент x является числом и 0 в противном случае.
rnd(x) - случайное число в диапазоне от 0 до 1.
Остальные математические функции являются либо прямыми отсылками к PHP-функциям, либо простыми переходниками к ним. Поэтому здесь приведены лишь краткие описания. Детали см. в справках по PHP-функциям.
sqrt(x) - возвращает квадратный корень x, если его можно вычислить.
pow(x,p) - возвращает значение x в степени p, если значение можно вычислить.
exp(x) - возвращает экспоненту x.
log(x,b) - возвращает логарифм x по основанию b или NULL, если x<=0. Если b не задано, возвращает натуральный логарифм
ln(x) - возвращает натуральный логарифм x или NULL, если x<=0.
cos(x) - возвращает косинус x.
sin(x) - возвращает синус x.
tan(x) - возвращает тангенс x.
acos(x) - возвращает арккосинус x.
asin(x) - возвращает арксинус x.
atan(x) - возвращает арктангенс x.
deg2rad(x) - переводит градусы в радианы .
rad2deg(x) - переводит радианы в градусы.
pi() - значение числа пи с точностью до 14 знаков.
abs(x) - возвращает абсолютное значение x.
round(x,r) - округляет значение x до r десятичных знаков. Если r не задано или равно нулю, то до ближайшего целого.
max(p1,p2,...,pN) - возвращает максимальное значение из списка параметров или массива.
min(p1,p2,...,pN) - возвращает минимальное значение из списка параметров или массива.
mt_rand(a,b) - возвращает целое случайное число в диапазоне от a до b. Параметры можно не задавать.
mt_getrandmax() - возвращает максимальное значение случайного целого числа.
Системы счисления
decbin(x) - переводит десятичное число в двоичное
dechex(x) - переводит десятичное число в шестнадцатиричное
decoct(x) - переводит десятичное число в восьмеричное
octdec(x) - переводит восьмеричное число в десятичное
hexdec(x) - переводит шестнадцатиричное число в десятичное
Функции обработки массивов
vms(x) - выводит значения индексов всех уровней массива x. Видоизменённый аналог php-функции print_r().
massiv(s[,r]) - преобразует строку s в массив. Строка разбивается на слова по разделителю r. Если параметр r не задан, то разделителями слов считаются пробелы. Каждое слово становится элементом массива. Если в слове имеется символ "двоеточие" (:), то последовательность символов до двоеточия становится индексом данного элемента, а последовательность символов после двоеточия - его значением. Если символ двоеточия в слове отсутствует, то в качестве индекса принимается очередное целое число.
Разметка
~x=massiv("1 2 a:3 b:4 5 6 c:7")
@vms(x)
Вывод
Array ( [0] => 1 [1] => 2 [a] => 3 [b] => 4 [2] => 5 [3] => 6 [c] => 7 )
zv(z,k) - возвращает массив из k элементов, заполненных значением z.
Остальные математические функции являются либо прямыми отсылками к PHP-функциям, либо простыми переходниками к ним. Поэтому здесь приведены лишь краткие описания. Детали см. в справках по PHP-функциям.
is_array(a) - возвращает 1, если переменная a является массивом и 0 в противном случае.
array_keys(a) - возвращает массив индексов элементов массива a. Индексами полученного массива являются натуральные числа, начиная с нуля.
array_values(a) - возвращает массив значений элементов массива a. Индексами полученного массива являются натуральные числа, начиная с нуля.
count(a) - возвращает число значений массива a. Синоним ke (количество элементов).
array_unique(a) - возвращает массив a без повторяющихся значений. Индексы элементов, которые остались в массиве, остаются без изменений.
array_slice(array,offset,length) - возвращает последовательность элементов массива array, которая начинается на расстоянии offset от его начала и включает length элементов. Если length не задан, в последовательность войдут все элементы исходного массива array, начиная с позиции offset. Функция изменяет ключи массива.
array_diff(a1,a2) - возвращает массив, состоящий из значений массива a1, которые отсутствуют в массиве a2. Индексы сохраняются.
array_sum(x) - возвращает сумму элементов массива x.
array_merge(a1,a2,...,aN) - объединяет элементы одного или большего количества массивов таким образом, что значения одного массива присоединяются к концу предыдущего. Если входные массивы имеют одинаковые строковые ключи, тогда каждое последующее значение будет заменять предыдущее. Однако, если массивы имеют одинаковые числовые ключи, значение, упомянутое последним, не заменит исходное значение, а будет добавлено в конец массива. В результирующем массиве значения исходного массива с числовыми ключами будут перенумерованы в возрастающем порядке, начиная с нуля.
array_search(a,x) - возвращает ключ первого вхождения значения x массив a. Если значение не найдено - возвращается NULL.
array_rand(a[,n]) - возвращает n случайных ключей из массива a. По умолчанию n=1. Если выбирается только одно значение, то возвращается ключ, соответствующий этому значению. Если n>1, то возвращается массив ключей, соответствующих случайным значениям.
asort(a) - Сортирует массив a в порядке возрастания и поддерживает ассоциацию индексов.
arsort(a) - Сортирует массив a в порядке убывания и поддерживает ассоциацию индексов.
ksort(a) - Сортирует массив a в порядке возрастания ключей и поддерживает ассоциацию индексов.
krsort(a) - Сортирует массив a в порядке убывания ключей и поддерживает ассоциацию индексов.
array_count_values(a) - возвращает массив, ключами которого являются значения массива a (которые должны быть целыми числами или строками), а значениями - количество повторений этих значений в массиве.
array_intersect(a1,a2,...,aN) - возвращает массив, содержащий все значения массива a1, которые содержатся во всех остальных массивах. Ключи сохраняются.
implode(r,a) - объединяет элементы массива a в строку с разделителями r.
explode(r,s) - создаёт массив из элементов строки s, разделённых разделителем r.
Функции даты и времени
В системе все даты представляются в формате ГГГГ-ММ-ДД - четырёхзначный номер года, двузначный номер месяца, двузначный номер дня. Поэтому все даты должны подаваться функциям их обработки именно в таком формате.
dmd(d1,d2) - возвращает число дней между двумя датами.
Разметка
@vzp(dmd('2022-12-31','2023-12-31'))
Вывод
365 spv(sek) - переводит число секунд sek в часы, минуты и секунды.
Разметка
@vzp(spv(102022000))
Вывод
28339h 26m 40s vpd(dx) - восстанавливает представление полной даты в соответствии с правилами системы. Добавляет ведущие нули, если не задан месяц или день выбирает примерно середину года или месяца.
Разметка
@vzp(vpd('532-3-7'))
@vzp(vpd('64-3'))
@vzp(vpd('1960'))
Вывод
0532-03-07 0064-03-15
1960-07-01
Функции формирования html-кода
Система позволяет вставлять произвольный html-код в статьи. Из программ на встроенном языке его можно просто выводить в текст статьи функцией vzp(), комбинируя данные нужным образом с функциями обработки строк. Однако имеется множество примитивов для вывода html-конструкций, которые во многих случаях могут существенно упростить работу. Многочисленные примеры использования подобных функций приведены в статьях, посвящённых рассмотрению существующих расширений системы.
nt(x) - выводит заголовок таблицы типа x (класс tbx).
x=1 - центрированная по содержимому таблица с одинарными рамками;
x=2 - центрированная по содержимому таблица с без рамок;
x=3 - таблица на 100% области с одинарными рамками;
x=4 - таблица на 100% области без рамок;
kt() - выводит конец таблицы.
nst(x) - выводит начало строки таблицы типа x (класс trx)
x=1 - рабочая строка;
x=2 - заголовочная строка 2 с центрированными ячейками и жирным шрифтом;
x=3 - заголовочная строка 3 с центрированными ячейками и жирным шрифтом;
x=4 - заголовочная строка 4 с центрированными ячейками и жирным шрифтом.
kst() - выводит конец строки таблицы.
td(z,k,n,s) - выводит ячейку таблицы co значением z, объединяя k столбцов, применяя класс tdn и объединяя s строк. Если не задан ни один параметр - выводится пустая ячейка. Если не заданы k,n,s, то значение z выводится в одинарной ячейке с классом td1. Если не заданы n,s, то значение z выводится в ячейке, объединяющей k столбцов с классом td1. Если не задано s, то значение z выводится в ячейке, объединяющей k столбцов с классом tdn.
tdc(z,k,n,s) - то же, что и td(), но с выравниванием z центру.
tdr(z,k,n,s) - то же, что и td(), но с выравниванием z вправо.
Разметка
@nt(1)@nst(3)
@td('z1')
@td('=z2=')
@td('=z3=')
@kst()
@nst(1)
@td('Строка1')
@tdr(10)
@tdr(20)
@kst()
@nst(1)
@td('<b>Итого</b>')
@tdc(30,2)
@kst()
@kt()
Вывод
z1 | =z2= | =z3= |
Строка1 | 10 |
20 |
Итого | 30 |
st(t,p1,p2,...,pN) - выводит строку таблицы стиля t полностью. Если параметр pi является скалярной величиной, то он выводится в одну ячейку. Если параметр - массив, то каждый его элемент выводится в отдельной ячейке. Если t=1, а параметр распознаётся как полноценное число, то оно округляется по разумным правилам (см. далее) и выравнивается в ячейке вправо, в противном случае призводится выравнивание влево. Если тип строки t>1, то вывод значений производится по правилам заголовка - по центру.
Разметка
@nt(1)
@st(2,massiv("1 2 3 4 5 6"))
@st(1,massiv("Строка1 10 20 30 40 50"))
@st(1,massiv("Строка2 100 200 300 нет 500"))
@kt()
Вывод
1 |
2 |
3 |
4 |
5 |
6 |
Строка1 | 10 |
20 |
30 |
40 |
50 |
Строка2 | 100 |
200 |
300 |
нет | 500 |
vvt(v) - выводит одномерный массив v как таблицу с заголовками - ключами.
Разметка
@vvt(massiv("Строка2 100 200 300 нет 500"))
Вывод
0 |
1 |
2 |
3 |
4 |
5 |
Строка2 | 100 |
200 |
300 |
нет | 500 |
vmt(v[,p]) - выводит двумерный массив m как таблицу с ключами строк и столбцов.
Разметка
~w('a')=massiv('10 20 30 40')
~w('i')=massiv('100 200 300 400')
@vmt(w)
Вывод
0 |
1 |
2 |
3 |
|
a | 10 |
20 |
30 |
40 |
i | 100 |
200 |
300 |
400 |
При использовании необязательного параметра p помимо вывода данных двумерного массива в каждой ячейке могут выводиться также дополнительные данные:
базисные темпы роста
структурные характеристики значений столбцов.
Параметр p может быть массивом с необязательным набором ключей ik, ga, va или строкой, содержащей данные в формате ключ:значение, где ключами выступают параметры ik, ga, va. В последнем случае строка трансформируется в массив с этими ключами.
Если задан ключ ik и его значение ненулевое, то внизу таблицы выводятся итоги по соответствующей колонке.
При задании ненулевого (непустого) значения ключа ga каждая ячейка таблицы, помимо абсолютного значения, будет содержать значение его относительного изменения по отношению к базе, принимаемой за 100 по данной строке. В качестве базы принимается первое ненулевое числовое значение в данной строке при просмотре строки слева направо. Значение вычисляется, если может быть вычислено (соответствующий элемент массива имеет числовой значение). По сути дела - это базисные темпы роста по данной строке.
При задании ненулевого (непустого) значения ключа va каждая ячейка таблицы, помимо абсолютного значения, будет содержать значение его доли в процентах относительно суммы значений элементов в данном столбце. Значение вычисляется, если может быть вычислено (соответствующий элемент массива имеет числовое значение).
Пример использования специальных параметров.
Разметка
~w=massiv()
~w('a')=massiv('1000 2000 3000 4000')
~w('b')=massiv('2000 1000 2000 3000')
@vmt(w,'ik:1 ga:1 va:1')
Вывод
0 |
1 |
2 |
3 |
|
a | 1 000 100 33 |
2 000 200 67 |
3 000 300 60 |
4 000 400 57 |
b | 2 000 100 67 |
1 000 50 33 |
2 000 100 40 |
3 000 150 43 |
= |
3 000 100 |
3 000 100 |
5 000 167 |
7 000 233 |
В данном примере сначала "сбрасываются" значения массива w, поскольку ранее он уже использовался. Далее создаётся двумерный массив из двух строк и четырёх столбцов. Функция vmt указана с дополнительных параметром, в котором заданы требования выводить итоги по столбцам (ik:1), базисные темпы роста по строкам (ga:1), а также процент значения в конкретной ячейке по отношению к итогу по столбцу (va:1).
В результате получаем вывод, в котором каждая ячейка данных таблицы включает три числа: абсолютное значение, базисный темп роста по отношению к строке, а также его процент по отношению к итогу по столбцу. Внизу таблицы выводятся: сумма значений по столбцу, а также базисный темп роста итогов по столбцу. Процентное отношение не выводится, поскольку оно везде равно 100.
Наиболее типовое применение использования функции vmt() с дополнительными параметрами - типовые задачи горизонтального (va) и вертикального (va) анализа статей бухгалтерской отчётности. В данном случае строками будут являться статьи баланса, а столбцами - периоды.
is(t,h,w,p) - выводит индексируемую ссылку h с текстом t на окно с именем w и всплывающим комментарием p. Если w=0, то ссылка открывается в том же окне, если w=1 - в новом. Параметры w и p не обязательны. По умолчанию w=1.
ss(t,h,w,p) - выводит служебную ссылку (с пожеланиями роботам по ней не переходить и содержимое не индексировать) h с текстом t на окно с именем w и всплывающим комментарием p. Если w=0, то ссылка открывается в том же окне, если w=1 - в новом. Параметры w и p не обязательны. По умолчанию w=1.
vc(t) - выводит текст t по центру блока.
cz(z,u) - выводит заголовок уровня u (1,2,3) с текстом z по центру блока.
vis(f) - выводит изображение из файла f с маштабированием до 100% контейнера. Если размер изображения по ширине меньше контейнера, то выводит изображение по центру.
okrugl(z) - возвращает округлённое и форматированное число. Предназначено для компактного вывода чисел с длинной дробной частью. Округление производится по следующим правилам (применительно к абсолютному значению):
при z>=100, z округляется до ближайшего целого;
при z<100 и z>=10, z округляется до 1 дробного разряда;
при z<10 и z>=1, z округляется до 2 дробных разрядов;
при z<1, z округляется до 3 дробных разрядов.
Округлённое число форматируется с разделением на тройки в целой части и заменой дробной точки на запятую.
Разметка
@vzp(okrugl(23468290.63553))
@vzp(okrugl(1.335533738))
Вывод
23 468 291 1,34
komment(t) - выводит текст t как html-комментарий.
Функции доступа к данным
zapros(i) - обеспечивает доступ ко всем значениям, использованным при вызове скрипта формирования публикации - содержимому суперглобального php-массива $_REQUEST. Если функция вызвана без параметров, то она возвращает все значения php-массива $_REQUEST. Если параметр i задан, то возвращается только значение переменной с запрошенным именем.
Разметка
@vms(zapros())
Вывод
Array ( [file] => dok/bvf.s [~] => vsf )
При наличии понимания о содержимом этих данных их можно использовать в программах на встроенном языке для формирования публикации.
Для взаимодействия модулей между собой в системе ведётся глобальное хранилище данных. Одни модули могут помещать в него информацию, а другие - её использовать. В этом случае отпадает необходимость в считывании данных из контекста других модулей, поскольку достаточно знать лишь как именуются те или иные переменные глобальных данных. Для взаимодействия с глобальным хранилищем используется функция gd.
gd(i[,d]) - если параметр d задан, то его значение присваивается переменной i глобального хранилища. Если же параметр d не задан, то функция возвращает значение переменной i глобального хранилища.
Разметка
@gd('gp','Значение глобальной переменной gp')
~x=gd('gp')
@vzp(x)
Вывод
Значение глобальной переменной gp Система хранит данные в нескольких специфически организованных структурах. Для доступа к этим данным из публикаций используются отдельные библиотеки встроенных функций. Подробнее об организации данных и доступе к ним см. статьи:
Функции взаимодействия с публикацией
kod(ud[,d]) - выводит код файла или его секции по указателю ud (см. Указатели данных ) в том виде, как он создан. Если параметр d не задан или равен нулю, то вставки по команды вставки (^) (см. Заполнение секций данными из других источников ) не выполняются. При ненулевом значении d сначала выполняются все команды вставки, а потом выводится код. Если пользователь, просматривающий публикацию, использующую функцию kod(), не имеет права на просмотр кода данных по заданному указателю, то выводится сообщение об отсутствии прав на просмотр кода и данные не выводятся.
rvs(ms) - рекурсивная вставка строк в массив строк ms в соответствии с заданными в строках командами вставки (см. Заполнение секций данными из других источников. )
vss(p) - выводит случайные ссылки на публикации из заданного перечня. Параметр p должен быть массивом или строкой с данными в формате ключ:значение. Ключ d должен определять источник данных, в котором каждая строка содержит имя файла публикации. Ключ k должен определять количество случайно выбираемых ссылок на публикации. Если k=0, то выбираются все ссылки из указанного источника. При каждой загрузке страницы перечень выводимых ссылок будет случайно изменяться.
Разметка
@vss('d:shurem/vp.txt k:10')
Вывод
vst(f) - выводит текст "как есть" из случайно выбранной секции файла f. Файл не обязательно должен быть статьёй или книгой. Любой переданный файл может рассматривается как разбитый на секции по правилам системы. Функция может использоваться для вывода HTML/CSS/JS баннеров в теле публикации.
Специализированные прикладные функции
nsd(d) - нумерологическая свёртка даты. Последовательно сворачивает суммы цифр даты до одной цифры. Смысл алгоритма и пример использования см. в статье Число 7 в моей жизни (см. код статьи).
fotostat(p) - выводит статистику по числу специально именованных файлов в заданном каталоге. Используется автором для подсчёта числа отсканированных фотоснимков и цифровых фотографий за выбранные периоды. Файлы именуются в формате ГГГГ-ММ-ДД_ЧЧ-ММ-СС (год-месяц-день_час-минута-секунда). Такое представление весьма удобно для формирования различного рода альбомов с хронологическим упорядочением изображений.
Параметр p является массивом или строкой, содержащей данные в формате ключ:значение. Могут использоваться следующие данные:
d - имя каталога с файлами;
k - уровень агрегирования даты (число вырезаемых спереди символов). Типовые варианты:
10 символов - дата YYYY-MM-DD
07 символов - месяц YYYY-MM
04 символа - год YYYY
s - порядок сортировки: 0 - по возрастанию обрезанных дат; 1 - по убыванию числа файлов по периодам.
Разметка
@fotostat("d:db/photo/vs k:4")
Вывод
|
|||||
193x |
1 |
0,001% |
0,005% |
||
195x |
1 |
0,001% |
0,005% |
||
199x |
5 |
0,006% |
0,023% |
||
1931 |
3 |
0,003% |
0,014% |
||
1932 |
4 |
0,004% |
0,019% |
||
1933 |
2 |
0,002% |
0,009% |
||
1934 |
4 |
0,004% |
0,019% |
||
1935 |
5 |
0,006% |
0,023% |
||
1936 |
3 |
0,003% |
0,014% |
||
1937 |
5 |
0,006% |
0,023% |
||
1938 |
3 |
0,003% |
0,014% |
||
1940 |
3 |
0,003% |
0,014% |
||
1941 |
1 |
0,001% |
0,005% |
||
1942 |
3 |
0,003% |
0,014% |
||
1943 |
1 |
0,001% |
0,005% |
||
1944 |
6 |
0,007% |
0,028% |
||
1945 |
2 |
0,002% |
0,009% |
||
1946 |
2 |
0,002% |
0,009% |
||
1947 |
4 |
0,004% |
0,019% |
||
1948 |
5 |
0,006% |
0,023% |
||
1949 |
10 |
0,011% |
0,047% |
||
1950 |
35 |
0,039% |
0,163% |
||
1951 |
10 |
0,011% |
0,047% |
||
1952 |
15 |
0,017% |
0,070% |
||
1953 |
31 |
0,035% |
0,144% |
||
1954 |
39 |
0,043% |
0,182% |
||
1955 |
10 |
0,011% |
0,047% |
||
1956 |
29 |
0,032% |
0,135% |
||
1957 |
10 |
0,011% |
0,047% |
||
1958 |
35 |
0,039% |
0,163% |
||
1959 |
82 |
0,091% |
0,382% |
||
1960 |
15 |
0,017% |
0,070% |
||
1961 |
6 |
0,007% |
0,028% |
||
1962 |
20 |
0,022% |
0,093% |
||
1963 |
40 |
0,045% |
0,186% |
||
1964 |
14 |
0,016% |
0,065% |
||
1965 |
5 |
0,006% |
0,023% |
||
1966 |
7 |
0,008% |
0,033% |
||
1967 |
8 |
0,009% |
0,037% |
||
1968 |
3 |
0,003% |
0,014% |
||
1969 |
5 |
0,006% |
0,023% |
||
1970 |
5 |
0,006% |
0,023% |
||
1972 |
68 |
0,076% |
0,316% |
||
1973 |
40 |
0,045% |
0,186% |
||
1974 |
9 |
0,010% |
0,042% |
||
1975 |
20 |
0,022% |
0,093% |
||
1976 |
3 |
0,003% |
0,014% |
||
1977 |
10 |
0,011% |
0,047% |
||
1978 |
3 |
0,003% |
0,014% |
||
1979 |
3 |
0,003% |
0,014% |
||
1980 |
8 |
0,009% |
0,037% |
||
1981 |
6 |
0,007% |
0,028% |
||
1982 |
23 |
0,026% |
0,107% |
||
1983 |
10 |
0,011% |
0,047% |
||
1985 |
15 |
0,017% |
0,070% |
||
1988 |
1 |
0,001% |
0,005% |
||
1989 |
2 |
0,002% |
0,009% |
||
1990 |
4 |
0,004% |
0,019% |
||
1991 |
37 |
0,041% |
0,172% |
||
1993 |
23 |
0,026% |
0,107% |
||
1994 |
142 |
0,158% |
0,661% |
||
1995 |
203 |
0,226% |
0,945% |
||
1996 |
267 |
0,297% |
1,24% |
||
1997 |
111 |
0,124% |
0,517% |
||
1998 |
223 |
0,248% |
1,04% |
||
1999 |
152 |
0,169% |
0,707% |
||
2000 |
82 |
0,091% |
0,382% |
||
2001 |
91 |
0,101% |
0,424% |
||
2002 |
75 |
0,084% |
0,349% |
||
2003 |
191 |
0,213% |
0,889% |
||
2004 |
165 |
0,184% |
0,768% |
||
2005 |
246 |
0,274% |
1,14% |
||
2006 |
490 |
0,546% |
2,28% |
||
2007 |
426 |
0,475% |
1,98% |
||
2008 |
163 |
0,182% |
0,759% |
||
2009 |
2 206 |
2,46% |
10,3% |
||
2010 |
983 |
1,10% |
4,58% |
||
2011 |
642 |
0,715% |
2,99% |
||
2012 |
2 126 |
2,37% |
9,90% |
||
2013 |
1 293 |
1,44% |
6,02% |
||
2014 |
487 |
0,542% |
2,27% |
||
2015 |
311 |
0,346% |
1,45% |
||
2016 |
56 |
0,062% |
0,261% |
||
2017 |
402 |
0,448% |
1,87% |
||
2018 |
793 |
0,883% |
3,69% |
||
2019 |
3 195 |
3,56% |
14,9% |
||
2020 |
9 192 |
10,2% |
42,8% |
||
2021 |
19 577 |
21,8% |
91,1% |
||
2022 |
8 443 |
9,41% |
39,3% |
||
2023 |
14 770 |
16,5% |
68,7% |
||
2024 |
21 485 |
23,9% |
100% |
Оцените публикацию по предложенной шкале