Реаниматор решает две задачи:
1. Исправление — найти такие варианты и пересохранить настройки без битых ссылок.
2. Перенос — выгрузить все варианты в JSON и загрузить в другую информационную базу той же линейки.
Обработка не меняет метаданные конфигурации — только элементы справочника `ВариантыОтчетов`.
---
Какая ошибка возникает и когда
1. Основная (пользовательская)
Типичный сценарий:
1. В старой версии конфигурации пользователь сохранил вариант отчёта с отбором по регистру, справочнику или перечислению.
2. При обновлении объект метаданных удалили или переименовали.
3. При открытии отчёта или выборе варианта платформа вызывает `Настройки.Получить()` из `ХранилищеЗначения` и падает.
Симптомы:
- отчёт не открывается с пользовательским вариантом, с «Основным» иногда работает;
- в журнале регистрации — ошибки десериализации настроек СКД;
- в списке вариантов отчёта элемент есть, но применить его нельзя.
Механизм: в XML настроек компоновки остаются строки вида `CatalogRef.УдалённыйСправочник`, `DocumentRef.…`, `EnumRef.…`. При `Получить()` сериализатор XDTO не находит тип — исключение.
Именно это обрабатывает функция `ПолучитьБитыеВариантыОтчетов`: для каждого элемента `Справочник.ВариантыОтчетов` вызывается `Настройки.Получить()` в блоке `Попытка/Исключение`. Если чтение не удалось — вариант попадает в список проблемных.
2. Вторичная (при разборе хранилища)
У части «битых» вариантов настройки лежат в сжатом бинарном представлении `ХранилищеЗначения`, а не в явном XML. Обработка распаковывает тело (заголовок `0x02 0x01`, Deflate, обёртка ZIP) и читает текст через `ЧтениеДанных`.
Если двоичные данные повреждены или имеют неожиданный формат, возможна ошибка:
```
Несоответствие типов (параметр номер '1')
ЧтениеДанных = Новый ЧтениеДанных(ДвоичныеДанные, Кодировка);
```
Такая ошибка не роняет поиск: в `ПолучитьТекстИзДвоичныхДанных` она перехватывается, вариант всё равно считается проблемным. При исправлении XML извлекается альтернативными путями (`XMLСтрока` хранилища, Base64, распаковка).
---
Как обработка исправляет проблему
Алгоритм (вкладка Исправление):
1. Поиск | Обход всех вариантов, отбор тех, у кого `Настройки.Получить()` завершился ошибкой.
2. Извлечение XML | Разбор `ХранилищеЗначения`: явный XML, Base64 или сжатый бинарный поток.
3. Очистка | Построчное удаление фрагментов с `CatalogRef.`, `DocumentRef.`, `EnumRef.` и др., если `Метаданные.НайтиПоПолномуИмени()` возвращает `Неопределено`.
4. Доп. свойства | Удаление блока `<additionalProperties>…</additionalProperties>`, если мешает десериализации.
5. Запись | `СериализаторXDTO.ПрочитатьXML` → `НастройкиКомпоновкиДанных` → новое `ХранилищеЗначения` со сжатием → `Записать()`.
Важно: исправление намеренно удаляет отборы и поля, ссылающиеся на несуществующие объекты. Отчёт снова открывается, но часть пользовательских настроек может быть утеряна — это ожидаемая плата за работоспособность.
После поиска в таблице отображаются колонки «Вариант отчёта» и «Результат исправления» (`Требует исправления` / `Исправлено` / `Не удалось исправить`).


---
Перенос между информационными базами
Вкладка Перенос:
1. Выгрузить | Все варианты → JSON-файл (`variants_report_settings.json` по умолчанию).
2. Загрузить | JSON → поиск варианта по паре **ключ + отчёт** → перезапись `Настройки`.
Формат файла:
```json
{
"variants": [
{
"key": "Основной",
"reportFullName": "Отчет.ОборотноСальдоваяВедомость",
"settingsXml": "<v8:ValueStorage …>"
}
]
}

```
Варианты, не найденные в целевой ИБ, пропускаются (счётчик в сообщении «Не найдено в ИБ»).
Типовой сценарий: резервная выгрузка перед обновлением → исправление на копии → выгрузка «чистых» настроек → загрузка на рабочую базу после обновления.
---
Инструкция по применению
Подключение
1. Файл → Открыть → `РеаниматорВариантовОтчетов.epf`,
или добавить в «Дополнительные отчёты и обработки» (БСП).
2. Нужны права на изменение `Справочник.ВариантыОтчетов`.
Исправление
1. Вкладка Исправление → Показать проблемные.
2. Просмотреть список.
3. Исправить (все строки таблицы).
4. Повторить Показать проблемные — список должен быть пуст.
Перенос
1. Вкладка Перенос → указать путь к JSON.
2. Выгрузить / Загрузить.
Также есть справка в самой обработке (F1).
Ограничения и риски
- Удалённые отборы/поля не восстанавливаются — только работоспособность отчёта.
- Загрузка перезаписывает `Настройки` найденных вариантов.
- Перенос между разными конфигурациями (УТ → ERP) даст частичное совпадение по ключам.
- На больших базах полное сканирование/выгрузка может занять несколько минут.
- Перед массовым исправлением — резервная копия ИБ или выгрузка JSON.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.27.52, 2.5.22.186
Вступайте в нашу телеграмм-группу Инфостарт