Загрузка данных


**Пятизначные коды исправил. По 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 в него не включён.