using Rugrid.Sdaid.Notation.Documents;
namespace Rugrid.Sdaid.Epas.Nts.Ui
{
/// <summary>
/// Карточка транспортного средства: характеристики из АИС ОИА ПЭО, данные, вносимые
/// в модуле, параметры и результаты расчёта нормативного расхода топлива.
/// </summary>
public class DOC_VehicleCard : IPageDocument, IHasStructuralLinks, IFolder<NtsUiFolder>
{
public SdaidLink[] Links => new[]
{
Rel.Realizes<Rugrid.Sdaid.Epas.Nts.Epics.NtsFuelCalc.UseCases.UC_NtsFuelCalc>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_Vehicle>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_VehicleCalc>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_CalculationStatus>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_ProcessingStatus>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_NtsAisLoadStatus>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_NtsModificationSelectionStatus>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_NtsSelectionMethod>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_ProcessingStatusPolicy>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_AisRefreshPolicy>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Backend.ModificationSelection.DOC_ModificationGroupSelection>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Backend.ModificationSelection.DOC_ModificationNameRecognition>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Infrastructure.AisOiaPeo.DOC_NtsAisImport>(),
Rel.Uses<DOC_VehicleRegistry>(),
Rel.Uses<DOC_ModificationSelectionModal>(),
Rel.Uses<DOC_VehicleModificationCard>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Epics.NtsFuelCalc.UseCases.UC_CreateVehicleModification>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_WinterAllowance>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_NtsCalcErrors>(),
};
public static string _refName = "Карточка транспортного средства";
public string Name => "Карточка транспортного средства";
public string Description =>
@"Карточка ТС: отображение характеристик ТС, внесение недостающих для расчёта характеристик, подбор модификации ТС для определения базовой нормы расхода, внесение параметров методики расчёта, расчёт нормативного потребления";
public string Version => "0.1";
public string Status => "draft";
public string[] Comments => new string[0];
/// <summary>Макет экрана: страница прототипа модуля, состав полей — из описания полей ниже.</summary>
public static string Wireframe = $""""
## Макет
{SdaidHtml.IframeOf<DOC_VehicleCard>("vehicle-card.html", 720)}
{SdaidHtml.LinkTo<DOC_VehicleCard>("vehicle-card.html", "Открыть макет в отдельной вкладке")}
"""";
public static string Structure = $""""
## Структура экрана
Карточка ТС делится на три равноправные верхнеуровневые группы:
| Группа | Состав |
|---|---|
| Сведения о ТС из АИС ОИА ПЭО | Характеристики ТС, загруженные из АИС, только чтение; бейдж «Статус загрузки» |
| Сведения о ТС, заполняемые в модуле | Подгруппы: Подбор модификации ТС, Условия эксплуатации, Параметры методики расчёта |
| Результаты расчёта | Расчётные параметры (с единицами измерения), определяемые методикой, только чтение; бейдж «Статус расчёта», поле «Ошибка» сразу под ним; отдельно, как общий итог — бейдж «Статус обработки» |
### Сведения о ТС из АИС ОИА ПЭО
Группа оформлена как обособленный блок с заголовком и кнопкой-иконкой «Обновить из АИС» в нём.
Характеристики ТС, загруженные из АИС ОИА ПЭО (вид ТС, вид топлива, марка и модель базы, нормы
АИС и т. п.) — только чтение. Завершает блок итоговый бейдж «Статус загрузки» —
{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_NtsAisLoadStatus>()}, свойство расчёта ТС
({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_VehicleCalc>()}): показывает, достаточно ли
загруженных данных для расчёта.
При статусе загрузки «Данных мало» сразу под бейджем «Статус загрузки» — пояснение (бейдж тоже
прижат к правому краю колонки значений, чтобы они не расходились), без отдельного оформления:
бейдж уже красный, второй визуальный акцент избыточен. Текст — по шаблону, не единая фраза на все
случаи: «Внести в АИС ОИА ПЭО и повторить загрузку: *<перечень незаполненных полей этого ТС,
через запятую>*.» — перечень берётся из результата процедуры приёма данных
({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Infrastructure.AisOiaPeo.DOC_NtsAisImport>()}, раздел
«Статус загрузки»). Доступность кнопки «Сохранить и рассчитать» и иконки «Подобрать модификацию»
в этом состоянии — см. «Поведение»; тултип на недоступном элементе отсылает к пояснению.
### Сведения о ТС, заполняемые в модуле
Группа оформлена как обособленный блок с заголовком, объединяющий три подгруппы:
| Подгруппа | Состав |
|---|---|
| Подбор модификации ТС | Марка, Модель, Модификация, Базовая норма расхода, Эталонная норма расхода, Статус подбора модификации, Способ подбора |
| Условия эксплуатации | Характеристики режима эксплуатации ТС (время работы отопителя, поездки с грузом), редактируются в карточке |
| Параметры методики расчёта | Нормы и надбавки для расчёта нормативного расхода по методике, редактируемые в модуле |
### Подбор модификации ТС
Группа «Подбор модификации ТС» — результат окна подбора модификаций
({SdaidAnchors.RefTo<DOC_ModificationSelectionModal>()}), которое открывается иконкой
«Подобрать модификацию». Состав группы: Марка, Модель, Модификация, Базовая норма расхода,
Эталонная норма расхода, Статус подбора модификации, Способ подбора.
Эталонная норма расхода, $H_эт$ — не результат отбора, а минимальная норма по всей базовой
группе ТС (вид ТС + вид топлива); в отличие от базовой нормы $H_s$, она не зависит от того, что
пользователь отобрал в окне подбора, и не меняется, пока не изменились вид ТС или вид топлива ТС.
Выводится в карточке рядом с базовой нормой, только для чтения.
Марка, Модель и Модификация — свойства ТС ({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_Vehicle>()});
Статус подбора модификации и Способ подбора — свойства расчёта ТС
({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_VehicleCalc>()}).
Правила подбора группы — текущая группа, базовая группа, маска при открытии, мягкое
автоуточнение, строгие ручные условия, расчёт H_min, H_max и $H_s$, статус и способ
подбора, поведение «Применить» — описаны в спеке окна подбора
({SdaidAnchors.RefTo<DOC_ModificationSelectionModal>()}); правила подбора группы —
{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.ModificationSelection.DOC_ModificationGroupSelection>()},
распознавание марки и модели —
{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.ModificationSelection.DOC_ModificationNameRecognition>()}.
Карточка показывает результат
подбора: марку, модель, модификацию, базовую норму, статус подбора модификации и способ
подбора. Справочник большой (тысячи записей), поэтому в окне используется групповая
выборка с уточняющими фильтрами, а не полный список.
Если статус подбора модификации — «Не определена» (для вида ТС и вида топлива этого ТС в
справочнике {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_VehicleModification>()} нет ни
одной модификации с нормой), точка входа для создания недостающей записи — не в карточке ТС, а
в самом окне подбора модификаций ({SdaidAnchors.RefTo<DOC_ModificationSelectionModal>()}): в его
подвале всегда доступна кнопка «Создать модификацию» (не только при пустом отборе — нужной записи
может не быть и когда отбор непуст) — по правам пользователя (роль «Администратор модуля»,
{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Vision.DOC_NtsVision>()}, «Роли пользователей»). Кнопка
открывает {SdaidAnchors.RefTo<DOC_VehicleModificationCard>()}: Вид ТС и Вид топлива переносятся
точно (свойства ТС), Марка и Модель — как предложение распознавания
({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.ModificationSelection.DOC_ModificationNameRecognition>()},
марка + остаток наименования), администратор может их поправить. Сохранение
новой записи справочника не закрывает окно подбора и не запускает пересчёт автоматически — после
сохранения запись доступна для подбора в том же окне
({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Epics.NtsFuelCalc.UseCases.UC_CreateVehicleModification>()}).
### Обновление из АИС
Иконка «Обновить из АИС» перед запуском показывает модальное окно подтверждения («Отменить» /
«Выполнить»): операция не безобидна — может инициировать пересчёт, поэтому не должна срабатывать
по одному клику без паузы. Текст: «Будут обновлены "Сведения о ТС из АИС ОИА ПЭО". После обновления
данных будут повторно выполнены подбор модификаций и расчёт нормативного расхода. Обновить
"Сведения о ТС из АИС ОИА ПЭО"?»
По «Выполнить» обновляются данные ТС, подбор модификации и расчёт — правила реконсиляции подбора
и условия пересчёта описаны в {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_AisRefreshPolicy>()}.
Параметр `car` процедуры приёма ({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Infrastructure.AisOiaPeo.DOC_NtsAisImport>()})
здесь — это ТС карточки; `nav` — его организационный объект-владелец
({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_Vehicle>()} → Организационный объект),
определяется автоматически, пользователь его не выбирает.
### Основные интерфейсные элементы
| Элемент | Роль |
|---|---|
| Группа «Сведения о ТС из АИС ОИА ПЭО» | Обособленный блок; данные АИС, только чтение; иконка «Обновить из АИС» в заголовке; пояснение (без отдельного оформления, не баннер) при «Данных мало»; завершается итоговым бейджем «Статус загрузки» |
| — Статус загрузки (итоговый бейдж группы) | Свойство расчёта ТС (`Расчёт ТС --> Статус загрузки`); бейдж: «Не выполнена» (серый) / «Данных мало» (красный) / «Загрузка выполнена» (зелёный) |
| Группа «Сведения о ТС, заполняемые в модуле» | Обособленный блок, объединяет подгруппы «Подбор модификации ТС», «Условия эксплуатации», «Параметры методики расчёта» |
| Группа «Подбор модификации ТС» | Марка, Модель, Модификация, Базовая норма расхода и Эталонная норма расхода; бейджи «Статус подбора модификации» и «Способ подбора»; иконка «Подобрать модификацию» у поля «Базовая норма расхода» |
| — Статус подбора модификации | Свойство расчёта ТС (`Расчёт ТС --> Статус подбора модификации`); бейдж: «Не выполнен» (серый) / «Не определена» (красный — подбор проводился, модификаций для вида ТС и топлива нет) / «Определена» (зелёный) / «Определена группа» (жёлтый) |
| — Способ подбора | Свойство расчёта ТС (`Расчёт ТС --> Способ подбора`); бейдж: «Не определён» (серый) / «авто» (жёлтый) / «эксперт» (зелёный) |
| Группа «Условия эксплуатации» | Начинается двумя read-only полями климатического района (Субъект РФ эксплуатации, Поправочный коэффициент D_район), дальше — поля ввода модуля (время отопителя, масса прицепа, поездки с грузом) |
| — Субъект РФ эксплуатации | Найден по владельцу ТС: `Транспортное средство --> Организационный объект --> Субъект РФ`. Не определён — текст ошибки классификатора ({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_NtsCalcErrors>()}, `fuel.cf_climate_region`): «Субъект РФ эксплуатации не определён — неизвестна зимняя надбавка» |
| — Поправочный коэффициент на климатический район, D_район, % | Предельная величина зимней надбавки найденной записи {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_WinterAllowance>()} для субъекта эксплуатации. Субъект определён, но записи нет — тот же текст ошибки, что и у поля «Субъект РФ эксплуатации», не отдельная формулировка |
| Группа «Параметры методики расчёта» | Нормы и надбавки, вводимые в модуле |
| Группа «Результаты расчёта» | Расчётные параметры, только чтение, каждый — с единицей измерения и иконкой подсказки; завершается бейджем «Статус расчёта», полем «Ошибка» (сразу под ним) и, отдельно, итоговым бейджем «Статус обработки» |
| Иконка «Подобрать модификацию» | Открывает окно подбора модификаций ({SdaidAnchors.RefTo<DOC_ModificationSelectionModal>()}); в подвале окна всегда доступна кнопка «Создать модификацию» — по правам пользователя (администратор модуля) |
| Иконка «Обновить из АИС» | Запрашивает подтверждение, затем повторно загружает характеристики ТС из АИС ОИА ПЭО; реконсилирует подбор модификации и запускает пересчёт — {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_AisRefreshPolicy>()} |
| Кнопки «Сохранить и рассчитать», «Отменить» | Сохранение данных и запуск расчёта / выход в реестр |
| Бейдж статуса и поле «Ошибка» | Результат расчёта и текст ошибки |
### Поведение
- При статусе загрузки «Данных мало» сразу под бейджем «Статус загрузки» появляется пояснение
(не баннер — без отдельного оформления, в цвете бейджа), какие поля нужно довнести в АИС ОИА
ПЭО и повторить загрузку. «Сохранить и рассчитать» недоступна до тех пор, пока статус загрузки
не станет «Загрузка выполнена» — без полного набора обязательных характеристик расчёт не имеет
смысла. Иконка «Подобрать модификацию» зависит от более узкого условия, описанного в
{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_AisRefreshPolicy>()} (раздел «Подбор
модификации») — того же, при котором сервис выполняет автоподбор; здесь то же действие
запускает пользователь вручную, а не сервис.
- Если статус подбора модификации — «Не определена» (подбор проводился, но для вида ТС и вида
топлива в справочнике нет ни одной модификации с нормой) — «Сохранить и рассчитать» недоступна:
без базовой нормы результат заведомо невозможен, повторная попытка вручную ничего не изменит.
Расчёт при этом всё равно запускается безусловно при каждом приёме данных из АИС (первом или
повторном) — валидатор секции `fuel.base_norm` честно вернёт ошибку «Базовая норма не
определена», статус расчёта — «Выполнен с ошибкой», статус обработки — «Нет модификаций».
Иконка «Подобрать модификацию» при этом остаётся доступной — пользователь может вручную
уточнить условия подбора в окне.
- Создание недостающей модификации доступно администратору модуля из окна подбора модификаций
(кнопка «Создать модификацию» в подвале окна, доступна всегда) →
{SdaidAnchors.RefTo<DOC_VehicleModificationCard>()} с видом ТС и видом топлива, перенесёнными
точно, и маркой/моделью — как редактируемым предложением); подробности —
{SdaidAnchors.RefTo<DOC_ModificationSelectionModal>()}.
- Состав полей зависит от вида ТС: показываются только поля, применимые к этому виду.
Применимость задана в столбце «Примечания» таблицы «Описание полей» пометками «Для автобусов»,
«Для грузовых и самосвалов», «Для автомобилей-самосвалов», «Для спецавтомобилей»; поля без
пометки показываются всем видам. Группа, в которой после этого не остаётся ни одного поля,
не показывается.
- Группа «Подбор модификации ТС» показывает результат окна подбора: марку, модель, модификацию,
базовую норму расхода, статус и способ подбора.
- Базовая норма выбирается в окне подбора модификаций (иконка «Подобрать модификацию» у поля
«Базовая норма расхода топлива, $H_s$»).
- «Сохранить и рассчитать» — сохранение введённых данных и запуск расчёта; подтверждение —
самогаснущее уведомление («Расчёт выполнен» / «Ошибка расчёта»), не модальное окно: само по
себе оно не требует решения пользователя, поэтому не должно его блокировать. Две отдельные
иконки открывают лог: рядом с бейджем «Статус расчёта» — иконка лога расчёта (журнал формул),
видна только при статусе «Успешно выполнен» — журнала формул без успешного расчёта не
существует; рядом с полем «Ошибка» — отдельная иконка лога ошибок, видна только при наличии
ошибки. Два статуса — два разных, не перекрывающихся условия показа. В самом окне лога — кнопка
«Копировать», копирующая его содержимое в буфер обмена.
- Кнопки «Сохранить и рассчитать» и «Отменить» закреплены у правого нижнего угла экрана (не
уезжают за пределы видимой области при прокрутке длинной страницы).
- «Отменить» — закрытие карточки и возврат в реестр ТС.
- Кнопки «Удалить» нет: ТС ведутся в АИС и в модуле не удаляются.
- «Обновить из АИС» — запрашивает подтверждение, обновляет характеристики из АИС, реконсилирует
подбор модификации и пересчитывает результат; подробно — {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_AisRefreshPolicy>()}.
- Иконка подсказки — формула методики по виду ТС и расшифровка переменных.
### Открытые вопросы
Открытые вопросы карточки ТС собраны в эпике: {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Epics.NtsFuelCalc.OQ_VehicleCard>()}.
"""";
public static string Body = $$""""
**Описание полей:**
| Название поля | Способ заполнения | Обязательно для заполнения | Редактируемое в режиме редактирования | Правила валидации | Тип поля | Маска / Формат | Значение по умолчанию | Примечания | Группа полей |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| | | | | | | | | | **Сведения о ТС из АИС ОИА ПЭО** |
| Наименование | Транспортное средство. Наименование | Да | Нет | | Поле только для чтения | | | | Сведения о ТС из АИС ОИА ПЭО |
| Гос. номер | Транспортное средство. Государственный регистрационный знак | Нет | Нет | | Поле только для чтения | | | | Сведения о ТС из АИС ОИА ПЭО |
| Марка и модель базы ТС | Транспортное средство. Марка и модель базы ТС | Нет | Нет | | Поле только для чтения | | | | Сведения о ТС из АИС ОИА ПЭО |
| Модель спец. автомобиля | Транспортное средство. Модель спец. автомобиля | Нет | Нет | | Поле только для чтения | | | | Сведения о ТС из АИС ОИА ПЭО |
| Вид ТС | Транспортное средство --> Вид ТС. Наименование | Да | Нет | | Поле только для чтения | | | Определяет формулу расчёта | Сведения о ТС из АИС ОИА ПЭО |
| Тип по паспорту ТС | Транспортное средство. Тип по паспорту ТС | Нет | Нет | | Поле только для чтения | | | | Сведения о ТС из АИС ОИА ПЭО |
| Назначение ТС | Транспортное средство --> Назначение ТС. Наименование | Нет | Нет | | Поле только для чтения | | | | Сведения о ТС из АИС ОИА ПЭО |
| Владелец | Транспортное средство --> Организационный объект. Наименование | Да | Нет | | Поле только для чтения | | | | Сведения о ТС из АИС ОИА ПЭО |
| Год выпуска | Транспортное средство. Год выпуска | Нет | Нет | | Поле только для чтения | {9999} | | | Сведения о ТС из АИС ОИА ПЭО |
| Основной вид топлива | Транспортное средство --> Вид автомобильного топлива. Наименование | Да | Нет | | Поле только для чтения | | | | Сведения о ТС из АИС ОИА ПЭО |
| Дополнительный вид топлива | Транспортное средство --> Вид автомобильного топлива. Наименование | Нет | Нет | | Поле только для чтения | | | | Сведения о ТС из АИС ОИА ПЭО |
| Норма расхода на пробег, летняя, л/100 км | Транспортное средство. Норма расхода топлива на пробег, летняя | Нет | Нет | | Поле только для чтения | {999,99} | | | Сведения о ТС из АИС ОИА ПЭО |
| Норма расхода на пробег, зимняя, л/100 км | Транспортное средство. Норма расхода топлива на пробег, зимняя | Нет | Нет | | Поле только для чтения | {999,99} | | | Сведения о ТС из АИС ОИА ПЭО |
| Норма расхода на час работы, летняя, л/ч | Транспортное средство. Норма расхода топлива на час работы, летняя | Нет | Нет | | Поле только для чтения | {999,99} | | Для спецавтомобилей | Сведения о ТС из АИС ОИА ПЭО |
| Норма расхода на час работы, зимняя, л/ч | Транспортное средство. Норма расхода топлива на час работы, зимняя | Нет | Нет | | Поле только для чтения | {999,99} | | Для спецавтомобилей | Сведения о ТС из АИС ОИА ПЭО |
| Грузоподъёмность, т | Транспортное средство. Грузоподъёмность | Нет | Нет | | Поле только для чтения | {999,99} | | | Сведения о ТС из АИС ОИА ПЭО |
| Пассажировместимость, чел. | Транспортное средство. Пассажировместимость | Нет | Нет | | Поле только для чтения | {999} | | | Сведения о ТС из АИС ОИА ПЭО |
| Дата начала эксплуатации | Транспортное средство. Дата начала эксплуатации | Да | Нет | | Поле только для чтения | {DD.MM.YYYY} | | Обязательно для расчёта: задаёт срок эксплуатации | Сведения о ТС из АИС ОИА ПЭО |
| Дата окончания эксплуатации | Транспортное средство. Дата окончания эксплуатации | Нет | Нет | | Поле только для чтения | {DD.MM.YYYY} | | Заполнена — ТС выбыло из эксплуатации | Сведения о ТС из АИС ОИА ПЭО |
| Статус загрузки | Бейдж с наименованием и цветом: Расчёт ТС --> Статус загрузки; значения — {{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_NtsAisLoadStatus>()}} | Да | Нет | | Бейдж | | Не выполнена | Итоговый бейдж группы; цвета: серый — «Не выполнена»; красный — «Данных мало»; зелёный — «Загрузка выполнена» | Сведения о ТС из АИС ОИА ПЭО |
| | | | | | | | | | **Сведения о ТС, заполняемые в модуле** |
| Марка | Транспортное средство --> Марка ТС. Наименование | Нет | Нет | | Поле только для чтения | | | Заполняется подбором; при нескольких отобранных марках не определяется | Подбор модификации ТС |
| Модель | Транспортное средство --> Модель ТС. Наименование | Нет | Нет | | Поле только для чтения | | | Заполняется подбором; при нескольких отобранных моделях не определяется | Подбор модификации ТС |
| Модификация | Транспортное средство --> Модификация ТС. Наименование | Нет | Нет | | Поле только для чтения | | | Заполняется подбором; при нескольких отобранных модификациях не определяется | Подбор модификации ТС |
| Базовая норма расхода топлива, $H_s$ | Расчёт ТС. Базовая норма расхода топлива (`fuel.base_norm`) | Нет | Да | | Поле только для чтения | {999,99} | | Заполняется подбором (иконка «Подобрать модификацию») | Подбор модификации ТС |
| Эталонная норма расхода топлива, $H_эт$ | Расчёт ТС. Эталонная норма расхода топлива (`fuel.reference_norm`) | Нет | Нет | | Поле только для чтения | {999,99} | | Минимальная норма по всей базовой группе (вид ТС + вид топлива), не зависит от отбора; заполняется вместе с базовой нормой по «Применить» в окне подбора | Подбор модификации ТС |
| Статус подбора модификации | Бейдж с наименованием и цветом: Расчёт ТС --> Статус подбора модификации; значения — {{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_NtsModificationSelectionStatus>()}} | Нет | Нет | | Бейдж | | Не выполнен | Цвета: серый — «Не выполнен» (подбор ещё не проводился); красный — «Не определена» (подбор проводился, но для вида ТС и топлива нет ни одной модификации с нормой — в окне подбора при этом доступна кнопка «Создать модификацию»); зелёный — «Определена»; жёлтый — «Определена группа» | Подбор модификации ТС |
| Способ подбора | Бейдж с наименованием и цветом: Расчёт ТС --> Способ подбора; значения — {{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_NtsSelectionMethod>()}} | Нет | Нет | | Бейдж | | Не определён | Цвета: серый — «Не определён»; жёлтый — «авто»; зелёный — «эксперт» | Подбор модификации ТС |
| Субъект РФ эксплуатации | Транспортное средство --> Организационный объект --> Субъект РФ. Наименование | Да | Нет | | Поле только для чтения | | | Не определён — текст ошибки {{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_NtsCalcErrors>()}} (`fuel.cf_climate_region`): «Субъект РФ эксплуатации не определён — неизвестна зимняя надбавка» | Условия эксплуатации |
| Поправочный коэффициент на климатический район, $D_{район}$, % | Справочник {{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_WinterAllowance>()}} --> Предельная величина зимней надбавки. Запись найдена по субъекту РФ эксплуатации | Да | Нет | | Поле только для чтения | {999,9} | | Субъект определён, но записи нет — тот же текст ошибки, что у поля «Субъект РФ эксплуатации», не отдельная формулировка | Условия эксплуатации |
| Время работы автомобиля с включённым отопителем, ч | Транспортное средство. Время работы автомобиля с включённым отопителем | Нет | Да | | Поле для ввода | {999,99} | | Для автобусов | Условия эксплуатации |
| Масса прицепа, т | Транспортное средство. Собственная масса прицепа (полуприцепа) | Нет | Да | | Поле для ввода | {999,99} | | Для грузовых и самосвалов | Условия эксплуатации |
| Количество поездок с грузом за смену, шт. | Транспортное средство. Количество поездок с грузом за смену | Нет | Да | | Поле для ввода | {999} | | Для автомобилей-самосвалов | Условия эксплуатации |
| Норма расхода топлива при использовании штатных отопителей, л/ч | Транспортное средство. Норма расхода топлива при использовании штатных отопителей | Нет | Да | | Поле для ввода | {999,99} | | Для автобусов | Параметры методики расчёта |
| Норма расхода на транспортную работу автомобиля-самосвала, л/100 т·км | Транспортное средство. Норма расхода топлива на транспортную работу автомобиля-самосвала | Нет | Да | | Поле для ввода | {999,99} | | Для автомобилей-самосвалов | Параметры методики расчёта |
| Надбавка на численность населения, % | Транспортное средство. Надбавка на численность населения | Нет | Да | | Поле для ввода | {999,99} | | Ручная надбавка; по умолчанию 0 | Параметры методики расчёта |
| Надбавка за частые технологические остановки, % | Транспортное средство. Надбавка за частые технологические остановки | Нет | Да | | Поле для ввода | {999,99} | | Ручная надбавка; по умолчанию 0 | Параметры методики расчёта |
| Надбавка при движении с пониженной скоростью, % | Транспортное средство. Надбавка при движении с пониженной скоростью | Нет | Да | | Поле для ввода | {999,99} | | Ручная надбавка; по умолчанию 0 | Параметры методики расчёта |
| Надбавка при работе специальных автомобилей, % | Транспортное средство. Надбавка при работе специальных автомобилей | Нет | Да | | Поле для ввода | {999,99} | | Ручная надбавка; по умолчанию 0 | Параметры методики расчёта |
| Надбавка при работе в условиях ЧС, % | Транспортное средство. Надбавка при работе в условиях ЧС | Нет | Да | | Поле для ввода | {999,99} | | Ручная надбавка; по умолчанию 0 | Параметры методики расчёта |
| Надбавка за вынужденный простой, % | Транспортное средство. Надбавка за вынужденный простой | Нет | Да | | Поле для ввода | {999,99} | | Ручная надбавка; по умолчанию 0 | Параметры методики расчёта |
| | | | | | | | | | **Результаты расчёта** |
| Нормативный расход, $Q_н$, л | Расчёт ТС. Нормативный расход (`fuel.normative_consumption`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; алгоритм — иконка подсказки | Результаты расчёта |
| Эталонный расход, $Q_эт$, л | Расчёт ТС. Эталонный расход (`fuel.reference_consumption`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; тот же алгоритм, что и Q_н, со входом H_эт вместо H_s; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход за период передвижения, $Q_{движ}$, л | Расчёт ТС. Нормативный расход за период передвижения (`fuel.special_move`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход за период стоянки, $Q_{стоян}$, л | Расчёт ТС. Нормативный расход за период стоянки (`fuel.special_stop`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход за период передвижения в городском режиме, $Q_{движ}^гор$, л | Расчёт ТС. Нормативный расход за период передвижения в городском режиме (`fuel.special_move_q_urban`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход за период передвижения за пригородной зоной, $Q_{движ}^{загор}$, л | Расчёт ТС. Нормативный расход за период передвижения за пригородной зоной (`fuel.special_move_q_suburban`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход за период передвижения в зимний период, $Q_{движ}^зима$, л | Расчёт ТС. Нормативный расход за период передвижения в зимний период (`fuel.special_move_q_winter`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход за период передвижения в летний период, $Q_{движ}^{лето}$, л | Расчёт ТС. Нормативный расход за период передвижения в летний период (`fuel.special_move_q_summer`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход за период стоянки в городском режиме, $Q_{стоян}^гор$, л | Расчёт ТС. Нормативный расход за период стоянки в городском режиме (`fuel.special_stop_q_urban`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход за период стоянки за пригородной зоной, $Q_{стоян}^{загор}$, л | Расчёт ТС. Нормативный расход за период стоянки за пригородной зоной (`fuel.special_stop_q_suburban`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход за период стоянки в зимний период, $Q_{стоян}^зима$, л | Расчёт ТС. Нормативный расход за период стоянки в зимний период (`fuel.special_stop_q_winter`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход за период стоянки в летний период, $Q_{стоян}^{лето}$, л | Расчёт ТС. Нормативный расход за период стоянки в летний период (`fuel.special_stop_q_summer`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход в городском режиме, $Q^гор$, л | Расчёт ТС. Нормативный расход в городском режиме (`fuel.q_urban`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход за пригородной зоной, $Q^{загор}$, л | Расчёт ТС. Нормативный расход за пригородной зоной (`fuel.q_suburban`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход в зимний период, $Q^зима$, л | Расчёт ТС. Нормативный расход в зимний период (`fuel.q_winter`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход в летний период, $Q^{лето}$, л | Расчёт ТС. Нормативный расход в летний период (`fuel.q_summer`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход на пробег, $Q_{пробег}$, л | Расчёт ТС. Нормативный расход на пробег (`fuel.q_mileage`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход на транспортную работу, $Q_{трансп}$, л | Расчёт ТС. Нормативный расход на транспортную работу (`fuel.q_transport`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для грузовых; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход на массу прицепа, $Q_{прицеп}$, л | Расчёт ТС. Нормативный расход на массу прицепа (`fuel.q_trailer`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для грузовых; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход на работу отопителя, $Q_{обор}$, л | Расчёт ТС. Нормативный расход на работу отопителя (`fuel.q_equipment`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для автобусов; алгоритм — иконка подсказки | Результаты расчёта |
| Нормативный расход на ездки с грузом, $Q_{ездки}$, л | Расчёт ТС. Нормативный расход на ездки с грузом (`fuel.q_trips`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для самосвалов; алгоритм — иконка подсказки | Результаты расчёта |
| Норма специального автомобиля на пробег, $H_{sc}$, л/100 км | Расчёт ТС. Норма специального автомобиля на пробег (`fuel.h_sc`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Норма расхода топлива на пробег при выполнении специальной работы во время передвижения, $H_s''$, л/100 км | Расчёт ТС. Норма расхода топлива на пробег при выполнении специальной работы во время передвижения (`fuel.h_s_special_work`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Пробег к месту работы и обратно, $S'$, км | Расчёт ТС. Пробег к месту работы и обратно (`fuel.s_special_to_work`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Пробег при выполнении специальной работы при передвижении, $S''$, км | Расчёт ТС. Пробег при выполнении специальной работы при передвижении (`fuel.s_special_on_work`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Норма расхода топлива на работу специального оборудования, $H_т$, л/ч | Расчёт ТС. Норма расхода топлива на работу специального оборудования (`fuel.h_special_equipment`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Время работы специального оборудования, $T$, ч | Расчёт ТС. Время работы специального оборудования (`fuel.special_equipment_time`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для спецавтомобилей; алгоритм — иконка подсказки | Результаты расчёта |
| Норма расхода на транспортную работу, $H_w$, л/100 т·км | Расчёт ТС. Норма расхода на транспортную работу (`fuel.h_transport`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для грузовых; алгоритм — иконка подсказки | Результаты расчёта |
| Норма расхода на дополнительную массу прицепа, $H_g$, л/100 т·км | Расчёт ТС. Норма расхода на дополнительную массу прицепа (`fuel.h_trailer`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для грузовых; алгоритм — иконка подсказки | Результаты расчёта |
| Норма расхода автомобиля-самосвала, $H_{sanc}$, л/100 км | Расчёт ТС. Норма расхода автомобиля-самосвала (`fuel.h_sanc`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для самосвалов; алгоритм — иконка подсказки | Результаты расчёта |
| Поправочный коэффициент к норме в зимний период, $D^зима$, % | Расчёт ТС. Поправочный коэффициент к норме в зимний период (`fuel.correction_factor_winter`) | Нет | Нет | | Поле только для чтения | {999,9} | | Вычисляемое; алгоритм — иконка подсказки | Результаты расчёта |
| Поправочный коэффициент к норме в летний период, $D^{лето}$, % | Расчёт ТС. Поправочный коэффициент к норме в летний период (`fuel.correction_factor_summer`) | Нет | Нет | | Поле только для чтения | {999,9} | | Вычисляемое; алгоритм — иконка подсказки | Результаты расчёта |
| Поправочный коэффициент к норме при работе за пригородной зоной, $D^{загор}$, % | Расчёт ТС. Поправочный коэффициент к норме за пригородной зоной (`fuel.cf_suburb`) | Нет | Нет | | Поле только для чтения | {99,99} | | Вычисляемое; алгоритм — иконка подсказки | Результаты расчёта |
| Объём транспортной работы, $W$, т·км | Расчёт ТС. Объём транспортной работы (`fuel.w`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для грузовых; алгоритм — иконка подсказки | Результаты расчёта |
| Масса груза, $G_{гр}$, т | Расчёт ТС. Масса груза (`fuel.g_cargo`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для грузовых; алгоритм — иконка подсказки | Результаты расчёта |
| Пробег с грузом, $S_{гр}$, км | Расчёт ТС. Пробег с грузом (`fuel.s_cargo`) | Нет | Нет | | Поле только для чтения | {999,99} | | Вычисляемое; для грузовых; алгоритм — иконка подсказки | Результаты расчёта |
| Статус расчёта | Бейдж с наименованием и цветом: Расчёт ТС --> Статус расчёта; значения — {{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_CalculationStatus>()}} | Да | Нет | | Бейдж | | Не выполнен | Цвета: серый — «Не выполнен»; зелёный — «Успешно выполнен»; красный — «Выполнен с ошибкой» | Результаты расчёта |
| Ошибка | Расчёт ТС. Текст ошибки расчета по классификатору ошибок; показывается только при статусе «Выполнен с ошибкой» | Нет | Нет | | Поле только для чтения | | | Сразу под «Статус расчёта», только при статусе «Выполнен с ошибкой»; текст в цвете ошибки — явно относится к статусу выше, не нейтральное поле; без иконки подсказки | Результаты расчёта |
| Статус обработки | Бейдж с наименованием и цветом: Расчёт ТС --> Статус обработки; значения — {{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_ProcessingStatus>()}}; логика установки — {{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_ProcessingStatusPolicy>()}} | Да | Нет | | Бейдж | | Не выполнена | Итоговый статус по карточке — отделён отступом от пары «Статус расчёта»/«Ошибка» выше, чтобы не читался как их продолжение; цвета: серый — «Не выполнена»; красный — «Мало данных загружено» / «Нет модификаций» / «Отсутствуют данные для расчёта»; жёлтый — «Автовыбор не подтверждён» / «Модификация не определена»; зелёный — «Завершена»; при наведении на бейдж показывается расшифровка | Результаты расчёта |
"""";
}
}