**Пятизначные коды исправил. По ERR найдена причина: текущий обработчик переносит только три поля формы.**
[Скачать патч для 0.15.11](sandbox:/workspace/scratch/41220c1092db/deliverables/mts_0_15_11_code5_patch.zip)
Остановите демон, замените **`mts_daemon_forms.py`** из архива и запустите снова. SQL для этого патча менять не нужно.
Правила обработки номера:
| Ввод | Результат |
| ---------------------------------- | ----------------------------------------------- |
| `81503` | `081503` |
| `№ 81503` или `_81503` | `081503` |
| `081503` | Без изменения |
| `70313360` | Без изменения |
| Другая длина | Ноль не добавляется; действует прежняя проверка |
| `30.09.26`, `81.503`, `81текст503` | Пропускается |
Изменение касается **только формы исправления сертификата**. Коды участников ERR не дополняются. Проверены 13 сценариев разбора.
**Почему после ERR отсутствуют данные**
В версии 0.15.11 есть три последовательных ограничения:
1. `mts_daemon_forms.py` формирует `fields` только из `manFIO`, `nmOrg`, `listenerClassRoom`.
2. `make_intent()` подготавливает для передачи только эти поля.
3. `WR_mtsPublishMail_v13` при обработке `fallback_certificate` обновляет только ФИО, организацию, класс/группу и служебные поля.
Поэтому количество слушателей, формат участия, адресные данные, вид организации, оценки и другие ответы **этим путём не переносятся**, даже если они были заполнены в форме. Если отсутствует одно из трёх уже поддерживаемых полей, нужно отдельно проверить название вопроса и выбранный ответ.
Исправлять нужно всю цепочку: **сопоставление вопросов → передача полей → запись SQL**. При этом форма исправления сертификата должна по-прежнему менять только разрешённые поля; расширение относится к ERR.
**Менять `ERR FIN` на `PRC` для восстановления данных не нужно**
Это не обеспечит повторный импорт: демон сначала проверяет `requestKey` в журнале и пропускает уже обработанные заявки со статусом `QUEUED` или `SENT`. SQL также защищает их от повторного применения.
Правильный способ — **восстановить недостающие поля отдельной операцией без повторной отправки сертификата**, сохранив журнал и статус завершённой обработки. Повторная выдача нужна только если изменились данные самого сертификата.
Чтобы подготовить точное исправление ERR, пришлите **один `kodReport` с недостающими полями и исходную выгрузку соответствующего прохождения формы**. Дополнительно выполните:
```sql
USE myNewVasya;
DECLARE @kodReport int = 71600000; -- заменить
SELECT *
FROM dbo.sb_reports
WHERE kod = @kodReport;
SELECT
kod, requestKey, kind, state,
createdAt, appliedAt, sentAt, sendKod, payload
FROM dbo.mts_daemon_mail_v12
WHERE kodReport = @kodReport
ORDER BY createdAt DESC;
SELECT OBJECT_DEFINITION(
OBJECT_ID(N'dbo.WR_mtsPublishMail_v13')
) AS currentProcedure;
```
`payload` покажет, что реально дошло до SQL. **Исходная выгрузка формы тоже необходима:** ответы, отброшенные при формировании `fields`, в этом payload уже отсутствуют. Патч по ссылке исправляет только пятизначные коды; перенос дополнительных полей ERR в него не включён.