Мова: Українська
Формули можна обчислювати в контексті запису форми. Це включає в себе:
- Формули обчислюваних полів
- Формули префіксів серійних номерів
- Правила релевантності
- Правила перевірки
- Блокування записів
- Дозволи на рівні запису
У кожному з цих випадків формула обчислюється в контексті кожного із записів форми. У цьому контексті ви можете посилатися на значення полів запису, пов'язаних записів і підзаписів, а також на метадані, пов'язані із записом.
Оскільки формула обчислюється для кожного запису окремо, цей контекст не підходить для розрахунку агрегованих даних, як-от відсоток жінок серед учасників. Таку статистику можна розрахувати за допомогою зведених таблиць.
Значення полів
У контексті запису ви можете посилатися на поля, використовуючи код поля, назву поля або внутрішній ідентифікатор поля та синтаксис символів. Символ записується у формулах без лапок.
Наприклад, якщо у вас є текстове поле з назвою "Number of students" та кодом NUM_STUDENTS, ви можете обчислити необхідну кількість вчителів, виходячи з бажаного співвідношення 30:1, за допомогою будь-якої з наступних формул:
Students / 30NUM_STUDENTS / 30csr4lu5lfl1n0swr / 30
Текст csr4lu5lfl1n0swr — це внутрішній ідентифікатор поля, присвоєний ActivityInfo, який можна знайти через API.
Якщо назва поля містить пробіли або інші спеціальні символи, символ необхідно екранувати за допомогою квадратних дужок. Наприклад, якби поле вище мало назву "Number of students", то у формулі ви повинні були б посилатися на нього як [Number of students].
Зверніть увагу, що назви полів не обов'язково мають бути унікальними в межах форми. Наприклад, часто буває кілька полів з назвою "Other". Якщо ви посилаєтеся на поле за назвою, і існує більше одного поля з такою назвою, буде використано значення першого поля.
З цієї причини ми рекомендуємо присвоювати коди всім полям, якщо ви плануєте використовувати формули.
Текстові поля
Поля "Текст", "Багаторядковий текст", "Серійний номер" та "Штрих-код" мають текстовий тип формули в контексті запису.
Поля вибору
Поля з одиничним та множинним вибором мають тип формули "struct" та "список struct" відповідно.
Якщо ваша форма включає в себе поля посилань, ви можете включати значення полів у пов'язаних записах у формули.
Поля посилань
Коли ви додаєте поле посилання до форми, ActivityInfo зберігає вбудований ідентифікатор запису вибраного запису як частину поля.
Наприклад, припустімо, ви додали посилання на форму "Afghan District" у загальнодоступній геобазі даних з кодом DISTRICT. Під час введення або імпорту даних ActivityInfo покаже користувачеві ключові поля пов'язаного запису, щоб допомогти йому вибрати правильний запис:
Однак, коли запис збережено, ActivityInfo фактично зберігає ідентифікатор запису пов'язаного запису. Це гарантує, що навіть якщо назва району зміниться, зв'язок між двома записами буде збережено.
Якщо ви посилаєтеся на DISTRICT у формулі, результатом буде ідентифікатор запису, наприклад "z0000454985":
Пов'язані поля
У більшості випадків ідентифікатор пов'язаного запису не буде дуже корисним. Натомість ви можете захотіти посилатися на назву району або його населення. Для цього можна використовувати крапкову нотацію для пошуку пов'язаного значення:
DISTRICT.NAME
Якщо пов'язана форма також має поля посилань, ви можете використовувати кілька крапок, щоб прослідкувати шлях. У цьому випадку форма "District" має поле посилання PROVINCE з власним полем NAME. Щоб знайти назву пов'язаної провінції, ви можете використати формулу:
DISTRICT.PROVINCE.NAME
Поля географічних точок
Поля "Географічна точка" мають тип формули "struct". Це означає, що кожна географічна точка має два значення: широту та довготу. Ви можете посилатися на ці окремі компоненти за допомогою крапкової нотації:
CONCAT(
IF(LOCATION.Latitude > 0, "North", "South"), " ",
IF(LOCATION.Longitude > 0, "East", "West"), " Hemisphere")
Поля підформ
Хоча поля підформ самі по собі не мають значення, ви можете посилатися на поля підзаписів у контексті запису, якщо вони агреговані.
Наприклад, якщо у вас є підформа HOUSEHOLDS_MEMBERS з полями NAME та AGE, ви не можете просто посилатися на HOUSEHOLD_MEMBERS.NAME, оскільки імен може бути більше одного. Однак ви можете використовувати агрегатні функції, такі як COUNT, SUM, AVERAGE, MIN та MAX, для обчислення єдиного значення з усіх підзаписів запису. Наприклад, ви можете знайти кількість членів за допомогою формули:
COUNT(HOUSEHOLD_MEMBERS.NAME)
І ви можете перевірити наявність дитини віком до п'яти років за допомогою формули:
MIN(HOUSEHOULD_MEMBERS.AGE) < 5
Метадані запису
У контексті запису ви також можете посилатися на метадані про запис:
| Символ | Тип | Опис |
|---|---|---|
| _id | текст | Ідентифікатор запису |
| _lastEditTime | instant | Час останнього оновлення запису |
Зверніть увагу, що _lastEditTime — це час, коли оновлення востаннє надійшло на сервер. Запис міг бути доданий або відредагований в автономному режимі набагато раніше.