Удаление узла и участка

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

Где найти
редактор сети: кнопка «Редактировать топологию сети» (значок ломаной с карандашом) в строке режимов над картой: выделите объект в режиме «Выбор» и нажмите Del или кнопку «Удалить выделенное» на панели; то же — «Удалить…» в меню правого щелчка.
Права
право удалять объекты этого вида; у ролей «Оператор сети» и «Редактор» — только свои объекты.
Читаю как

Возможности

  • Удаление выделенного узла или участка клавишей Del, кнопкой «Удалить выделенное» на панели редактора или пунктом «Удалить…» меню правого щелчка.
  • Для узла — два пути: «Убрать узел, соединив трубы» (две трубы или две пары подача/обратка становятся одной, длина видна заранее) или «Удалить узел» вместе с примыкающими участками.
  • Для участка — вместе с парной трубой (подача и обратка на одной трассе) одной операцией.
  • Предпросмотр: признак, концы, длина и диаметр участка; записи и оборудование, которые ссылаются на объект.

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

Предпросмотр. Окно запрашивает у сервера, что затронет удаление: для узла — примыкающие участки, ссылки из других таблиц (карточки, заданный напор, подпитка и т. п.) и можно ли соединить трубы; для участка — парную трубу и оборудование.

Удаление мягкое. Узел и участок не стираются: у строки nodes или linesobj ставится removed = 1 и обновляется дата изменения, паспорт трубы в heatpipesections тоже помечается снятым. Записи, которые ссылались на узел, сохраняются, но указывают на удалённый узел; оборудование остаётся на снятом участке. Карта и расчёт снятых объектов не видят.

Соединение труб. Остаётся один участок (тот, номер которого показан первым): его геометрия продлевается через точку узла, длина пересчитывается по местной системе координат, второй участок и узел снимаются. Соединить нельзя, если к узлу подходит не две трубы (или не две пары П/О), с разных сторон разное число труб, у узла есть карточка (потребитель, источник…), заданный напор или подпитка, внутренняя схема, участок-петля или на узел ссылаются другие записи — причины написаны в окне.

Всё — одной операцией журнала отмены: Ctrl+Z или кнопка в уведомлении возвращает объекты вместе с паспортами.

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

  • Удаление узла — право удалять узлы его вида; с участками — ещё и право удалять участки.
  • Соединение труб — право удалять узлы и перемещать и удалять участки.
  • Удаление участка — право удалять участки.
  • У ролей «Оператор сети» и «Редактор» охват удаления «только свои»: объекты, созданные этим пользователем. Чужие удаляет «Администратор».
  • Флаги API MUTATIONS_ENABLED и TOPOLOGY_MUTATIONS_ENABLED; предпросмотр работает и без них.

Шаги

  1. В режиме «Выбор» (V) щёлкните узел. Строка состояния показывает его номер, на панели доступна кнопка «Удалить выделенное».

    Удаление узла и участка: шаг 1

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

    Удаление узла и участка: шаг 2

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

    Удаление узла и участка: шаг 3

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

    Удаление узла и участка: шаг 4

Примеры

На копии базы Алматы, фрагмент 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.
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо