# Поле «Дата изменения» в Baserow - автоматический таймстамп

> Baserow ставит время правки пользователя в поле «Дата изменения» - что запускает обновление, а что нет, и как отследить правки в связанных таблицах.

Source: https://opennix.org/docs/baserow/field-types/last-modified-field/


Поле «Дата изменения» - это автоматическое поле только для чтения, которое проставляет строке точную дату и время последней правки, внесённой пользователем. Статья описывает, что это за поле и как оно себя ведёт, как добавить его в таблицу, какие действия запускают обновление таймстампа, а какие нет, и как обойти это ограничение с помощью подстановки и формулы, если нужно отслеживать изменения в связанных таблицах.

![Поле «Дата изменения» в Baserow](/images/baserow/field-types/last-modified-field-overview.jpg)

## Что такое поле «Дата изменения»

Поле «Дата изменения» - это автоматическое поле, недоступное для редактирования, которое показывает дату и время последней правки строки пользователем.

Когда [создаётся новая строка](/docs/baserow/rows/how-to-make-new-rows/), значение поля «Дата изменения» совпадает со значением поля [«Дата создания»](/docs/baserow/field-types/date-and-time-fields/). Этот таймстамп обновляется каждый раз, когда пользователь редактирует любое редактируемое поле в этой строке.

Важная особенность: значение поля «Дата изменения» никогда не откатывается назад. Если отредактировать ячейку, а затем нажать «Отменить», время в поле «Дата изменения» будет отражать момент действия «Отменить», а не время до правки.

## Как добавить поле «Дата изменения»

### Добавление поля

1. В таблице [добавьте новое поле](/docs/baserow/fields/adding-a-field/).
2. Выберите **Дата изменения** в списке типов поля.
3. Задайте имя поля (например, «Последнее обновление»).
4. Нажмите **Создать**.

По умолчанию это поле отслеживает изменения в *любом* редактируемом поле строки.

Поле можно ограничить так, чтобы оно показывало время изменения только для конкретного поля.

## Отслеживание изменений в вычисляемых полях

Тип поля «Дата изменения» и функции даты в формулах позволяют отслеживать, когда запись была изменена в последний раз. Однако важно понимать, что эти инструменты отслеживают только **прямые действия пользователя**.

### Что запускает обновление «Даты изменения»

- Ручной ввод в ячейку (текст, число и другие типы).
- Выбор варианта (одиночный выбор, множественный выбор).
- **Добавление или удаление** строки в поле «Связь с таблицей».

### Что не запускает обновление

- **Формулы**: если формула пересчитывается (например, `today()` меняется на следующий день или `{Цена} * {Количество}` обновляется), поле «Дата изменения» **не** изменится.
- **Изменения в связанных данных**: если изменить данные внутри связанной записи (например, обычное поле «Статус» в связанной таблице «Задачи»), таймстамп «Дата изменения» в текущей таблице **не** обновится.

Поле «Дата изменения» отслеживает, *кто* редактировал строку и *когда*. Пассивные изменения, вычисленные Baserow в фоновом режиме, не считаются пользовательскими правками.

### Обходной путь: отслеживание изменений в связанных строках

Если нужно видеть время последнего изменения строки *или* любых связанных с ней данных, одного поля «Дата изменения» недостаточно. Вместо этого можно объединить [поле подстановки](/docs/baserow/field-types/lookup-field/) с [полем формулы](/docs/baserow/formula/understanding-formulas/).

**Сценарий**: у вас есть таблица «Проекты», связанная с таблицей «Задачи» через [поле связи с таблицей](/docs/baserow/field-types/link-to-table-field/). Вы хотите, чтобы «Проект» отображался как «Обновлён», когда меняется любая связанная «Задача».

#### Шаг 1. Отследите время в исходной таблице

1. Перейдите в связанную таблицу (например, «Задачи»).
2. Создайте новое поле типа **Дата изменения**.
3. Назовите его «Задача: дата изменения».

#### Шаг 2. Выведите это время в основной таблице

1. Перейдите в основную таблицу (например, «Проекты»).
2. Создайте [поле подстановки](/docs/baserow/field-types/lookup-field/).
3. Укажите таблицу «Задачи» и выберите созданное поле «Задача: дата изменения».
4. Назовите это поле «Подстановка: изменение задачи».

#### Шаг 3. Сравните даты формулой

Создайте новое поле формулы в таблице «Проекты», чтобы сравнить локальное время правки проекта с временем правки задачи. Формула вернёт более позднюю из двух дат.

**Формула:**

```
if(
    date_diff('s', field('Last modified'), field('Lookup: Task Modified')) < 0,
    field('Lookup: Task Modified'),
    field('Last modified')
)
```

**Как это работает:**

- Функция `date_diff` вычисляет разницу в секундах между локальной правкой и правкой в связанной таблице.
- Оператор `if` проверяет, какая из дат более поздняя.
- Формула выводит более свежую дату, давая «настоящий» таймстамп последнего изменения.

## Часто задаваемые вопросы

**В чём разница между «Датой изменения» и «Изменено пользователем»?** Эти поля работают в паре: «Дата изменения» показывает, *когда* произошла последняя правка (дату и время), а [«Изменено пользователем»](/docs/baserow/field-types/last-modified-by-field/) показывает, *кто* внёс последнюю правку.

**В чём разница между «Датой изменения» и «Датой создания»?** [«Дата создания»](/docs/baserow/field-types/date-and-time-fields/) устанавливается один раз при создании строки и больше никогда не меняется. «Дата изменения» обновляется при каждой правке строки.

**Запускают ли обновление формулы или другие вычисляемые поля?** Нет. Поле «Дата изменения» отслеживает только правки, внесённые непосредственно пользователем. Оно не реагирует на автоматические изменения в вычисляемых полях вроде [формул](/docs/baserow/formula/understanding-formulas/), [подстановок](/docs/baserow/field-types/lookup-field/) или [сводов](/docs/baserow/field-types/rollup-field/), которые обновляются из-за изменения исходных данных.

**Запускает ли обновление поле «Связь с таблицей»?** Здесь есть особый случай: если вы *добавляете или удаляете связь* в [поле связи с таблицей](/docs/baserow/field-types/link-to-table-field/), это считается пользовательской правкой и **запускает** обновление. Но если данные *внутри* связанной строки меняются (например, отредактировано имя связанной записи в её собственной таблице), это **не** считается правкой текущей строки и обновление **не запускается**.

## Что дальше

Чтобы узнать, кто внёс последнюю правку, а не только когда она произошла, читайте [«Поле "Изменено пользователем"»](/docs/baserow/field-types/last-modified-by-field/). Чтобы разобраться во всех типах полей даты и часовых поясах, смотрите [«Поле даты в Baserow»](/docs/baserow/field-types/date-and-time-fields/) и [«Работу с часовыми поясами»](/docs/baserow/fields/working-with-timezones/).

