Создайте поля выбора страны с проверкой кода страны ISO
Пользовательские поля страны позволяют вам хранить и управлять информацией о странах для записей. Поле поддерживает как названия стран, так и коды стран ISO Alpha-2.
Важно: Проверка и поведение преобразования стран значительно различаются между мутациями:
- createTodo: Автоматически проверяет и преобразует названия стран в коды ISO
- setTodoCustomField: Принимает любое значение без проверки
Простой пример
Создайте простое поле страны:
mutation CreateCountryField {
createCustomField(input: {
name: "Country of Origin"
type: COUNTRY
projectId: "proj_123"
}) {
id
name
type
}
}
Расширенный пример
Создайте поле страны с описанием:
mutation CreateDetailedCountryField {
createCustomField(input: {
name: "Customer Location"
type: COUNTRY
projectId: "proj_123"
description: "Primary country where the customer is located"
isActive: true
}) {
id
name
type
description
isActive
}
}
Входные параметры
CreateCustomFieldInput
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
name |
String! | ✅ Да | Отображаемое имя поля страны |
type |
CustomFieldType! | ✅ Да | Должен быть COUNTRY |
description |
String | Нет | Текст помощи, отображаемый пользователям |
Примечание: projectId
не передается во входных данных, но определяется контекстом GraphQL (обычно из заголовков запроса или аутентификации).
Установка значений страны
Поля страны хранят данные в двух полях базы данных:
countryCodes
: Хранит коды стран ISO Alpha-2 в виде строки, разделенной запятыми, в базе данных (возвращается как массив через API)text
: Хранит текст отображения или названия стран в виде строки
Понимание параметров
Мутация setTodoCustomField
принимает два необязательных параметра для полей страны:
Параметр | Тип | Обязательный | Описание | Что это делает |
---|---|---|---|---|
todoId |
String! | ✅ Да | ID записи для обновления | - |
customFieldId |
String! | ✅ Да | ID пользовательского поля страны | - |
countryCodes |
[String!] | Нет | Массив кодов стран ISO Alpha-2 | Stored in the countryCodes field |
text |
String | Нет | Текст отображения или названия стран | Stored in the text field |
Важно:
- В
setTodoCustomField
: Оба параметра являются необязательными и хранятся независимо - В
createTodo
: Система автоматически устанавливает оба поля на основе вашего ввода (вы не можете управлять ими независимо)
Вариант 1: Использование только кодов стран
Храните проверенные коды ISO без текста отображения:
mutation SetCountryByCode {
setTodoCustomField(input: {
todoId: "todo_123"
customFieldId: "field_456"
countryCodes: ["US"]
})
}
Результат: countryCodes
= ["US"]
, text
= null
Вариант 2: Использование только текста
Храните текст отображения без проверенных кодов:
mutation SetCountryByText {
setTodoCustomField(input: {
todoId: "todo_123"
customFieldId: "field_456"
text: "United States"
})
}
Результат: countryCodes
= null
, text
= "United States"
Примечание: При использовании setTodoCustomField
проверка не происходит независимо от того, какой параметр вы используете. Значения хранятся точно так, как предоставлены.
Вариант 3: Использование обоих (Рекомендуется)
Храните как проверенные коды, так и текст отображения:
mutation SetCountryComplete {
setTodoCustomField(input: {
todoId: "todo_123"
customFieldId: "field_456"
countryCodes: ["US"]
text: "United States"
})
}
Результат: countryCodes
= ["US"]
, text
= "United States"
Несколько стран
Храните несколько стран, используя массивы:
mutation SetMultipleCountries {
setTodoCustomField(input: {
todoId: "todo_123"
customFieldId: "field_456"
countryCodes: ["US", "CA", "MX"]
text: "North American Markets" # Can be any descriptive text
})
}
Создание записей со значениями страны
При создании записей мутация createTodo
автоматически проверяет и преобразует значения страны. Это единственная мутация, которая выполняет проверку страны:
mutation CreateRecordWithCountry {
createTodo(input: {
title: "International Client"
todoListId: "list_123"
customFields: [{
customFieldId: "country_field_id"
value: "France" # Can use country name or code
}]
}) {
id
title
customFields {
id
customField {
name
type
}
text
countryCodes
}
}
}
Принятые форматы ввода
Тип ввода | Пример | Результат |
---|---|---|
Country Name | "United States" |
Stored as US |
ISO Alpha-2 Code | "GB" |
Stored as GB |
Multiple (comma-separated) | "US, CA" |
Не поддерживается - рассматривается как одно недопустимое значение |
Mixed format | "United States, CA" |
Не поддерживается - рассматривается как одно недопустимое значение |
Поля ответа
Ответ TodoCustomField
Поле | Тип | Описание |
---|---|---|
id |
String! | Уникальный идентификатор для значения поля |
customField |
CustomField! | Определение пользовательского поля |
text |
String | Текст отображения (названия стран) |
countryCodes |
[String!] | Массив кодов стран ISO Alpha-2 |
todo |
Todo! | Запись, к которой принадлежит это значение |
createdAt |
DateTime! | Когда значение было создано |
updatedAt |
DateTime! | Когда значение было в последний раз изменено |
Стандарты стран
Blue использует стандарт ISO 3166-1 Alpha-2 для кодов стран:
- Двухбуквенные коды стран (например, US, GB, FR, DE)
- Проверка с использованием библиотеки
i18n-iso-countries
происходит только в createTodo - Поддерживает все официально признанные страны
Примеры кодов стран
Страна | Код ISO |
---|---|
United States | US |
United Kingdom | GB |
Canada | CA |
Germany | DE |
France | FR |
Japan | JP |
Australia | AU |
Brazil | BR |
Для полного официального списка кодов стран ISO 3166-1 alpha-2 посетите ISO Online Browsing Platform.
Проверка
Проверка происходит только в мутации createTodo
:
- Действительный код ISO: Принимает любой действительный код ISO Alpha-2
- Название страны: Автоматически преобразует распознаваемые названия стран в коды
- Недопустимый ввод: Вызывает
CustomFieldValueParseError
для нераспознанных значений
Примечание: Мутация setTodoCustomField
не выполняет проверку и принимает любое строковое значение.
Пример ошибки
{
"errors": [{
"message": "Invalid country value.",
"extensions": {
"code": "CUSTOM_FIELD_VALUE_PARSE_ERROR"
}
}]
}
Интеграционные функции
Поля поиска
Поля страны могут быть использованы в пользовательских полях LOOKUP, позволяя вам извлекать данные о странах из связанных записей.
Автоматизация
Используйте значения стран в условиях автоматизации:
- Фильтровать действия по конкретным странам
- Отправлять уведомления на основе страны
- Направлять задачи на основе географических регионов
Формы
Поля страны в формах автоматически проверяют ввод пользователя и преобразуют названия стран в коды.
Необходимые разрешения
Действие | Необходимое разрешение |
---|---|
Create country field | Project OWNER or ADMIN role |
Update country field | Project OWNER or ADMIN role |
Set country value | Standard record edit permissions |
View country value | Standard record view permissions |
Ответы на ошибки
Недопустимое значение страны
{
"errors": [{
"message": "Invalid country value provided",
"extensions": {
"code": "CUSTOM_FIELD_VALUE_PARSE_ERROR"
}
}]
}
Несоответствие типа поля
{
"errors": [{
"message": "Field type mismatch: expected COUNTRY",
"extensions": {
"code": "INVALID_FIELD_TYPE"
}
}]
}
Рекомендации по лучшим практикам
Обработка ввода
- Используйте
createTodo
для автоматической проверки и преобразования - Используйте
setTodoCustomField
осторожно, так как он обходит проверку - Рассмотрите возможность проверки вводимых данных в вашем приложении перед использованием
setTodoCustomField
- Отображайте полные названия стран в интерфейсе для ясности
Качество данных
- Проверяйте вводимые данные о странах на этапе ввода
- Используйте единообразные форматы в вашей системе
- Рассмотрите региональные группировки для отчетности
Несколько стран
- Используйте поддержку массивов в
setTodoCustomField
для нескольких стран - Несколько стран в
createTodo
не поддерживаются через поле значения - Храните коды стран как массив в
setTodoCustomField
для правильной обработки
Общие случаи использования
-
Управление клиентами
- Местоположение головного офиса клиента
- Места доставки
- Налоговые юрисдикции
-
Отслеживание проектов
- Местоположение проекта
- Местоположения членов команды
- Целевые рынки
-
Соответствие и право
- Регуляторные юрисдикции
- Требования к местоположению данных
- Контроль экспорта
-
Продажи и маркетинг
- Назначения территорий
- Сегментация рынка
- Целевое назначение кампаний
Ограничения
- Поддерживает только коды ISO 3166-1 Alpha-2 (двухбуквенные коды)
- Нет встроенной поддержки для подразделений стран (штатов/провинций)
- Нет автоматических значков флагов стран (только текстовые)
- Не может проверять исторические коды стран
- Нет встроенной группировки по регионам или континентам
- Проверка работает только в
createTodo
, не вsetTodoCustomField
- Несколько стран не поддерживаются в поле значения
createTodo
- Коды стран хранятся как строка, разделенная запятыми, а не как настоящий массив
Связанные ресурсы
- Обзор пользовательских полей - Общие концепции пользовательских полей
- Поля поиска - Ссылка на данные о странах из других записей
- API форм - Включите поля страны в пользовательские формы