Работа с идентификаторами записей в Ninox
Идентификаторы записей в Ninox
- Каждой новой записи в Ninox присваивается уникальный идентификатор (ID).
- В новой таблице нумерация начинается с
1и увеличивается на1с каждой новой записью (2,3и т. д.). - Идентификаторы удалённых записей повторно не используются. Поэтому наибольший идентификатор в таблице отражает общее число когда-либо созданных записей, включая удалённые и уже невидимые.
- Представление идентификатора:
- Идентификатор можно представить числом или текстом.
- В текстовом виде идентификатор объединяет идентификатор таблицы (одна или несколько заглавных букв) с номером записи.
Пример:"A1"
Что важно знать об идентификаторах
- Преобразование идентификатора в текст:
- Функция
string()даёт текстовое представление идентификатора. - Функция
text()возвращает текстом только числовую часть идентификатора. Например:"1".
- Функция
- Пример:
string(maTable.id); // Correct textual representation, e.g., "A1"
text(maTable.id); // Only the numeric part as text, e.g., "1"
- Идентификаторы в выражениях:
- При арифметических действиях или объединении строк идентификатор принимает тип другого операнда.
- Пример:
var t := "Num ID: " + maTable.id;
Результат: Num ID: 1
Поиск записей по идентификатору
Чтобы получить запись по идентификатору в предложении where, можно использовать как число, так и текстовое представление.
С числом:
select Customer where id = 1;
С текстом:
При использовании текста убедитесь, что идентификатор содержит и идентификатор таблицы, и номер записи.
Пример:
select Customer where id = "B1";
Извлечение номера записи из идентификатора
Эта функция позволяет получить номер записи из текстового идентификатора (например, A1):
function recordNumber(id : text) do
"Capture the digit group.";
number(extractx(id, "^[A-Z]+([0-9]+)$", "", "$1"))
end;
"Example: apply to the current record’s ID"
var numId := recordNumber(string(myId));
string(myId) преобразует идентификатор в текст.
Регулярное выражение ^[A-Z]+([0-9]+)$ означает:
^[A-Z]+→ одна или несколько букв в начале,([0-9]+)→ нужные нам цифры (группа захвата 1),$→ конец строки.
extractx(..., "", "$1") возвращает только захваченные цифры.
number(...) превращает эту строку цифр в число.
