Перейти к содержимому

Реестр РД через Excel

Зачем это нужно

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

Где находится

В модуле «Рабочая документация» откройте раздел Структура документации. В шапке экрана — две кнопки:

  • «Скачать Excel реестра» — выгрузить файл с текущей структурой.
  • «Импорт из Excel» — загрузить заполненный файл обратно.

Как обычно работают

  1. Нажмите «Скачать Excel реестра» — скачается файл со структурой проекта.
  2. Откройте файл в Excel.
  3. Сохраните копию на всякий случай — если что-то пойдёт не так, всегда можно вернуться к исходнику.
  4. Заполните новые строки или поправьте существующие. Служебные колонки (с замочком 🔒) оставляйте как есть — они только для системы.
  5. Сохраните файл.
  6. Нажмите «Импорт из Excel» и выберите сохранённый файл. Откроется предпросмотр: что изменится, какие будут созданы и обновлены сущности, есть ли ошибки. После проверки нажмите «Применить импорт».

Что внутри Excel-файла

В файле два листа:

  • «Реестр РД» — основные данные (используется и для редактирования, и для импорта).
  • «Инструкция» — подробное руководство по заполнению с цветовой расшифровкой и сценариями.

Структура листа «Реестр РД»

Сверху — четыре строки шапки:

  • Строка 1 — заголовок: «Реестр рабочей документации — название проекта».
  • Строка 2 — служебная информация: дата формирования, подсказка следующего свободного шифра комплекта (если её удалось вычислить — см. ниже), напоминание про колонки с ID.
  • Строка 3 — групповые цветные заголовки: синий — Комплект, зелёный — Документ, оранжевый — Лист.
  • Строка 4 — названия колонок. Замочек 🔒 на колонке означает «не редактировать».

С пятой строки идут данные. Образцовой строки в шаблоне больше нет — в первой версии она путала пользователей (выглядела как реальный комплект «Конструкции железобетонные», а не как пример). Теперь нужно просто заполнять с пустого места.

Колонки шаблона

Всего 11 колонок. Колонки с замочком — служебные, их заполняет и проверяет система.

ГруппаКолонкаТипЧто вводить
Комплект (синий)🔒 ID комплектаслужебнаяНе редактировать
КомплектШифр комплектаредактируемаяКороткий код, например КР, АР, ОВ-1
КомплектНаименование комплектаредактируемаяПолное название, например «Конструктивные решения»
Документ (зелёный)🔒 ID документаслужебнаяНе редактировать
ДокументШифр документаредактируемаяШифр документа внутри комплекта, например КР-1, АР-1.1
ДокументНаименование документаредактируемаяПолное название
ДокументЛистовредактируемаяОжидаемое количество листов (целое число ≥ 0, можно пусто)
Лист (оранжевый)🔒 ID листаслужебнаяНе редактировать
Лист🔒 Stable Page IDслужебнаяНе редактировать — к этому UUID привязана история ревизий и замечаний
ЛистНаименование листаредактируемаяНазвание листа (как в штампе чертежа)
ЛистПорядокредактируемаяПорядковый номер листа в документе (целое число ≥ 0, можно пусто)

Шифр и наименование — это разные роли

В шаблоне намеренно разделены две колонки на каждой сущности:

  • Шифр — короткий код, по которому сущность опознаётся. Уникален в области родителя: шифр комплекта — в пределах проекта, шифр документа — в пределах комплекта. Шифр стабильный, его редко меняют. Именно по шифру сервер ищет существующие комплекты/документы при импорте новых записей в них.
  • Наименование — длинное название, читабельное человеком. Может меняться (уточнили формулировку — поменяли), уникальности от него не требуется.

Грубо: шифр — это «ключ», наименование — это «подпись». Поэтому при заведении новых записей нужны оба значения, а при поиске родителя сервер опирается на шифр.

Подсказка «следующий свободный шифр комплекта»

В строке 2 шапки сервер может подсказать, какой шифр взять для нового комплекта. Логика простая:

  • Сервер смотрит на уже существующие шифры комплектов в проекте.
  • Если среди них есть числовые хвосты (например, КР-01, КР-02, КР-03) — он предложит следующий по порядку: КР-04. Подсказка ляжет в строку 2 шапки текстом «следующий свободный шифр комплекта в проекте: «КР-04» (можно использовать или придумать свой)».
  • Если в проекте все шифры текстовые без числового хвоста (например, «Генеральный план, благоустройство», «Основное здание») — подсказки не будет. Подсовывать «КОМ-N» в этой ситуации бессмысленно: получается визуально нелогично — у других комплектов длинные имена, а у нового какой-то «КОМ-6». В этом случае придумайте шифр самостоятельно.
  • Если в проекте вообще нет комплектов — подсказка тоже будет: «КОМ-1». Это нейтральный fallback.

Подсказка справочная: можно использовать её, а можно ввести свой шифр.

Служебные поля (🔒) — общее правило

Колонки ID комплекта, ID документа, ID листа и Stable Page ID помечены замочком 🔒 и имеют серый фон. Это технические идентификаторы, которые система присваивает сама.

  • В строках, которые уже были в файле (выгружены) — не трогайте эти поля. Не очищайте и не меняйте.
  • В строках, которые добавляете заново — оставьте эти поля пустыми, система сама их заполнит при импорте.

Если случайно очистить ID-поле у существующей строки — система примет её за новую и заведёт дубль. Если изменить Stable Page ID — потеряется история ревизий и замечаний листа, импорт завершится ошибкой.

Подсказки прямо в шапке

При наведении на любую колонку в строке 4 появляется подсказка с подробной инструкцией — что это за поле, какие правила, примеры, когда заполнять, а когда оставить пустым. Используйте при заполнении, не нужно держать в голове.

Работа с ID — четыре сценария

ID — это технический «вечный номер» записи в системе. Главный принцип: ID не обязателен для новых записей — сервер присвоит его сам при создании. ID нужен только в двух случаях: когда вы редактируете существующую запись (чтобы сервер понял, какую именно), и когда переименовываете её шифр (чтобы сервер не принял переименование за создание новой).

Для добавления подсущностей (документов в комплект, листов в документ) достаточно шифра родителя — ID копировать не нужно. Это сильно упрощает заполнение шаблона.

Ниже — четыре типичных сценария.

Сценарий 1 — Новый комплект (с документами и листами)

ID везде оставляем пустыми. Сервер сам присвоит и ID комплекта, и ID документов, и ID листов, и сгенерирует Stable Page ID для каждого листа.

ID комплектаШифр комплектаНаим. комплектаID док.Шифр док.Наим. док.ЛистовID листаStable Page IDНаим. листаПорядок
(пусто)КРКонструктивные решения(пусто)КР-1Фундаменты3(пусто)(пусто)Свайное поле1
(пусто)КРКонструктивные решения(пусто)КР-1Фундаменты3(пусто)(пусто)Ростверк2
(пусто)КРКонструктивные решения(пусто)КР-1Фундаменты3(пусто)(пусто)Узлы3

Шифр и наименование комплекта/документа повторяются в каждой строке листа — это нормально, сервер видит их как один комплект и один документ.

Сценарий 2 — Новый документ в существующем комплекте

Скачали шаблон, в нём уже есть комплект КР. Хотим добавить в него новый документ КР-3 «Колонны» с двумя листами.

Достаточно скопировать только шифр комплекта в новые строки — сервер найдёт комплект по шифру и привяжет документ к нему. ID комплекта тоже можно скопировать (надёжнее), но не обязательно.

ID комплектаШифр комплектаНаим. комплектаID док.Шифр док.Наим. док.ЛистовID листаStable Page IDНаим. листаПорядок
17КРКонструктивные решения42КР-1Фундаменты31087f3c…2aСвайное поле1
…существующие строки документа КР-1…
(пусто)КР(пусто)(пусто)КР-3Колонны2(пусто)(пусто)Колонна К-11
(пусто)КР(пусто)(пусто)КР-3Колонны2(пусто)(пусто)Колонна К-22

Наименование комплекта в новой строке можно тоже оставить пустым — сервер возьмёт его из существующей записи. Главное, чтобы шифр совпадал.

Сценарий 3 — Новый лист в существующем документе

В документе КР-1 «Фундаменты» было 5 листов, нужно добавить 6-й — «План армирования».

Достаточно скопировать пару «Шифр комплекта + Шифр документа» — сервер найдёт документ по этой паре и привяжет лист к нему.

ID комплектаШифр комплектаНаим. комплектаID док.Шифр док.Наим. док.ЛистовID листаStable Page IDНаим. листаПорядок
…строки 1–5 листов документа КР-1…
(пусто)КР(пусто)(пусто)КР-1(пусто)(пусто)(пусто)(пусто)План армирования6

Если порядок не указывать — сервер поставит следующий после максимального (в данном случае 6).

Сценарий 4 — Переименование Шифра существующей сущности

Хотим переименовать комплект КР в КЖ (поменялся шифр, наименование тоже уточнили). Стандартное добавление новой строки тут не подойдёт — сервер увидит «новый» шифр КЖ и заведёт дубль, а старый комплект КР останется висеть.

Правило: в строке, где меняете шифр, обязательно сохраните ID старой записи. Тогда сервер поймёт «это та же запись, у которой поменялся шифр» и обновит её, а не заведёт новую.

ID комплектаШифр комплектаНаим. комплекта
17КЖКонструкции железобетонные

При импорте увидите в предпросмотре строку вида:

Комплект «КР» · обновить · шифр: «КР» → «КЖ» · наименование изменено

Аналогично работает с шифром документа: оставляете в строке ID документа от старой записи, меняете шифр — обновляется существующая запись. Stable Page ID листа менять нельзя в принципе — это нарушит привязку ревизий и замечаний, импорт завершится ошибкой.

Короткая шпаргалка

  • Новые записи — все ID пустые.
  • Добавляю подсущность в существующее — копирую только шифры родителей.
  • Меняю шифр существующей записи — обязательно сохраняю её ID.
  • Меняю только наименование — можно работать как с обычной строкой (по шифру), ID копировать не нужно.

Предпросмотр импорта

После выбора файла откроется окно «Предварительный просмотр импорта».

Сводка вверху

Три карточки — Комплекты, Документы, Листы — у каждой три счётчика:

  • +N (зелёным) — будет создано;
  • ~M (жёлтым) — будет обновлено;
  • =K (серым) — без изменений.

Справа отдельно — общее число строк в файле.

Вкладка «Изменения»

Таблица всех изменений: номер строки в Excel, тип сущности (Комплект/Документ/Лист), действие (создать/обновить), название объекта, и подробный список изменений — что именно меняется. Примеры:

  • Комплект «КР» · создать · новый: «КР» — «Конструктивные решения»
  • Документ «КР-1» · обновить · наименование: «Сваи» → «Сваи. План расположения»
  • Лист «Лист 1» · обновить · порядок: 1 → 2

Вкладка «Ошибки»

Если есть ошибки валидации — отдельная таблица: строка в Excel, колонка, текст ошибки. Все ошибки показываются сразу, не по одной. Пока есть ошибки, кнопка «Применить импорт» заблокирована — нужно поправить файл в Excel и загрузить снова.

Подтверждение

Когда ошибок нет — нажмите «Применить импорт». Изменения применяются одной транзакцией: либо всё, либо ничего. Если на этапе записи возникнет ошибка (например, кто-то параллельно создал такой же комплект), всё откатится — реестр останется в том же состоянии, что и до нажатия.

После успешного применения появится сообщение со сводкой:

комплекты: создано 3, обновлено 1 · документы: создано 12, обновлено 4 · листы: создано 120, обновлено 0

Чего нельзя делать

  • Переименовывать вкладку «Реестр РД» в Excel. Вкладка должна называться ровно «Реестр РД» — иначе импорт сообщит «В файле нет листа «Реестр РД»».
  • Разъединять ячейки шапки или вставлять строки внутрь заголовков.
  • Использовать один и тот же шифр документа для разных документов в одном комплекте — это уникальный ключ.
  • Переносить документ в другой комплект через смену значения в строке. Сервер запретит и отдаст ошибку «Перенос документа между комплектами через импорт не поддерживается». Перенос делается только в интерфейсе.
  • Менять Stable Page ID существующего листа. Это идентификатор, к которому привязаны ревизии и замечания.
  • Удалять строки, чтобы убрать запись из реестра. Импорт никогда не удаляет данные — пустые строки просто игнорируются. Чтобы убрать запись, нажмите соответствующую кнопку удаления в интерфейсе реестра.

Типовые ошибки

Тексты ошибок ниже — это то, что покажет вкладка «Ошибки» в предпросмотре.

Текст ошибкиЧто проверить
«Не удалось открыть файл: …»Файл повреждён или сохранён не в формате .xlsx. Пересохраните из Excel заново.
«В файле нет листа «Реестр РД».»Лист переименован. Должен быть ровно «Реестр РД».
«Для строки с ID комплекта обязательно указать шифр.»В строке стоит ID комплекта, но колонка Шифр комплекта пуста.
«Для нового комплекта обязательно указать наименование.»Ввели только шифр комплекта без наименования.
«Для нового документа обязательно указать наименование.»Ввели только шифр документа без наименования.
«Наименование листа обязательно» / «Для нового листа обязательно указать наименование.»У листа в строке пусто наименование.
«В строке указан документ без комплекта»Заполнен документ, но в этой же строке не заполнен шифр (или ID) комплекта.
«В строке указан лист без документа»Заполнен лист, но в этой же строке не заполнен шифр (или ID) документа.
«Комплект с ID N не найден в этом проекте»В колонке ID комплекта стоит число, которого нет в текущем проекте. Возможно, файл от другого проекта или ID был случайно изменён.
«Документ с ID N не найден»Аналогично, ID документа не существует в системе.
«Лист с ID N не найден»Аналогично, ID листа не существует.
«Перенос документа между комплектами через импорт не поддерживается»В строке указан существующий ID документа, но шифр комплекта — другого комплекта. Сервер не делает перенос — отредактируйте документ в интерфейсе.
«Stable Page ID нельзя менять — потеряется история ревизий»Кто-то отредактировал колонку Stable Page ID у существующей строки. Скачайте файл заново и перенесите свои правки в свежую копию.
«Для нового листа Stable Page ID должен быть пустым»В новой строке листа стоит заполненный Stable Page ID. Уберите значение — сервер сам его сгенерирует.
«Не число: …» (на колонках «Листов» / «Порядок»)В колонке должно быть целое число ≥ 0 или пусто.

Под капотом

Шаблон собирает сервер на стороне rd-api (модуль registry_excel.py, библиотека openpyxl). Это позволяет применять стили, комментарии-подсказки, валидацию данных и защиту листа — то, что невозможно сохранить в браузерных Excel-библиотеках open-source редакции.

Импорт проходит в два шага:

  1. Предпросмотр — сервер парсит файл, сравнивает с текущим реестром, возвращает diff и список всех ошибок валидации.
  2. Применение — сервер ещё раз парсит ровно тот же файл и в одной транзакции применяет изменения.

Это даёт атомарность (всё или ничего), видимость (видно, что произойдёт, до применения) и прозрачность (все ошибки сразу, а не одна за раз).

Связанные страницы