Справочники
Справочники: удельные расходы, Kv, расчётные температуры, графики ГВС, организации, эксплуатационные и административные районы, бригады, техники.
Возможности
- Девять справочников: «Удельные расходы», «Коэффициенты вариации (Kv)», «Расчётные температуры», «Графики нагрузки ГВС», «Организации», «Эксплуатационные районы», «Административные районы», «Бригады», «Техники (ответственные)».
- Для первых четырёх — выбор «Фрагмент»: эти справочники у каждого фрагмента свои, как в дереве «Неграфические данные» десктопа.
- «Поиск» по таблице, листание по 50 записей и больше; кнопка обновления.
- «Добавить» — карточка новой записи; карандаш «Изменить» — правка; корзина «Удалить» — удаление с подтверждением.
- Над таблицей — где используется справочник; у справочников расчёта — предупреждение «Справочник используется в гидравлическом расчёте — после правки пересчитайте режим.».
- В карточке записи — «Используется: …» со списком таблиц и числом ссылок на эту запись.
Как это работает
Откуда данные. Каждый справочник — таблица базы десктопа: specexpends, varcoefficients, calctemperatures, gvsloadgraphs (по фрагментам, поле fileid), organizations, rayon_ekspluatatsii, administrativnyy_rayon, brigades, responsibles. Поля карточки — все колонки таблицы, кроме служебных; подписи — из описания справочника, у полей-ссылок («Тип организации», «Мастер (техник)» и др.) — список значений.
Ссылки. Внешних ключей в базе десктопа нет, поэтому кто ссылается на справочник, перечислено явно: например, на удельные расходы — реальные и обобщённые потребители, на Kv — ещё и участки (подача и обратка), на организацию — линейные объекты, узлы, паспорта труб, павильоны, камеры и другие, на техника — потребители, нарушения, ремонты, опрессовки, участки МС и РС. По этому списку окно считает ссылки на запись.
Правила записи.
- Значения приводятся к типу колонки; число или дата не того вида — ошибка поля.
- У большинства справочников название (код) должно быть уникальным, у справочников расчёта — в пределах фрагмента: «Запись «…» уже есть».
- Запись, на которую есть ссылки, не удаляется: «Запись используется (N ссылок) — удаление запрещено», ниже — по каким таблицам. Справочник расчёта со ссылками нельзя перенести в другой фрагмент.
- У административных районов ссылки хранят наименование, а не номер: переименование района не обновляет уже записанные адреса.
- Новый техник получает статус 15 — его сразу видит групповой установщик «Установить ФИО техников».
- Каждое добавление, изменение и удаление пишется в
audit_log.
Что нужно для работы
- Пункт в «Инструментах» — право «Справочники и шаблоны карточек». Смотреть записи через API может любой вошедший.
- Добавлять, менять, удалять — то же право на сервере и включённая запись (
MUTATIONS_ENABLED=true). Кнопки «Добавить», «Удалить» и «Сохранить» окно включает по праву «Журналы: ремонты, ПТС, акты, ТУ, привязки» — у пользователя должны быть оба права.
Шаги
Откройте «Инструменты» и наберите в поиске «Справочники» — пункт выделен рамкой.

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

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

Примеры
Копия Алматы: сколько записей. Удельные расходы — 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; ошибки 409duplicate,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).
