Удаление узла и участка
Удаление узла или участка с предпросмотром: что снимется, какие записи и оборудование на них ссылаются. Узел между двумя трубами можно не удалять, а убрать, соединив трубы в одну.
Возможности
- Удаление выделенного узла или участка клавишей Del, кнопкой «Удалить выделенное» на панели редактора или пунктом «Удалить…» меню правого щелчка.
- Для узла — два пути: «Убрать узел, соединив трубы» (две трубы или две пары подача/обратка становятся одной, длина видна заранее) или «Удалить узел» вместе с примыкающими участками.
- Для участка — вместе с парной трубой (подача и обратка на одной трассе) одной операцией.
- Предпросмотр: признак, концы, длина и диаметр участка; записи и оборудование, которые ссылаются на объект.
Как это работает
Предпросмотр. Окно запрашивает у сервера, что затронет удаление: для узла — примыкающие участки, ссылки из других таблиц (карточки, заданный напор, подпитка и т. п.) и можно ли соединить трубы; для участка — парную трубу и оборудование.
Удаление мягкое. Узел и участок не стираются: у строки nodes или linesobj ставится removed = 1 и обновляется дата изменения, паспорт трубы в heatpipesections тоже помечается снятым. Записи, которые ссылались на узел, сохраняются, но указывают на удалённый узел; оборудование остаётся на снятом участке. Карта и расчёт снятых объектов не видят.
Соединение труб. Остаётся один участок (тот, номер которого показан первым): его геометрия продлевается через точку узла, длина пересчитывается по местной системе координат, второй участок и узел снимаются. Соединить нельзя, если к узлу подходит не две трубы (или не две пары П/О), с разных сторон разное число труб, у узла есть карточка (потребитель, источник…), заданный напор или подпитка, внутренняя схема, участок-петля или на узел ссылаются другие записи — причины написаны в окне.
Всё — одной операцией журнала отмены: Ctrl+Z или кнопка в уведомлении возвращает объекты вместе с паспортами.
Что нужно для работы
- Удаление узла — право удалять узлы его вида; с участками — ещё и право удалять участки.
- Соединение труб — право удалять узлы и перемещать и удалять участки.
- Удаление участка — право удалять участки.
- У ролей «Оператор сети» и «Редактор» охват удаления «только свои»: объекты, созданные этим пользователем. Чужие удаляет «Администратор».
- Флаги API
MUTATIONS_ENABLEDиTOPOLOGY_MUTATIONS_ENABLED; предпросмотр работает и без них.
Шаги
В режиме «Выбор» (V) щёлкните узел. Строка состояния показывает его номер, на панели доступна кнопка «Удалить выделенное».

Нажмите Del. Окно удаления узла предлагает два пути: «Убрать узел, соединив трубы» (два участка станут одним, видна его длина) или удалить узел вместе с участками. Ниже — какие записи ссылаются на узел.

Удаление участка: выделите участок и нажмите Del. Окно показывает признак, концы, длину и диаметр, парную трубу (её можно удалить вместе) и оборудование на участке.

«Удалить» снимает участок. Уведомление «Участок … удалён»; удаление отменяется Ctrl+Z или кнопкой в уведомлении.

Примеры
На копии базы Алматы, фрагмент 74:
- Узел, врезанный в участок 244,44 м: окно предложило «участки X + Y → один участок X, 244,44 м (Общий)». После «Соединить трубы» снова один участок той же длины, узел снят.
- Трасса из трёх новых узлов — участки 126,29 и 118,07 м. Окно удаления среднего узла предложило «участки … + … → один участок …, 244,36 м (Общий)» или «Удалить узел и участков: 2». Окно удаления второго участка: «Общий участок … → …, 118,07 м, Ду 1000 мм; паспорт трубы снимается вместе с ним». После «Удалить» — уведомление «Участок … удалён», а проверка правки отметила оставшийся без участков узел («Изолированный узел») и узлы без питания.
Если не получается
- «Удалить: сначала выделите узел или участок» — объект не выделен: инструмент «Выбор» (V), щелчок по объекту.
- «Убрать узел, соединив трубы» недоступно — причина написана в окне: к узлу подходят не две трубы (или не две пары П/О), у узла есть карточка (потребитель, источник…), заданный напор, подпитка или на него ссылаются другие записи.
- Нет права удалять — у ролей «Оператор сети» и «Редактор» удаление только своих объектов (созданных этим пользователем); чужие удаляет «Администратор» или пользователь с правом удалять все объекты этого вида.
- Кнопка «Удалить выделенное» неактивна — ничего не выделено: «Выбор» (V), щелчок по объекту.
- «Можно только со своими объектами, а это не ваши: …» — у вашей роли охват удаления «только свои».
- Удалили не то — Ctrl+Z сразу или «История правок» (H) позже, пока объект никто не изменил.
Для разработчика
GET /api/v1/topology/node/{id}/delete-preview,GET /api/v1/topology/line/{id}/delete-preview— что затронет удаление.POST /api/v1/topology/node/{id}/dissolve {dry_run, expected_version}— соединить трубы (операцияDISSOLVE_NODE).DELETE /api/v1/topology/node/{id}?cascade=true&expected_version=…,DELETE /api/v1/topology/line/{id}?include_pair=true&expected_section_id=….- Сервер:
database/topology_dissolve.py(dissolve_plan,dissolve_node,node_delete_preview,line_delete_preview),database/topology.py(delete_node,delete_line). - Веб:
components/DeletePreviewDialog.vue,deleteSelectionвcomposables/useTopologyEditor.ts. - Тесты: API
tests/test_topology_undo.py; e2e — тест «удаление узла (Del)» вe2e/functions/network-editor.spec.ts.
