12.10.2026 Технический разбор RU

Открытый диплом: от ведомости до бланка — выпуск, документы, печать и учёт бланков

За неделю прототип «Открытого диплома» прошёл весь путь выпуска: сопоставление ведомости группы с учебным планом, картотека и регистрационные номера, правки поверх файлов, печать диплома и приложения по шаблонам типографии и учёт бланков строгой отчётности с книгой регистрации. Как это устроено и как сверено с документами, которые напечатал КиберДиплом.

Никита Конкин

Проект Репозиторий
Языковые версии: RU EN

В прошлом разборе учебный план стал самостоятельной сущностью с редакциями, и следующим этапом был назван выпуск. За неделю, со 2 по 6 октября, прототип прошёл весь путь: от файлов группы — ведомости и сведений о студентах — до напечатанного бланка и записи в книге регистрации. Каждый шаг описан отдельной записью решения, ADR с 0009 по 0013, а тестов стало 259 вместо 128.

Все скриншоты ниже сделаны на вымышленной группе из тестовых данных проекта.

Выпуск: сопоставление вместо эвристики

Выпуск начинается с двух файлов группы — ведомости из «Деканата» и сведений о студентах. Форма обучения и год набора читаются из шапки ведомости: год набора — это учебный год первой сессии минус номер курса без единицы. По ним выбирается редакция учебного плана.

Дальше ведомость сопоставляется с планом в промежуточной зоне. Студенты сопоставляются по «Фамилии И. О.», предметы — по цепочке правил: связь, запомненная для этой программы, затем то же печатное имя, затем единственное подходящее вхождение, затем предложение, которое нужно подтвердить, и наконец выбор оператора. Кандидатов отсеивают зачётные единицы, посчитанные из часов, и наличие курсовой. При сравнении имён учтены привычки «Деканата»: приписка «(Элективные дисциплины …)» у выбранного электива, практика в виде «Вид. Тип» вместо «Вид (тип)», двойные пробелы, знаки препинания и буква «ё». Пока хоть одна строка открыта, ничего не подтверждается.

Страница «Выпуск ДЕМО-42: сопоставление»: выбранная редакция учебного плана, таблица студентов со статусами и таблица предметов ведомости с элементами плана, одна строка выделена как «нет в плане, выберите»
Сопоставление: студент, которого нет в сведениях, студент, которого нет в ведомости, и предмет, которого нет в плане, — оператор выбирает сам. Остальное сопоставлено автоматически.

Ведомость часто приходит раньше, чем выставлены все оценки, и группу загружают ещё раз. Поэтому выбор оператора о студенте привязан к ФИО, а не к номеру строки, и переходит в следующую загрузку той же группы. Повторная загрузка той же группы проходит без единого вопроса к оператору.

На реальных файлах (сверка шла локально, данные никуда не передавались) заочная группа 2026 года сопоставилась полностью автоматически: 14 студентов из 14 и 56 предметов из 56. Три группы 2025 года — тоже: 58, 47 и 26 предметов без единого ручного выбора.

После подтверждения выпускники и их результаты попадают в картотеку. Проверка идёт на трёх уровнях — ошибка, «не завершено» и предупреждение, — а XML для КиберДиплома теперь собирается из картотеки, с полями программы из плана.

Документ выпускника

У диплома и приложения один регистрационный номер и одна дата выдачи — так требует приказ № 670, — и номер уникален во всей картотеке. Номера задаются списком, подряд или с пропусками, например «10001–10007, 10010», и раздаются по порядку тем, у кого номера ещё нет. Лишние и недостающие номера показываются, а уже занятый номер отклоняет весь список. У дубликата свой номер.

«С отличием» считается по пункту 27 приказа по всем оценкам, включая факультативы, — так решил владелец процесса. Программа показывает число «отлично», процент и средний балл, а решает оператор. На 31 напечатанном приложении 2023 и 2026 годов расчёт совпал с отметкой «с отличием» у 30. Единственное расхождение — ровно 75 % «отлично», напечатано без отличия: именно такой пограничный случай и оставлен оператору.

Таблица «Выпускники: 4» с номерами 10001–10004, колонками «С отличием», «К печати» и «Бланки», блоки «Документы» и «Бланки и выдача»
Страница выпуска: выпускники с регистрационными номерами, отметкой «с отличием» и готовностью к печати; ниже — печать всего выпуска и запись бланков.

Правки поверх файлов

Не всё, что нужно для документа, есть в файлах группы: в сведениях может не быть оценки за госэкзамен, в ведомости — оценки за преддипломную практику. Раньше такие вещи оператор вписывал в КиберДиплом после выгрузки XML. Теперь карточка выпускника — это форма правки: ФИО, дата рождения, предыдущее образование, дата и протокол ГЭК, госэкзамен, тема и оценка выпускной работы, а у каждого результата — оценка, зачётные единицы и вид. Оценка для элемента плана, которого нет в ведомости, добавляет результат с названием, видом и единицами из плана.

Правка хранится отдельно от того, что дали файлы, и накладывается при чтении выпуска, поэтому её видят проверка, XML, расчёт отличия и печать. Повторная загрузка правку не теряет: выпускник находится по имени, в том числе исправленному. Если файл с тех пор изменился, правка остаётся, а в проверке появляется предупреждение. Значение, возвращённое к файлам, снимает правку, и каждая правка пишется в журнал выпуска.

Карточка «Андреев Андрей Андреевич»: «Проверка для XML — замечаний нет», регистрационный номер 10001, дата выдачи, расчёт по п. 27 приказа № 670, блоки «Дубликаты» и «Бланки и выдача»
Карточка выпускника: проверки для XML и для печати, документ с расчётом «с отличием», дубликаты и бланки документа.

Печать по шаблонам типографии

Бланки дипломов приходят из типографии вместе с шаблонами FastReport в формате .fr3, по которым их печатает КиберДиплом. «Открытый диплом» не рисует свою раскладку, а печатает по тем же шаблонам. Оператор загружает шаблон каждого документа и уровня образования, и шаблон хранится в базе как есть, а не в репозитории.

Шаблон читается в миллиметры и раскладывается так, как его раскладывает FastReport: высота строк — в целых пикселях, перенос — по ширине поля в целых пикселях, зачётные единицы и оценка — на последней строке названия, как это делает скрипт шаблона КиберДиплома, колонки — там, где их задаёт страница. Наборы данных КиберДиплома заполняются из картотеки в порядке приложений 2026 года. Документ печатается, только если его проверка для печати чиста. Образец с отметкой «ОБРАЗЕЦ» печатается всегда и заканчивается страницей замечаний.

Оборот приложения к диплому: таблица дисциплин, практик, ГИА и факультативов с зачётными единицами и оценками, поперёк листа — светлая надпись «ОБРАЗЕЦ»
Образец оборота приложения по шаблону из тестов: координаты в нём круглые, а не типографские, поэтому таблица стоит не на месте реального бланка.

Главная проверка раскладки — сверка с тем, что уже напечатано. Приложения, которые КиберДиплом напечатал в 2026 году по шаблону 2025 года, — 83 выпускника семи групп, очная и заочная формы, бакалавриат и магистратура, — разложены заново. 76 совпали полностью: каждая строка переносится там же, базовая линия отклоняется не больше чем на 0,16 мм, а вся страница сдвинута по горизонтали на 0,15 мм. В остальных семи тема выпускной работы содержит перевод строки внутри данных, и КиберДиплом рвёт строку посреди текста. Инструмент сверки печатает только числа: напечатанные приложения содержат персональные данные.

Тесты печати снова проверили поломками. Из четырнадцати внесённых ошибок тесты сразу поймали тринадцать. Четырнадцатую — курсовые пропадают из таблицы, если у шаблона нет для них своей полосы, — не заметили, и тест через HTTP дополнен так, чтобы ловил и её.

Бланки строгой отчётности

Бланк диплома — документ строгой отчётности, и его путь нужно учитывать. Бланки приходят партиями: форма, серия из шести цифр, номера из семи цифр, подряд или с пропусками, дата и накладная. Уже учтённый бланк второй раз не принимается.

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

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

Страница «Бланки строгой отчётности»: таблица форм со свободными, использованными и испорченными бланками, формы прихода и списания и таблица партий
Учёт бланков: остатки по формам, приход, испорченные бланки и партии.
Страница «Книга регистрации» за 2026 год: таблица из четырёх документов с регистрационными номерами, ФИО, сериями и номерами бланков и датами выдачи
Книга регистрации: колонки пункта 49 приказа, страницей и в XLSX для печати.

Книга регистрации выводит колонки пункта 49 приказа за период — страницей и файлом XLSX для печати на A4 альбомной ориентации, с шапкой на каждом листе и нумерацией. Реестр бланков выгружается так же.

Попутно поставка стала легче: из программы убраны нативные библиотеки SQLite для FreeBSD, musl и экзотических архитектур, остались Windows и Linux на x86, x86-64 и aarch64. Файл программы уменьшился с 39,6 до 31,4 МБ.

Дальше

Прототип уже проходит весь путь, но на бумаге раскладка ещё не проверена: нужно напечатать тестовый лист и образец приложения на том принтере, где печатаются бланки, и измерить отклонение. Затем — пробный выпуск параллельно с КиберДипломом. Часть решений по учёту бланков — формы приложений, порядок порчи и уничтожения, вид книги регистрации — записана как предположения и ждёт подтверждения владельца процесса. А серия и номер бланка в картотеке открывают дорогу к выгрузке в ФИС ФРДО.

Выводы

  1. Сопоставление с подтверждением оператора и запоминанием решений заменяет эвристику: группа, загруженная повторно, не задаёт ни одного вопроса.
  2. Правки стоит хранить поверх исходных данных, а не вместо них: тогда видно, что пришло из файлов, а что исправлено, и изменившийся файл не затирает исправление молча.
  3. Чужой формат шаблона лучше прочитать, чем заменить своим: печать по шаблонам типографии сверяется с уже напечатанными документами до сотых долей миллиметра.
  4. Сверку с реальными документами можно сделать, не раскрывая их: инструмент выводит только числа.
  5. Учёт бланков — это прежде всего запреты: напечатанное не меняется молча, выданное не меняется вовсе.

Доступность

Проект открыт под лицензией Apache 2.0. Решения — docs/architecture/adr/0009–0013, результаты проверок — docs/prototype.md.

Теги

программирование java архитектура печать pdf

Другие обновления по проекту

01.10.2026 Технический разбор Открытый диплом — открытая замена «КиберДиплома»

Открытый диплом: учебные планы по годам набора и редакциям

Учебный план стал в «Открытом дипломе» самостоятельной сущностью: планы хранятся по программе, форме обучения и году набора, каждая правка сохраняется новой редакцией, контрольн...

29.09.2026 Технический разбор Открытый диплом — открытая замена «КиберДиплома»

Открытый диплом: прототип на Java 11 и сверка, в которой XML совпали побайтно

Черновик архитектуры открытой замены «КиберДиплома» получил прототип и собственный репозиторий. Что прототип умеет, какие критерии выбора стека уже измерены, а какие нет, как пе...