# Частые вопросы

## Где взять ID списка Leadtex <a href="#list_id-leadtex" id="list_id-leadtex"></a>

Откройте предварительно созданный список для просмотра.

<figure><img src="https://521208464-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcCcX8wIGBNYzX0rzbJuo%2Fuploads%2F14OPRRjEgaV3cATWiPZ0%2F%D0%A4%D1%80%D0%B0%D0%B3%D0%BC%D0%B5%D0%BD%D1%82%20%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0.png?alt=media&#x26;token=cddab904-f771-402f-baaf-b9a6c46c4cdf" alt=""><figcaption></figcaption></figure>

В строке адреса браузера найдите комбинацию букв и цифр после ".../custom/"

<figure><img src="https://521208464-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcCcX8wIGBNYzX0rzbJuo%2Fuploads%2FGHPBlDyDeuaONeDD3Z4W%2FID%20%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0%20Leadtex.png?alt=media&#x26;token=198b25dc-59a0-41b2-92be-8187fdba2e27" alt=""><figcaption></figcaption></figure>

Скопируйте ее и сохраните в глобальной переменной. Подставляйте имя глобальной переменной в настройках блоков вместо этой комбинации.

***

## Правила формирования параметра `filters` <a href="#undefined" id="undefined"></a>

Параметр `filters` позволяет выбирать записи из Списка Leadtex. Ботжет преобразует человекочитаемую строку в формат, который понимает API Leadtex, автоматически обрабатывая даты и операторы сравнения.

### Основные правила

1. **Разделитель условий**: Запятая (`,`). Если условий несколько, перечисляйте их через запятую.
   * *Внимание:* Из-за этого значения полей **не должны содержать запятых**, иначе фильтр сработает некорректно.
2. **Формат условия**: `название_поля` `оператор` `значение`.
3. **Даты**: Ботжет автоматически распознает даты в формате `d.m.Y`, `d.m.Y H:i` или `d.m.Y H:i:s`,  переводит их в UTC Timestamp (Unix-представление) и отправляет в API. Чтобы корректно фильтровать по дате и времени, нужно чтобы в вашем Списке было поле со значением UTC Timestamp, соответствующим нужной дате и времени. Подробнее: [Как хранить дату и время в Списке для корректной фильтрации и сортировки](#kak-khranit-datu-i-vremya-v-spiske-dlya-korrektnoi-filtracii-i-sortirovki).
4. **Пробелы**: Пробелы вокруг названия поля и значения обрезаются автоматически, но внутри значения (например, в тексте) сохраняются.

### Таблица операторов

Ботжет поддерживает **строго определенный набор операторов**. Сложные операторы вроде `LIKE` или `IN` **не поддерживаются**.

<table><thead><tr><th width="107.7999267578125">Оператор</th><th width="190.5999755859375">Описание</th><th width="191.2000732421875">Пример синтаксиса</th><th>Что уходит в API (пример)</th></tr></thead><tbody><tr><td><strong>=</strong></td><td>Равно. Точное совпадение.</td><td><code>status=active</code></td><td><code>filters[status]=active</code></td></tr><tr><td><strong>></strong></td><td>Больше.</td><td><code>price>5000</code></td><td><code>filters[price]=>,5000</code></td></tr><tr><td><strong>&#x3C;</strong></td><td>Меньше.</td><td><code>count&#x3C;10</code></td><td><code>filters[count]=&#x3C;,10</code></td></tr><tr><td><strong>>=</strong></td><td>Больше или равно (включая дату).</td><td><code>date>=01.01.2024</code></td><td><code>filters[date]=>=,1704067200</code></td></tr><tr><td><strong>&#x3C;=</strong></td><td>Меньше или равно.</td><td><code>rating&#x3C;=3</code></td><td><code>filters[rating]=&#x3C;=,3</code></td></tr></tbody></table>

### Примеры формирования строки

| Задача                             | Строка фильтров (`filters`)                 |
| ---------------------------------- | ------------------------------------------- |
| Простой поиск по совпадению        | `category=Обувь`                            |
| Два условия (И)                    | `category=Обувь, size=42`                   |
| Поиск по цене (дороже)             | `price>1000`                                |
| Записи за конкретную дату          | `created_at=15.05.2024`                     |
| Записи начиная с даты (вкл. время) | `created_at>=01.01.2025 09:00`              |
| **Сложная выборка**                | `status=new, count>0, deadline<=31.12.2025` |

### Важные ограничения

* **Только 5 операторов**: Код ищет только символы `>=`, `<=`, `>`, `<`, `=`. Если вы напишете `name LIKE %Alex%`, ботжет проигнорирует это условие, так как не найдет знакомого разделителя.
* **Без кавычек**: Не используйте кавычки для значений, если они не являются частью самого значения в базе. Ботжет сам определит границы значения.
* **Автоконвертация дат**: Если значение похоже на дату (например, `25.10.2023`), оно будет автоматически преобразовано в число (Timestamp). Для `25.10.2023`  будет `Timestamp=1698192000`. Если вы делаете фильтрацию по полю, где дата и/или время хранятся строкой (например, "25.10.2023"), фильтр может не сработать, так как он будет искать дату в формате Timestamp-числа. Подробнее: [Как хранить дату и время в Списке для корректной фильтрации и сортировки](#kak-khranit-datu-i-vremya-v-spiske-dlya-korrektnoi-filtracii-i-sortirovki).
* **Фильтры "от-до":** Фильтры *"в пределах"* или *"от и до"* не поддерживаются. Это ограничение API Leadtex. Нельзя задать, например, фильтр: `cena>=5000,cena<8000,type=кроссовки`. Можно только один фильтр по каждому полю: `cena<8000,type=кроссовки`

## Как хранить дату и время в Списке Leadtex для корректной фильтрации и сортировки

При работе со Списками в Leadtex часто возникает необходимость сортировать записи по времени (например, показывать сначала новые заявки).

Однако, стандартные текстовые поля с датами вида `01.01.2025` не подходят для точных математических операций сравнения («больше», «меньше»).

### 1. Проблема: Ограничения API Leadtex

API Leadtex на данный момент не поддерживает прямую арифметическую фильтрацию и сортировку по полям, содержащим дату и время в человекочитаемом формате (строки). Если вы попытаетесь отсортировать записи по полю с текстом `31.12.2024`, система будет сортировать их как обычный алфавитный текст, что часто приводит к неверному порядку.

### 2. Решение: Использование Timestamp (Unix)

Для корректной работы ботжета «Списки» (сортировки и фильтрации) необходимо хранить дату в числовом формате.

1. В вашем Списке Leadtex создайте **дополнительное поле** (рекомендуемый тип — **«Число»** или «Текст»).
2. Назовите его, например, `date_u` или `created_at_ts`.
3. Сохраняйте в это поле дату в формате **Unix Timestamp** (количество секунд, прошедших с 1 января 1970 года).

### 3. Как настроить фильтрацию

Все операции в настройках ботжета нужно проводить именно с этим числовым полем.

* **Неправильно:** `filters=date>=01.01.2025` (если поле `date` текстовое)
* **Правильно:** `filters=date_u>=01.01.2025` , где в поле  `date_u`  хранится числовое Unix-представление 1 января 2025 года.&#x20;

> **Обратите внимание:** Сам ботжет «Списки» умеет автоматически преобразовывать дату из вашего фильтра в число. Но чтобы сравнение сработало, **в Списке Leadtex** в указанном поле уже должно лежать число, а не текст.​

### 4. Как получить Unix Timestamp в Leadtex

Для автоматического преобразования даты в число в сценариях Leadtex используйте встроенные функции переменных.

Основная функция: `{{ date("U") }}`.

### Примеры формул для записи в переменные:

* **Текущее время с учетом часового пояса (например, UTC+5):**\
  Чтобы получить Unix-метку для времени "+5 часов от Гринвича":

  ```
  {{ date("U", "{{ date("d.m.Y H:i:s", "+ 5 hours") }}") }}
  ```
* **Начало текущего дня (00:00:00 по UTC):**

  ```
  {{ date("U", "{{ date("d.m.Y 00:00:00") }}") }}
  ```

Подробнее о работе с датами можно прочитать в [официальной документации Leadtex](https://help.leadteh.ru/avtopodstanovka-i-peremennye/rabota-s-datoi/?h=).​

### 5. Полезные инструменты

Если вам нужно вручную перевести конкретную дату в Unix-формат (например, для настройки тестового фильтра или константы), удобно использовать онлайн-конвертеры.

* **Онлайн-конвертер дат:** <https://i-leon.ru/tools/time>​
