# Список исполнителей (/docs/reference/performers)

Список исполнителей содержит сведения обо всех участниках работы, включая руководителей, ответственных
исполнителей, соисполнителей и нормоконтролеров.

<Callout type="info">
  Шаблон реализует требование пункта [5.2.2](#5.2.2): если в списке указан только один исполнитель,
  отдельная страница не создается, а подпись переносится на [титульный лист](./title.mdx).
</Callout>

## Быстрый старт

Данные об исполнителях передаются в функцию `gost.with` через параметр `performers`. Это массив,
элементами которого могут быть словари (для людей) или строки (для названий организаций).

<TypstRender
  code={`
#show: gost.with(
  performers: (
      (name: "Иванов И.И.", position: "Руководитель НИР, д-р техн. наук"),
      (name: "Петров П.П.", position: "Старший научный сотрудник"),
      (name: "Сидоров С.С.", position: "Нормоконтролер")
  )
)
`}
  image="performers-example.png"
/>

## Автоматизация и логика шаблона

Шаблон `modern-g7-32` автоматизирует сложную верстку этой страницы согласно [6.11](#6.11):

1. **Формирование столбцов**: Сведения располагаются столбцом: слева — должность и регалии,
   справа — инициалы и фамилия.
2. **Поля для подписей**: Между должностью и фамилией автоматически создается пустое поле
   для подписи и место для даты согласно [6.11](#6.11).
3. **Разделы ответственности**: Если указан параметр `part`, он будет автоматически добавлен
   в скобках возле фамилии, как того требует стандарт.
4. **Организации**: Если в массив передана строка, она оформляется как наименование
   организации-соисполнителя.
5. **Принудительный вывод**: Параметр `force-performers: true` заставляет шаблон напечатать
   эту страницу, даже если исполнитель всего один.
6. **Сортировка соисполнителей**: Шаблон автоматически разделяет основных исполнителей и соисполнителей (`co-performer: true`),
   выстраивая их в правильном порядке независимо от того, как они расположены в исходном массиве.

## Параметры элемента списка

Каждый исполнитель описывается словарем со следующими ключами:

<TypeTable
  type={{
  name: {
    description: "Инициалы и фамилия",
    type: "string",
  },
  position: {
    description: "Должность, ученая степень и звание",
    type: "string",
  },
  part: {
    description: "Номера разделов или подразделов, в которых участвовал исполнитель",
    type: "string",
  },
  "co-performer": {
    description: "Флаг соисполнителя из другой организации",
    type: "boolean",
    default: "false"
  },
  title: {
    description: "Дополнительный префикс перед должностью (например, 'ОТ ИСПОЛНИТЕЛЯ')",
    type: "string"
  }
}}
/>

## Продвинутое использование

### Работа с несколькими организациями

Согласно [6.11](#6.11), для соисполнителей из других организаций нужно указывать их наименование.
В шаблоне это делается вставкой строки перед блоком сотрудников этой организации.

<TypstRender
  code={`
#show: gost.with(
  performers: (
      "НИИ «Вектор»",
      (name: "Алексеев А.А.", position: "Зав. лабораторией", part: "раздел 1"),
      "ГК «Робототехника»",
      (name: "Борисов Б.Б.", position: "Инженер", co-performer: true, part: "раздел 2")
  )
)
`}
  image="performers-organizations.png"
/>

### Автоматическая сортировка соисполнителей

Параметр `co-performer: true` дает полную свободу в составлении списка: вы можете использовать любые комбинации и назначать соисполнителем любого участника.

Вам не нужно вручную следить за строгим порядком элементов в массиве `performers`. Шаблон берет рутину на себя и автоматически отсортирует участников: основные исполнители (без флага) всегда будут сгруппированы и выведены первыми, а соисполнители сформируют отдельный логический блок ниже. Шаблон сам «подтянет» текстовые строки с названиями организаций к нужным сотрудникам, выстроив итоговую иерархию в строгом соответствии с требованиями ГОСТ.

<TypstRender
  code={`
#show: gost.with(
 performers: (
      "НИИ «Вектор»",
      (name: "Алексеев А.А.", position: "Зав. лабораторией", part: "раздел 1"),
      "ГК «Робототехника»",
      (name: "Борисов Б.Б.", position: "Инженер", co-performer: true, part: "раздел 2")
  )
)
`}
  image="performers-coperformers.png"
/>

### Нормоконтроль

По пункту [5.2.3](#5.2.3), отчет подлежит обязательному нормоконтролю. Добавьте ответственное лицо
в конец списка `performers`.

## Требования ГОСТ 7.32-2017

### Состав сведений

<GostQuote page={7} id="5.2.1">
  5.2.1 В список исполнителей должны быть включены фамилии и инициалы, должности, ученые степени, ученые звания и подписи руководителей НИР, ответственных исполнителей, исполнителей и соисполнителей, принимавших непосредственное участие в выполнении работы, с указанием их роли в подготовке отчета.
</GostQuote>

<GostQuote page={8} id="5.2.2">
  5.2.2 Если отчет выполнен одним исполнителем, его должность, ученую степень, ученое звание, фамилию и инициалы следует указывать на титульном листе отчета. В этом случае структурный элемент отчета «СПИСОК ИСПОЛНИТЕЛЕЙ» не оформляют.
</GostQuote>

<GostQuote page={8} id="5.2.3">
  5.2.3 Основная задача нормоконтролера — проверка соблюдения норм и требований, установленных настоящим стандартом, соблюдение всех нормативных требований, соблюдения единообразия в оформлении структурных элементов и правил оформления отчета о НИР.
</GostQuote>

<GostQuote page={17} id="6.11">
  6.11 Сведения об исполнителях следует располагать столбцом. Слева указывают должности, ученые степени, ученые звания руководителя НИР, ответственных исполнителей, исполнителей, соисполнителей, затем оставляют свободное поле для подлинных подписей, справа указывают инициалы и фамилии. Возле каждой фамилии в скобках следует указывать номер раздела (подраздела), в подготовке которого участвовал конкретный исполнитель. Для соисполнителей из других организаций следует указывать наименование организации-соисполнителя. Список исполнителей формируют в порядке должностей исполнителей.
</GostQuote>
