Справочники

Справочники: удельные расходы, Kv, расчётные температуры, графики ГВС, организации, эксплуатационные и административные районы, бригады, техники.

Где найти
«Инструменты» (значок чемоданчика справа вверху) → Исходные данные → «Справочники». То же — палитрой команд: Ctrl+K и начните набирать название.
Права
право «Справочники и шаблоны карточек» — иначе пункт в меню не виден.
Читаю как

Возможности

  • Девять справочников: «Удельные расходы», «Коэффициенты вариации (Kv)», «Расчётные температуры», «Графики нагрузки ГВС», «Организации», «Эксплуатационные районы», «Административные районы», «Бригады», «Техники (ответственные)».
  • Для первых четырёх — выбор «Фрагмент»: эти справочники у каждого фрагмента свои, как в дереве «Неграфические данные» десктопа.
  • «Поиск» по таблице, листание по 50 записей и больше; кнопка обновления.
  • «Добавить» — карточка новой записи; карандаш «Изменить» — правка; корзина «Удалить» — удаление с подтверждением.
  • Над таблицей — где используется справочник; у справочников расчёта — предупреждение «Справочник используется в гидравлическом расчёте — после правки пересчитайте режим.».
  • В карточке записи — «Используется: …» со списком таблиц и числом ссылок на эту запись.

Как это работает

Откуда данные. Каждый справочник — таблица базы десктопа: specexpends, varcoefficients, calctemperatures, gvsloadgraphs (по фрагментам, поле fileid), organizations, rayon_ekspluatatsii, administrativnyy_rayon, brigades, responsibles. Поля карточки — все колонки таблицы, кроме служебных; подписи — из описания справочника, у полей-ссылок («Тип организации», «Мастер (техник)» и др.) — список значений.

Ссылки. Внешних ключей в базе десктопа нет, поэтому кто ссылается на справочник, перечислено явно: например, на удельные расходы — реальные и обобщённые потребители, на Kv — ещё и участки (подача и обратка), на организацию — линейные объекты, узлы, паспорта труб, павильоны, камеры и другие, на техника — потребители, нарушения, ремонты, опрессовки, участки МС и РС. По этому списку окно считает ссылки на запись.

Правила записи.

  • Значения приводятся к типу колонки; число или дата не того вида — ошибка поля.
  • У большинства справочников название (код) должно быть уникальным, у справочников расчёта — в пределах фрагмента: «Запись «…» уже есть».
  • Запись, на которую есть ссылки, не удаляется: «Запись используется (N ссылок) — удаление запрещено», ниже — по каким таблицам. Справочник расчёта со ссылками нельзя перенести в другой фрагмент.
  • У административных районов ссылки хранят наименование, а не номер: переименование района не обновляет уже записанные адреса.
  • Новый техник получает статус 15 — его сразу видит групповой установщик «Установить ФИО техников».
  • Каждое добавление, изменение и удаление пишется в audit_log.

Что нужно для работы

  • Пункт в «Инструментах» — право «Справочники и шаблоны карточек». Смотреть записи через API может любой вошедший.
  • Добавлять, менять, удалять — то же право на сервере и включённая запись (MUTATIONS_ENABLED=true). Кнопки «Добавить», «Удалить» и «Сохранить» окно включает по праву «Журналы: ремонты, ПТС, акты, ТУ, привязки» — у пользователя должны быть оба права.

Шаги

  1. Откройте «Инструменты» и наберите в поиске «Справочники» — пункт выделен рамкой.

    Пункт «Справочники» в панели «Инструменты»

  2. Нажмите пункт — откроется окно.

    Окно «Справочники»

  3. Выберите другой справочник в поле «Справочник» — таблица и её колонки сменятся; над таблицей указано, какие поля базы ссылаются на этот справочник.

    Справочники: шаг 3

Примеры

Копия Алматы: сколько записей. Удельные расходы — 75 записей во всех фрагментах, Kv — 99, расчётные температуры — 77, графиков ГВС нет; организаций — 16 579, эксплуатационных районов — 10, административных районов — 9; бригад и техников в копии нет. У фрагмента «Магистральные сети АлЭС» (1) две группы Kv и два кода удельных расходов.

Та же копия: добавить, изменить, удалить. В «Административные районы» добавлена запись «SYNTH-MANUAL район» (номер 10), переименована в «SYNTH-MANUAL район 2» — «Используется: …» нет, ссылок 0, затем удалена; в справочнике снова 9 районов. Попытка удалить «Алатауский» отклонена: «Запись используется (1706 ссылок) — удаление запрещено» — 300 в «Жильё», 300 в «Жильё (1)», 1106 в «Договоры АЛСЕКО». Добавить второй «Алатауский» тоже нельзя: «Запись «Алатауский» уже есть».

Если не получается

  • Кнопки «Добавить» и корзины неактивны, поля карточки только для чтения — нет права на запись или запись на сервере выключена.
  • «Запись «…» уже есть» (у справочников расчёта — «… уже есть в этом фрагменте») — выберите другое название или исправьте существующую запись.
  • «Запись используется (N ссылок) — удаление запрещено» — сначала переназначьте объекты на другую запись (для потребителей и участков — групповыми установщиками).
  • «Нельзя перенести в другой фрагмент: запись используется» — у записи справочника расчёта есть ссылки в текущем фрагменте.
  • Ошибка поля «колонка: …» — значение не того типа или длиннее допустимого.
  • «Не удалось сохранить», «Не удалось удалить», «Не удалось загрузить справочник», «Не удалось загрузить справочники» — с текстом ответа сервера.

Для администратора

  • Флаг записи — MUTATIONS_ENABLED; право — «Справочники и шаблоны карточек» (refs) в матрице прав.
  • Справочники расчёта после правки меняют результаты: пересчитайте режим фрагмента.
  • Справочник «Организации» содержит телефоны и адреса организаций, «Техники» — ФИО: учитывайте это при выдаче права.

Для разработчика

  • API (routers/group_setters.py, database/dictionaries.py, список — DICTIONARIES): GET /api/v1/dictionaries (описание, поля, ссылки, списки значений), GET /api/v1/dictionaries/{key}?q=&fragment_id=&limit=&offset= (до 500), GET /api/v1/dictionaries/{key}/{id} (row, usage), POST /api/v1/dictionaries/{key}, PUT /api/v1/dictionaries/{key}/{id}, DELETE /api/v1/dictionaries/{key}/{id} (тело — fields; ошибки 409 duplicate, in_use). Права — require_permission("refs") и require_mutations_enabled().
  • Веб: components/DictionariesDialog.vue, services/groupSettersService.ts (запросы справочников), utils/groupSetters.ts (dictionaryPayload, apiErrorText).
  • Тесты: API — tests/test_group_setters.py (справочники в том же наборе); e2e — e2e/functions/source-data.spec.ts («Справочники»: добавить, изменить и удалить административный район через окно со сверкой через API).
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо