Работа с идентификаторами записей в 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(...) превращает эту строку цифр в число.