On this page
calculate
Calculate
Питання calculate у XLSForm та rtSurvey використовуються для виконання обчислень на основі інших полів або значень у вашій формі. Ці питання не відображаються користувачеві, а виконуються у фоновому режимі, зберігаючи свої результати для подальшого використання або відправлення.
Синтаксис
У XLSForm питання calculate визначається наступним чином:
| type | name | label | calculation |
|---|---|---|---|
| calculate | calc_q1 | ${q1} + ${q2} |
- type: Завжди “calculate” для цього типу питання.
- name: Унікальна назва для питання calculate.
- label: Зазвичай залишається порожнім, оскільки питання calculate не відображаються користувачам.
- calculation: Формула для обчислення.
Використання
Питання calculate зазвичай використовуються для:
- Виконання арифметичних операцій
- Конкатенації рядків
- Застосування складної логіки або функцій
- Зберігання проміжних результатів для подальшого використання
Приклади
Базова арифметика
| type | name | calculation |
|-----------|----------|-------------|
| calculate | total | ${price} * ${quantity} |
Конкатенація рядків
| type | name | calculation |
|-----------|----------|-------------|
| calculate | full_name| concat(${first_name}, ' ', ${last_name}) |
Використання функцій
| type | name | calculation |
|-----------|----------|-------------|
| calculate | age | int((today() - ${date_of_birth}) / 365.25) |
Розширене використання в rtSurvey
Функція pulldata()
rtSurvey підтримує функцію pulldata() в полях calculate, що дозволяє отримувати дані з зовнішніх CSV файлів:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | city | pulldata('cities', 'city_name', 'zip_code', ${zip_input}) |
Синтаксис
Базовий синтаксис для pulldata():
pulldata('csv_filename', 'column_to_return', 'key_column', ${matching_value})
- ‘csv_filename’: Назва CSV файлу (без розширення .csv)
- ‘column_to_return’: Назва стовпця, що містить дані, які потрібно отримати
- ‘key_column’: Назва стовпця для порівняння
- ${matching_value}: Значення для пошуку в ключовому стовпці (часто змінна з форми)
Важливі примітки
- CSV файл повинен бути завантажений разом з вашим XLSForm під час розгортання опитування.
- Використовуйте коми як роздільники у вашому CSV файлі, а не крапки з комою.
- Уникайте ком у полях даних вашого CSV, оскільки вони можуть спричиняти проблеми синтаксичного аналізу.
- pulldata() підтримує лише відносини 1-до-1. Якщо знайдено кілька відповідників, повертається лише перший.
- Можуть бути обмеження на довжину тексту, що можна отримати (близько 76 символів).
- Ви можете використовувати pulldata() в обмеженнях для валідації записів за допомогою даних CSV.
Умовні обчислення
Ви можете використовувати оператори if() для умовних обчислень:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | discount | if(${total} > 1000, ${total} * 0.1, 0) |
Найкращі практики
- Використовуйте значущі назви для полів calculate для покращення читабельності форми.
- Уникайте надмірно складних обчислень в одному полі; розбивайте їх за необхідності.
- Ретельно тестуйте свої обчислення, особливо при використанні складних формул або зовнішніх даних.
- Пам’ятайте, що поля calculate виконуються кожного разу, коли форма оцінюється, що може впливати на продуктивність для дуже складних або численних обчислень.
- При використанні pulldata() переконайтеся, що ваші CSV файли правильно відформатовані та ретельно тестуйте зі своїми конкретними даними та структурою форми.
Обмеження
- Поля calculate не можуть безпосередньо редагуватися користувачами.
- Результат поля calculate не є відразу видимим, якщо на нього не посилаються у полі відображення або у логіці форми.
Чи була ця сторінка корисною?