VK Video
Можно ли сортировать строки в таблице вручную?
Да, для этого нужно включить сортировка по полю порядок.
Как сортировать описано здесь.
Как меняется порядок расчета строк при включенном «порядок по полю сортировки»?
Строки в строчной части при одновременном изменении по умолчанию рассчитываются в порядке возрастания их id
. Но если включена сортировка по полю порядок — то в порядке возрастания n
.
В каком техническом поле записан порядок строк?
Поле n
. Номер сортировки строки можно получить как #n
или select
... field: 'n'
. Если ручная сортировка строк выключена, то такие обращения будут возвращать ошибку.
Когда идет изменение порядка, то n
переназначаются.
Когда идет добавление в конец, то n
идет с шагом 1
.
Когда идет добавление между строк, то втавляемая строка получает дробное n
.
Там используется большое дробное число, но если у вас ситуация в которой вставка всегда идет между строк, то тогда надо на задание по расписанию (о них будет позже) поставить функцию normalizeN — она убирает эти дробные хвосты.
Зачем нужен автоматический пересчет при изменении порядка?
Параметр автоматический пересчет при изменении порядка используется, когда у вас строки ссылаются в кодах на предыдущие — тогда при сохранении нового порядка ищется самый ранний n
и все строки с большим n
будут пересчитаны
Пример кода считающего последовательную нумерацию строк:
=: if(condition: $sel = ""; then: 1; else: $calc)
calc: $sel + 1
// у строки добавления #id = "" — поэтому делаем еще проверку
~sel: if(condition: #id = ""; then: $s1; else: $s2)
s1: select(table: $#ntn; field: 'id'; order: 'n' desc)
s2: select(table: $#ntn; field: 'id'; where: 'n' < #n; order: 'id' desc)