Списки: связи между данными, «+», «и»/«или» и исключения
Для кого эта инструкция
Для сотрудника, который собирает в «Списках» выборку не по одному полю карточки, а по связанным данным: например, нужен список записей по урокам определённого типа или клиенты с абонементом с заданным остатком.
Где находится
В левом меню нажмите «Списки». В верхней строке выберите, что должно быть результатом: «Клиент», «Сделка», «Задача», «Урок», «Запись», «Абонемент» или «Движение средств». Под строкой типов находится конструктор условий; кнопка «+» добавляет поле или связь.
Сначала определите строку результата
Условие по связи не меняет вид результата. Оно только отбирает его.
| Если нужна… | Выберите | Что будет в результате |
|---|---|---|
| карточка человека | «Клиент» | один клиент в строке результата |
| само занятие | «Урок» | один урок в строке результата |
| участие конкретного клиента в конкретном уроке | «Запись» | одна запись на урок клиента |
| покупка и её остаток | «Абонемент» | один абонемент в строке результата |
| отдельная финансовая операция | «Движение средств» | одно движение средств в строке результата |
Например, условие «Запись» → «Урок» → «Педагог» не возвращает расписание педагога: оно возвращает записи клиентов на уроки этого педагога.
Как перейти к связанной сущности через «+»
- Нажмите «+» в основном блоке и выберите связь: например, в «Записи» — «Урок», в «Клиенте» — «Абонемент» или «Сделка».
- В появившемся блоке связи нажмите его «+». DoCRM покажет поля связанного объекта.
- Выберите прямое поле и задайте значение либо снова выберите связь и продолжите цепочку.
- Нажмите «Применить фильтр» и проверьте несколько строк результата.
Цепочка для записи по уроку платного типа выглядит так:
Запись
- результат —
результат«Запись»;
└─- внутри
Урокнеё ├─связь «Урок»;
- внутри одного блока «Урок» — поле «Дата
началаначала» └─и Программасвязь └─«Программа»;
- внутри «Программы» — поле «Тип
программыпрограммы».
Важно: все признаки одного и того же урока добавляйте внутрь одного блока «Урок». Тогда и дата, и тип программы проверяются у одного связанного урока. Два отдельных блока «Урок» могут найти разные уроки одного и того же клиента и дать неожиданную выборку.
Матрица прямых связей
В таблице перечислены все прямые переходы, которые конструктор показывает для семи видов результата. После перехода нажмите «+» внутри нового блока, чтобы открыть поля связанного объекта.
| Результат | Прямые связи |
|---|---|
| «Клиент» | «Привязанные клиенты» ∞, «Первый лид», «Последний лид», «Лид» ∞, «Урок» ∞, «Запись на урок» ∞, «Платёж», «Привязка к клиенту», «Сделка», «Абонемент» ∞, «Задача» |
| «Урок» | «Аудитория», «Клиент» ∞, «Программа» |
| «Запись» | «Клиент», «Урок», «Абонемент» |
| «Абонемент» | «Клиент», «Платёж», «Программа» ∞, «Тариф» |
| «Движение средств» | «Абонемент», «Клиент», «Тариф» |
| «Сделка» | «Клиент», «Лид», «Абонемент для платных промо» ∞, «Абонемент для платежей», «Абонемент для посещений», «Задача» |
| «Задача» | «Клиент», «Сделка» |
Знак ∞ означает, что у связи доступна настройка количества подходящих связанных объектов «от» и «до». У связей без этого знака можно проверить наличие подходящего объекта и его параметры, но отдельного лимита количества интерфейс не показывает.
Есть и вспомогательные связанные объекты, которые не выбираются как отдельный вид результата:
| Связанный объект | Какие поля открываются внутри |
|---|---|
| «Лид» | «Utm» и «Источник» |
| «Программа» | «Вместимость программы», «Тип программы», «Предмет», «Тег» |
| «Аудитория» | «Адрес» |
| «Тариф» | «Тег» |
В поле лида «Utm» сначала выбирается тип значения: «Имя», «Отчество», «Фамилия», «ФИО», «Телефон», «Email», «Сумма», «UtmSource», «UtmMedium», «UtmCampaign», «UtmContent», «UtmTerm», «Имя компании», «Roistat» или «UtmReferrer». Затем вводится текст искомого значения. Отдельное поле лида «Источник» принимает текст.
Переходы рекурсивны: например, из клиента можно перейти к сделке, из сделки — к задаче, а из задачи — обратно к клиенту. Это не новые данные и не отдельные виды результата. Не удлиняйте цепочку без необходимости: выбирайте самый короткий путь от результата к проверяемому признаку.
Настройте «Включая», «Исключая», «и» и «или»
У каждой строки есть переключатель:
| Элемент | Что делает |
|---|---|
| «Включая» | оставляет результат, у которого условие выполняется |
| «Исключая» | убирает результат, у которого условие выполняется |
| «и» | требует выполнения всех включающих условий и отсутствия всех исключаемых условий в этом блоке |
| «или» | оставляет результат, если выполняется хотя бы одно условие блока |
Важно: не смешивайте «или» с «Исключая» без проверки результата. Логика «подходит по одному условию или не подходит по исключаемому» обычно слишком широкая. Для сценария «найти A, но не B» используйте «и»: включающее условие A и исключающее условие B.
Пример: платили за полгода, но не имеют действующего абонемента
Задача: получить карточки клиентов, у которых есть платёж за заданные шесть месяцев, но нет абонемента в статусе «Действует».
- Выберите «Клиент».
- Добавьте включающую связь «Платёж».
- Внутри «Платёж» добавьте «Дата создания» и задайте календарный период.
- В основном блоке добавьте исключающую связь «Абонемент».
- Внутри «Абонемент» добавьте «Статус абонемента» → «Действует».
- Между включающим и исключающим условиями оставьте «и», примените фильтр и проверьте несколько карточек.
КлиентДерево —условий результатдолжно ├─состоять Включая:из Платёждвух │веток:
└─
- «Включая» → «Платёж» → «Дата
созданиясоздания» — последние шесть месяцевмесяцев;
└─- «Исключая»
Исключая:→ Абонемент«Абонемент» └─→ «Статус абонементаабонемента» — Действует«Действует».
В результате остаются карточки клиентов, а не движения средств. Условие не означает «никогда не покупал абонемент»: оно исключает только наличие связанного абонемента в выбранном статусе.
Пример: записи по платным урокам в заданные даты
Задача: получить записи клиентов на уроки определённых дат с типом программы «Платный урок».
- Выберите «Запись»: результатом будут не уроки и не карточки клиентов, а записи на уроки.
- В основном блоке нажмите «+» и выберите «Урок».
- В блоке «Урок» нажмите «+» → «Дата начала». В полях «от» и «до» задайте нужный календарный период.
- В том же блоке «Урок» нажмите «+» → «Программа». В блоке «Программа» нажмите «+» → «Тип программы» и выберите «Платный урок».
- Оставьте «и» внутри блока «Урок», затем нажмите «Применить фильтр».
В результат войдут записи, у которых связанный урок начался в заданном периоде и относится к программе типа «Платный урок».
Важно: в этом конструкторе поле «Дата начала» выбирается календарными границами «от» и «до». Отдельного условия «ровно в 12:00» сейчас нет. Если время 12:00 обязательно, не выдавайте полученную выборку за точную: дополнительно проверьте время у найденных уроков в расписании.
Если нужны отдельные, не соседние даты, создайте несколько блоков «Урок»: внутри каждого оставьте «и» между датой и типом программы, а между самими блоками «Урок» поставьте «или». Так каждый вариант даты сохранит собственное условие по типу программы.
Проверьте смысл до выгрузки или массового действия
Откройте минимум одну подходящую и одну заведомо неподходящую запись. У первой проверьте дату, программу и тип программы урока; у второй — причину, по которой она не должна попасть в результат. Особенно это важно перед выгрузкой и массовым изменением.
Связанные инструкции: основные действия с конструктором, форматы значений, пресеты и выгрузка описаны в статье «Списки: типы данных, условия, пресеты и выгрузка».
Готово: результат содержит нужный вид данных, а все связанные условия проверены внутри одного блока связи.