---
metadata:
  - name: generator
    content: Diplodoc Platform v5.61.1
alternate:
  - https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/issue-custom-fields.md
  - href: https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/issue-custom-fields.md
    type: text/markdown
    title: Markdown version
  - href: https://sourcecraft.dev/portal/docs/ru/llms.txt
    rel: describedby
title: Настроить пользовательские поля задач в SourceCraft
description: Как настроить пользовательские поля задач на уровне репозитория и организации SourceCraft с помощью файла .sourcecraft/issues.yaml.
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt


# Настроить пользовательские поля задач в SourceCraft

С помощью пользовательских полей можно добавить к [задачам](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#issues) дополнительные параметры, например плановую дату начала, оценку трудоемкости или этап работы. Конфигурация полей хранится в файле `.sourcecraft/issues.yaml` в ветке по умолчанию.

Вы можете настроить пользовательские поля задач для [отдельного репозитория](#configure-repository) и/или [всех репозиториев](#configure-organization) организации.

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

## Конфигурация .sourcecraft/issues.yaml {#spec}

Общий вид `.sourcecraft/issues.yaml`:

```yaml
issues:
  custom_fields:
    - slug: <текстовый идентификатор поля>
      type: <string, number, datetime, date, user или значение из issues.custom_types.slug>
      title: <название поля в интерфейсе SourceCraft>
      description: <текстовое описание поля>
      default: <значение поля по умолчанию или значение из issues.custom_types.values.slug>
      visibility: public
    ...
  custom_types:
    - slug: <текстовый идентификатор пользовательского типа поля>
      kind: enum
      title: <название пользовательского типа>
      description: <текстовое описание типа>
      values:
        - slug: <текстовый идентификатор варианта>
          title: <название варианта в интерфейсе SourceCraft>
          description: <текстовое описание варианта>
        ...
    ...
```

Где:
* `issues` — корневой блок спецификации. Допустимы следующие вложенные элементы:
  * `custom_fields` — список пользовательских полей задач.
    * `slug` — текстовый идентификатор поля.

      {% note warning %}

      Значение `slug` не должно совпадать с [идентификатором системного поля](https://sourcecraft.dev/portal/docs/ru/api-ref/Issues/GetIssue.md#body) задачи.

      {% endnote %}

    * `type` — тип пользовательского поля. Возможные значения:
      * `string` — строка.
      * `number` — [число с плавающей точкой двойной точности](https://ru.wikipedia.org/wiki/Число_двойной_точности).
      * `datetime` или `date` — дата и время в формате [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339). Оба варианта равнозначны. Рекомендуется использовать `datetime`.
      * `user` — [идентификатор](https://sourcecraft.dev/portal/docs/ru/api-ref/User/GetProfile.md#body) пользователя SourceCraft.
      * Значение из раздела `issues.custom_types.slug` — для выбора одного из преднастроенных вариантов.
    * `title` — название поля в интерфейсе SourceCraft.
    * `description` — текстовое описание поля, отображаемое в ![image](../../_assets/console-icons/circle-question.svg).
    * `default` — значение поля по умолчанию. Для поля с преднастроенными вариантами укажите значение `issues.custom_types.values.slug`.
    * `visibility` — видимость поля. Поддерживается только значение `public` — значение поля видны пользователям, у которых есть доступ к задаче.
  * `custom_types` — список пользовательских типов полей.
    * `slug` — текстовый идентификатор пользовательского типа поля.
    * `kind` — вид пользовательского типа поля. Поддерживается только значение `enum` — выбор из нескольких преднастроенных вариантов.
    * `title` — название типа.
    * `description` — текстовое описание типа.
    * `values` — список возможных вариантов.
      * `slug` — текстовый идентификатор варианта.
      * `title` — название варианта в интерфейсе SourceCraft.
      * `description` — текстовое описание варианта.

## Настроить пользовательские поля задач в репозитории {#configure-repository}

Файл [.sourcecraft/issues.yaml](#spec) можно [создать в интерфейсе SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/add-file-repo.md#create) или локально. При создании файла в интерфейсе добавьте конфигурацию по приведенному ниже примеру и сохраните изменения в ветку по умолчанию.

Чтобы настроить пользовательские поля задач локально:

1. [Склонируйте](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/repo-clone.md) репозиторий.
1. Создайте файл [.sourcecraft/issues.yaml](#spec) с конфигурацией пользовательских полей задач.

    {% cut "Пример конфигурации" %}

    ```yaml
    issues:
      custom_fields:
        - slug: planned_start_date
          type: datetime
          title: Планируемая дата начала
          description: Планируемая дата начала работ по этой задаче
          default: null
          visibility: public
        - slug: effort
          type: effort
          title: Трудоемкость
          description: Оценка трудоемкости задачи в размерах одежды (XS–XXL)
          default: m
          visibility: public
        - slug: testing_status
          type: testing_status
          title: Статус тестирования
          description: Статус прохождения тестирования этой задачи
          default: not_tested
          visibility: public
        - slug: stage
          type: stage
          title: Этап задачи
          description: Текущий этап жизненного цикла задачи
          default: discovery
          visibility: public
      custom_types:
        - slug: effort
          kind: enum
          title: Трудоемкость
          description: Оценка трудоемкости задачи в размерах одежды
          values:
            - slug: xs
              title: XS
              description: Совсем маленькая задача
            - slug: s
              title: S
              description: Небольшая задача
            - slug: m
              title: M
              description: Задача среднего размера
            - slug: l
              title: L
              description: Крупная задача
            - slug: xl
              title: XL
              description: Очень крупная задача
            - slug: xxl
              title: XXL
              description: Задача, которую стоит разбить на более мелкие
        - slug: testing_status
          kind: enum
          title: Статус тестирования
          description: Статус прохождения тестирования
          values:
            - slug: not_tested
              title: Не тестировалось
              description: Тестирование еще не начато
            - slug: testing
              title: Тестируется
              description: Тестирование выполняется
            - slug: needs_changes
              title: Требуются исправления
              description: По результатам тестирования найдены проблемы
            - slug: done
              title: Готово
              description: Тестирование успешно завершено
        - slug: stage
          kind: enum
          title: Этап задачи
          description: Текущий этап жизненного цикла задачи
          values:
            - slug: discovery
              title: Проработка
              description: Задача находится на этапе проработки
            - slug: development
              title: Разработка
              description: Задача находится на этапе разработки
            - slug: review
              title: Ревью
              description: Задача находится на этапе ревью
            - slug: prestable
              title: Стабилизация
              description: Задача практически стабилизирована
            - slug: internal_prod
              title: Внутренняя эксплуатация
              description: Задача находится во внутренней эксплуатации
            - slug: external_prod
              title: Внешняя эксплуатация
              description: Задача находится во внешней эксплуатации
    ```

    {% endcut %}

1. Добавьте файл в индекс Git, сделайте коммит и отправьте изменения в ветку по умолчанию:

    ```bash
    git add .sourcecraft/issues.yaml
    git commit -m "Add custom issue fields"
    git push origin <ветка_по_умолчанию>
    ```

1. [Создайте](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/issue-create.md) или откройте задачу на отдельной странице и убедитесь, что пользовательские поля отображаются в форме задачи.

{% note warning %}

Если конфигурация содержит ошибки, при создании или редактировании задачи пользовательские поля не отображаются. В уже созданных задачах пользовательские параметры, заданные ранее, сохраняются. Пользовательские поля снова становятся доступны после исправления конфигурации.

Если удалить поле из конфигурации, оно перестанет отображаться, в том числе в параметрах ранее созданных задач. При этом значения полей сохраняются и снова начнут отображаться, если позже в конфигурацию добавить поле с тем же `slug`, что был ранее.

{% endnote %}

## Настроить поля на уровне организации {#configure-organization}

Чтобы использовать общие пользовательские поля во всех репозиториях организации, [создайте специальный репозиторий .sourcecraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/org-config.md#create-repo) и добавьте в его ветку по умолчанию файл `.sourcecraft/issues.yaml`. Файл можно создать в интерфейсе SourceCraft или локально, как и [для отдельного репозитория](#configure-repository). Структура файла совпадает с конфигурацией отдельного репозитория.

<!-- source: ru/_includes/sourcecraft/custom-issue-fields-org-repo-configuration.md -->
Конфигурация репозитория имеет приоритет над конфигурацией организации. Если в обеих конфигурациях указан объект с одинаковым `slug`, используются параметры из репозитория. Списки значений `enum` из конфигурации репозитория заменяют организационные списки целиком.

На странице задачи сначала отображаются поля организации, а затем поля репозитория. Порядок внутри каждой группы соответствует порядку в соответствующем файле `.sourcecraft/issues.yaml`.
<!-- endsource: ru/_includes/sourcecraft/custom-issue-fields-org-repo-configuration.md -->

#### Полезные ссылки {#see-also}

* [Настроить политику доступа в организации SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/org-policies.md)
* [Создать задачу (issue) в репозитории SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/issue-create.md)
* [Работа с задачами (issues) в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/issue-work.md)
* [Настроить конфигурации репозитория в виде кода](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/configuration-edit.md)
* [Конфигурация параметров организации в виде кода в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/org-config.md)
