Реестр РД через Excel
Зачем это нужно
Excel-шаблон — самый быстрый способ завести структуру реестра рабочей документации для больших проектов, где создавать комплекты, документы и листы по одному вручную долго. Скачали файл, заполнили офлайн, загрузили обратно — посмотрели предпросмотр изменений, подтвердили — и реестр обновился атомарно: либо всё сразу применилось, либо ничего не записалось (если есть ошибки).
Где находится
В модуле «Рабочая документация» откройте раздел Структура документации. В шапке экрана — две кнопки:
- «Скачать Excel реестра» — выгрузить файл с текущей структурой.
- «Импорт из Excel» — загрузить заполненный файл обратно.
Как обычно работают
- Нажмите «Скачать Excel реестра» — скачается файл со структурой проекта.
- Откройте файл в Excel.
- Сохраните копию на всякий случай — если что-то пойдёт не так, всегда можно вернуться к исходнику.
- Заполните новые строки или поправьте существующие. Служебные колонки (с замочком 🔒) оставляйте как есть — они только для системы.
- Сохраните файл.
- Нажмите «Импорт из 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 | Фундаменты | 3 | 108 | 7f3c…2a | Свайное поле | 1 |
| …существующие строки документа КР-1… | ||||||||||
| (пусто) | КР | (пусто) | (пусто) | КР-3 | Колонны | 2 | (пусто) | (пусто) | Колонна К-1 | 1 |
| (пусто) | КР | (пусто) | (пусто) | КР-3 | Колонны | 2 | (пусто) | (пусто) | Колонна К-2 | 2 |
Наименование комплекта в новой строке можно тоже оставить пустым — сервер возьмёт его из существующей записи. Главное, чтобы шифр совпадал.
Сценарий 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 редакции.
Импорт проходит в два шага:
- Предпросмотр — сервер парсит файл, сравнивает с текущим реестром, возвращает diff и список всех ошибок валидации.
- Применение — сервер ещё раз парсит ровно тот же файл и в одной транзакции применяет изменения.
Это даёт атомарность (всё или ничего), видимость (видно, что произойдёт, до применения) и прозрачность (все ошибки сразу, а не одна за раз).
Связанные страницы
- Маршрут загрузки рабочей документации — дорожная карта онбординга
- Реестр рабочей документации — экран структуры в интерфейсе
- Ревизии листа и история загрузок — что происходит с листами после загрузки
- Сравнение ревизий и снимки сравнения
- Сквозная цепочка процесса по РД
- Карточка листа