Ошибка «Ошибка формата потока» — одна из самых коварных в практике администратора или программиста 1С. Её сложность заключается в том, что это не указание на конкретный сбой, а общий симптом повреждения структуры данных. Часто случается так: база работает у одного пользователя, но стоит очистить кеш, как она перестает открываться вовсе. Это происходит потому, что в локальном кеше хранилась «здоровая» копия конфигурации, а в самой базе данные уже были повреждены. Как только мы удаляем кеш, программа пытается заново прочитать поврежденный поток из базы и терпит неудачу.
В этой статье мы подробно разберем, как диагностировать и устранить эту проблему, двигаясь от простых методов к наиболее сложным техническим манипуляциям.
Прежде чем приступать к глубокому лечению базы, необходимо исключить проблемы на стороне клиентского окружения. Рассмотрим простейшие шаги, которые помогают в 40% случаев.
%AppData%\1C\1cv8 и %LocalAppData%\1C\1cv8. Рекомендуется полностью удалить все папки с именами-идентификаторами (вида eb65...).%TEMP% в профиле пользователя Windows.Если манипуляции с кешем не помогли, значит, повреждение локализовано в самом файле базы данных (для файловой версии) или в таблицах СУБД (для клиент-серверной версии). Разберем стандартный алгоритм реанимации.
Шаг 1. Утилита chkdbfl.exe. Это «первая помощь» для файловых баз. Найдем эту утилиту в папке bin установленной платформы. Выберем файл 1Cv8.1CD, установим флаг «Исправлять обнаруженные ошибки» и запустим проверку. Важно: перед этим обязательно сделаем резервную копию файла базы!
Шаг 2. Тестирование и исправление (ТиИ). Если Конфигуратор открывается, запустим встроенную проверку. В меню «Администрирование» выберем «Тестирование и исправление». Рекомендуется отметить следующие пункты:
Шаг 3. Выгрузка и загрузка файла .dt. Рассмотрим этот метод подробнее. В 94% случаев «Ошибка формата потока» исправляется именно так. Процесс выгрузки данных в .dt и последующая загрузка в абсолютно новую пустую базу данных заставляет систему полностью перестроить структуру таблиц и индексов, отсекая «битые» блоки данных.
Ситуация осложняется, если Конфигуратор не открывается или вылетает при попытке тестирования. Выясним причину: чаще всего это связано с неудачным динамическим обновлением, когда конфигурация базы данных вошла в противоречие с основной конфигурацией.
Рассмотрим методы для MSSQL или PostgreSQL:
DELETE FROM ConfigSave
Это безопасная операция, которая часто возвращает базу к жизни.Config из старого исправного бэкапа в текущую рабочую базу средствами СУБД. Это позволит зайти в Конфигуратор и продолжить работу.Для файловых баз, когда стандартная утилита chkdbfl.exe бессильна, проанализируем ситуацию с помощью стороннего софта, например, Tool1CD. Рассмотрим, что можно сделать:
Config) в файл .cf..cf, создадим новую базу и загрузим его туда, а затем перенесем данные через XML или другие средства обмена.Иногда ошибка формата потока не связана с целостностью данных напрямую, а вызвана внешними факторами. Разберем их:
Opportunistic Locking на сервере, где лежит база..cf.1Cv8.1CD также может интерпретироваться системой как ошибка формата потока.Как мы выяснили, универсальной «кнопки» для исправления этой ошибки не существует. Мы рекомендуем соблюдать следующую последовательность действий:
Проанализировав все шаги — от чистки кеша до SQL-запросов — мы сможем локализовать проблему и вернуть систему в рабочее состояние даже в самых сложных случаях.