Реальный кейс обхода ошибки «Ошибка формата потока»

 Денис Булыжный.png
Денис Булыжный
Архитектор / Тренер по разработке в 1С компании «Синимекс», стаж работы в ИТ по направлению 1С - более 27 лет
Ошибка "Ошибка формата потока" может возникать в том случае, когда один или несколько файлов внутреннего представления объектов метаданных (хранятся в таблице сonfig СУБД) имеют неправильную структуру (повреждены).                                    

С ошибкой «Ошибка формата потока» как разработчики, так и пользователи 1С встречаются достаточно регулярно.

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

Недавно и я столкнулся с данной ошибкой у нашего заказчика - при попытке обновить конфигурацию 1С:Комплексная автоматизация с релиза 2.5.22.124 на релиз 2.5.22.134, после нажатия на кнопку «Ок» в окне сравнения/объединения конфигураций, возникала ошибка «Ошибка формата потока»:

Обход ошибок 1.png


Анализ полного технологического журнала ситуацию не прояснил:


На сервере:

На клиенте:

Обход ошибок 3.png


Также было выяснено, что подобная ошибка возникает и при выгрузке конфигурации в файлы. Это навело на окончательно решение по данному кейсу.

Следующую последовательность действий по обходу указанной выше ошибки можно рассматривать как достаточно универсальное решение.

1. Находясь в конфигураторе ИБ, в которой возникает ошибка «Ошибка формата потока» производим выгрузку конфигурации в файлы:


Обход ошибок 4.png


Обход ошибок 5.png


2. После возникновения ошибки «Ошибка формата потока», в каталоге, указанном в п.1 находим последний сформированный по времени файл (в каталогах типов объектов метаданных) - он как раз и будет файлом проблемного объекта:

Обход ошибок 6.png


Обход ошибок 7.png

В нашем случае - это файл ДрайверМертехРаспознавательMertechAI.xml



3. Открыв это файл в любом текстовом редакторе, мы увидим, что он некорректно заканчивается - нет закрывающих тегов:

Обход ошибок 8.png


Для примера, нормальный файл должен выглядеть так:


Обход ошибок 9.png


4. Таким образом, мы смогли достаточно быстро определить проблемный объект - это общий макет ДрайверМертехРаспознавательMertechAI. Проверить это достаточно просто - при копировании данного объекта в буфер обмена (Ctrl+C) возникает ошибка «Ошибка формата потока»:

Обход ошибок 10.png


Теперь нужно «исправить» проблемный объект. Для этого, достаточно заменить его на корректный объект сравнением/объедением конфигураций.
Для этого открываем окно сравнения/объединения с текущей конфигурацией поставщика (возьмем нормальный объект из нее):

Обход ошибок 11.png


Обход ошибок 12.png


Затем устанавливаем флажок только на одном объекте - на проблемном общем макете ДрайверМертехРаспознавательMertechAI и нажимаем «Выполнить»:


Обход ошибок 13.png



Далее сохраняем основную конфигурацию и обновляем конфигурацию базы данных.

После проделанных манипуляций, обновление на новый релиз конфигурации проходит успешно.

Из вышесказанного можно сделать следующие выводы:

  • Ошибка «Ошибка формата потока» может возникать в том случае, когда один или несколько файлов внутреннего представления объектов метаданных (хранятся в таблице сonfig СУБД) имеют неправильную структуру (повреждены).
  • Для выявления проблемных (поврежденных) объектов можно воспользоваться предложенной выше методикой.
  • Последовательность действий в каждом конкретном случае может отличаться от предложенной, но сама идея исправления при этом останется неизменной - выявление проблемных объектов и их корректировка посредством сравнения/объединения конфигураций.


Закажите бесплатную консультацию

NULL
Следующее решение
Синимекс: Лаборатория данных