Сообщение «Ошибка формата потока» является одной из самых распространенных и одновременно неопределенных ошибок платформы 1С:Предприятие. Сбой возникает, когда платформа пытается прочитать или десериализовать двоичные данные (LOB/BLOB-потоки) из базы данных, кэша или конфигурационного файла, но их структура оказывается поврежденной или несогласованной. Разберем по шагам наиболее эффективные методы диагностики и устранения этой неполадки в клиент-серверном и файловом режимах.
В большинстве повседневных случаев ошибка формата потока вызвана повреждением локальных временных файлов на клиентском компьютере. Проанализируем самый быстрый и безопасный способ решения:
Если перерегистрация не помогла, выполним полную ручную очистку кэша. Для этого закроем все запущенные процессы 1С и очистим содержимое каталогов %LocalAppData%\1C\1cv8 и %AppData%\1C\1cv8 (папки с длинными шестнадцатеричными именами-GUID).
Если ошибка формата потока сохраняется у всех пользователей сразу, проблема локализована на стороне сервера 1С. Рассмотрим порядок очистки серверного кэша:
services.msc) или соответствующий демон в Linux.C:\Program Files\1cv8\srvinfo\srvribrg-**** или reg_1541).snccntx*) и удаляем их содержимое. Системные файлы реестра кластера 1CV8Clst.lst, 1CV8Reg.lst удалять не нужно.Часто повреждение бинарных потоков затрагивает системную таблицу Config или ConfigSave в базе данных (например, после аварийного завершения динамического обновления или сбоя транзакции). Проанализируем, как пересобрать потоки метаданных:
.cf)..cf в новую базу и выполняем обновление конфигурации базы данных (клавиша F7). Если новая конфигурация запускается корректно, значит, структура метаданных цела, а сбой находился в кэшированных таблицах исходной базы.Config.Если база перестала открываться даже в Конфигураторе после неудачного динамического обновления, в таблице ConfigSave могут остаться поврежденные временные потоки. Рассмотрим последовательность действий на уровне MS SQL Server или PostgreSQL:
-- Для Microsoft SQL Server
TRUNCATE TABLE ConfigSave;
-- Для PostgreSQL
TRUNCATE TABLE "configsave";
Нередко «Ошибка формата потока» возникает при десериализации сохраненных настроек отчетов, форм или динамических списков конкретного пользователя. Выясним причину методом исключения: если под новой учетной записью с административными правами вход выполняется успешно, значит, повреждены персональные настройки.
_SystemSettings, _SysSettings, _CommonSettings.Если стандартные регламентные действия не принесли результата, для выявления поврежденного объекта настраиваем технологический журнал 1С. Создадим файл logcfg.xml в каталоге conf платформы:
<config xmlns="http://v8.1c.ru/v8/config/log">
<log location="C:\1C_Logs\StreamError" history="4">
<event>
<eq property="name" value="EXCP"/>
</event>
<event>
<eq property="name" value="CALL"/>
</event>
<event>
<eq property="name" value="SCALL"/>
</event>
<property name="all"/>
</log>
</config>
Анализируя полученный лог, мы увидим событие EXCP с описанием ошибки и предшествующий ему контекст (Context), указывающий на конкретный модуль, метаданное или таблицу СУБД, в которой произошел сбой потока данных.
В исключительных ситуациях, когда физически повреждены основные таблицы данных СУБД и утилиты тестирования и исправления (ТиИ, chdbfl.exe) не могут устранить повреждение, создаем новую пустую базу из файла .cf и выполняем выгрузку и загрузку рабочей информации с помощью обработки «Универсальный обмен данными в формате XML». Этот подход позволяет перенести все прикладные объекты (справочники, документы, регистры) в обход поврежденных системных и служебных LOB-структур базы данных.