Решение задач 1С:Предприятие 8 на примерах

Ошибка формата потока в 1С 8.3: причины и как исправить

Базы данных и СУБДОпубликовано

Сообщение «Ошибка формата потока» означает, что платформа прочитала из файла или таблицы данные, которые не может разобрать. Это может быть безобидный испорченный кэш, а может быть повреждение конфигурации или самой базы. Ниже — список причин и порядок действий от самых безопасных шагов к самым серьёзным, а также отдельные сценарии: ошибка при входе, в конфигураторе и при загрузке файла .dt.

Что означает «Ошибка формата потока»

Платформа 1С хранит многое в сериализованном виде: конфигурацию, кэш метаданных, пользовательские настройки, значения типа ХранилищеЗначения, файлы выгрузки .dt. При чтении такой «поток» разбирается по заранее известному формату. Если в середине оказывается мусор, обрезанный блок или данные от другой версии платформы, разбор прерывается, и пользователь видит «Ошибка формата потока». Сам текст ошибки не говорит, какой именно поток испорчен, поэтому важно понять, в какой момент она появляется.

Ориентируйтесь на контекст. Если 1С ошибка потока возникает сразу при входе, под конкретным пользователем или на одном компьютере, почти наверняка виноват кэш. Если ошибка стабильно появляется у всех и в конфигураторе — проблема в конфигурации или данных базы. Если ошибка формата потока 1С 8.3 возникает при загрузке, то есть при восстановлении из .dt или загрузке .cf, — подозревайте сам файл или разные версии платформы.

Основные причины

  • Повреждённый кэш и временные файлы. Клиент кэширует метаданные в профиле Windows. Аварийное завершение, обрыв сети или переполненный диск оставляют кэш недописанным.
  • Сбой при записи. Отключение питания или зависание во время сохранения конфигурации, обновления или записи объекта может оставить в базе битый фрагмент.
  • Повреждённая конфигурация. Прерванное обновление, неудачное динамическое обновление, ошибка при объединении конфигураций.
  • Битый файл .dt или .cf. Файл скопирован не полностью, повреждён на флешке или при передаче через почту и мессенджер.
  • Несовпадение версий платформы. Файл выгрузки или конфигурации сделан на более новой платформе, чем та, которой его пытаются открыть, либо к одной базе подключаются клиенты разных релизов.
  • Хранилище конфигурации и РИБ. Испорченный кэш хранилища или повреждённое сообщение обмена в распределённой базе дают ту же ошибку при захвате объектов или загрузке изменений.

Как исправить: порядок действий

Двигайтесь от безопасных шагов к радикальным. Первые два пункта не меняют данные базы, остальные — меняют, поэтому до них обязательно сделайте резервную копию: для файловой базы скопируйте каталог с файлом 1Cv8.1CD при закрытых сеансах, для клиент-серверной — сделайте бэкап средствами СУБД.

Шаг 1. Очистка кэша

Закройте все окна 1С на компьютере и удалите каталоги кэша. Их имена — длинные GUID вида a1b2c3d4-…, по одному на каждую базу из списка.

%APPDATA%\1C\1cv8\        — каталоги с GUID-именами (кэш настроек и метаданных)
%LOCALAPPDATA%\1C\1cv8\   — каталоги с GUID-именами (основной кэш конфигурации)

Не удаляйте: %APPDATA%\1C\1CEStart\ibases.v8i — это список информационных баз

Если не хочется искать нужную папку, удалите все каталоги с GUID-именами: при следующем запуске платформа создаст их заново, первый вход будет чуть дольше. Альтернатива — запуск с параметром /ClearCache (его можно указать в поле «Дополнительные параметры запуска» в свойствах базы в окне выбора). В клиент-серверном варианте иногда портится сеансовый кэш на сервере 1С; его чисткой занимается администратор: останавливает службу агента сервера и удаляет каталоги snccntx* в каталоге кластера, после чего запускает службу.

Шаг 2. Вход под другим пользователем

Если ошибка формата потока при входе в 1С воспроизводится только под одним пользователем, скорее всего, повреждены его сохранённые настройки — они тоже хранятся в сериализованном виде. Зайдите под администратором и проверьте, открывается ли база. Если да, удалите настройки проблемного пользователя через «Администрирование → Настройки пользователей и прав → Персональные настройки» (в типовых на БСП) или, в крайнем случае, пересоздайте пользователя в конфигураторе.

Шаг 3. Тестирование и исправление информационной базы

Откройте конфигуратор, меню «Администрирование → Тестирование и исправление». Для начала включите реиндексацию таблиц, проверку логической и ссылочной целостности и режим «Тестирование и исправление». Если ошибка возникает ещё до открытия конфигуратора, ту же операцию можно выполнить из командной строки.

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "" ^
  /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals /Out "D:\Logs\check.log"

Номер релиза в пути подставьте свой. Для клиент-серверной базы вместо /F укажите /S "Сервер\ИмяБазы". Результат проверки будет в файле, переданном в /Out.

Шаг 4. Утилита chdbfl.exe для файловой базы

Если база файловая и конфигуратор не запускается, используйте утилиту chdbfl.exe из каталога bin установленной платформы, например C:\Program Files\1cv8\8.3.24.1548\bin\chdbfl.exe. Укажите путь к 1Cv8.1CD, установите флажок «Исправлять обнаруженные ошибки» и нажмите «Выполнить». Работать с базой в это время никто не должен. Утилита исправляет ошибки физической структуры файла, но не логические ошибки данных — после неё всё равно выполните шаг 3.

Шаг 5. Загрузка конфигурации из файла

Если база открывается, но 1С конфигуратор ошибка формата потока появляется при открытии дерева конфигурации или отдельных объектов, повреждена сама конфигурация. Возьмите исправный файл .cf той же версии (из поставки, из другой базы или из своих архивов) и выполните «Конфигурация → Загрузить конфигурацию из файла», затем «Обновить конфигурацию базы данных». Если конфигурация на поддержке без доработок, это самый короткий путь. Если есть доработки — сначала попробуйте сохранить текущую конфигурацию в файл: часто «Сохранить конфигурацию в файл» срабатывает, даже когда открытие объектов падает.

Если ошибка появляется при «Обновить конфигурацию базы данных», а основная конфигурация исправна, иногда помогает «Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД» с последующим повторным сравнением и обновлением.

Шаг 6. Выгрузка и загрузка .dt

Последний шаг перед восстановлением из бэкапа — пересоздать базу через выгрузку. В конфигураторе «Администрирование → Выгрузить информационную базу», затем создать новую пустую базу и загрузить туда файл. Процесс заново раскладывает данные и нередко избавляет от скрытых повреждений. Если выгрузка падает на той же ошибке, значит, повреждены данные, и без исправления на шагах 3–4 или резервной копии не обойтись.

rem Выгрузка в .dt пакетным режимом конфигуратора
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "" /DumpIB "D:\Backup\buh.dt"

rem Альтернатива для новых релизов — автономная утилита ibcmd
"C:\Program Files\1cv8\8.3.24.1548\bin\ibcmd.exe" infobase dump --db-path="D:\Bases\Buh" "D:\Backup\buh.dt"

Ошибка формата потока при загрузке .dt

Отдельный частый случай — ошибка формата потока 1С 8.3 при загрузке файла выгрузки. Проверьте по списку:

  1. Версия платформы, на которой делали выгрузку, не новее вашей. Узнать её можно у того, кто передал файл, или в окне «О программе» исходной базы. Обновите платформу до того же или более нового релиза.
  2. Размер файла совпадает с исходным. Неполное копирование — частая причина. Архивируйте .dt перед передачей: архиватор сам проверит целостность при распаковке.
  3. На диске, где лежит временный каталог и создаваемая база, достаточно места — с запасом в несколько раз больше размера .dt.
  4. Загрузка идёт в новую пустую базу, а не в существующую с открытыми сеансами.

Если файл действительно повреждён, исправить его средствами 1С нельзя — нужна повторная выгрузка или другая копия.

Хранилище конфигурации и РИБ

При работе с хранилищем ошибка обычно появляется при захвате или получении объектов. Отключитесь от хранилища, очистите локальный кэш базы (шаг 1) и подключитесь заново. Если ошибка у всех разработчиков сразу, повреждение может быть на стороне хранилища: администратор хранилища может при отключённых пользователях удалить служебный каталог кэша в папке хранилища (он пересоздаётся), а при повреждении самих данных — восстановить хранилище из резервной копии. В распределённой базе битое сообщение обмена лечится повторной выгрузкой изменений из главного узла, а при серьёзном расхождении — созданием нового начального образа узла.

Типичные ошибки при исправлении

  • Запуск chdbfl.exe или тестирования без копии базы. Исправление может удалить «битые» записи, и вернуть их будет неоткуда.
  • Удаление ibases.v8i вместе с кэшем — база не пострадает, но список баз придётся восстанавливать вручную.
  • Работа других пользователей во время проверки: тестирование и chdbfl требуют монопольного доступа.
  • Загрузка .cf от другого релиза конфигурации поверх рабочей базы без сравнения — можно потерять доработки.
  • Повторные попытки загрузить заведомо обрезанный .dt вместо поиска исправной копии.

Краткая шпаргалка

Когда возникаетВероятная причинаЧто делать в первую очередь
При входе у одного пользователяКэш или настройки пользователяОчистить кэш, удалить настройки пользователя
При входе у всехПовреждение базы или серверного кэшаТестирование и исправление, chdbfl для файловой базы
В конфигураторе при открытии объектовПовреждённая конфигурацияЗагрузить конфигурацию из исправного .cf
При загрузке .dtБитый файл или старая платформаПроверить размер и версию платформы
При работе с хранилищемКэш хранилищаПереподключиться с очисткой кэша

Актуальность для новых версий

Описанные шаги применимы ко всем релизам платформы 8.3, включая 8.3.2x. Расположение кэша в профиле пользователя (%APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8) в 8.3 не менялось. Утилита ibcmd для пакетной выгрузки и загрузки .dt доступна в относительно новых релизах 8.3 (примерно с 8.3.14), а режим /IBCheckAndRepair работает и в старых версиях. Перед любыми операциями восстановления сделайте резервную копию базы.

Частые вопросы

Можно ли удалять папки кэша 1С, не потеряю ли я данные?

Да, каталоги с GUID-именами в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8 содержат только кэш, данные базы там не хранятся. Не удаляйте файл ibases.v8i — в нём список баз, иначе их придётся добавлять заново.

Почему ошибка формата потока появляется только у одного пользователя?

Почти всегда виноват локальный кэш этого пользователя или его сохранённые настройки. Очистите кэш на его компьютере, а если не помогло — попробуйте войти под другим пользователем и удалить настройки проблемного пользователя.

Что делать, если ошибка формата потока возникает при загрузке .dt?

Проверьте, что выгрузка сделана на той же или более старой версии платформы, и сравните размер файла с исходным. Если файл повреждён при копировании, загрузить его не получится — нужна другая выгрузка или резервная копия.

Помогает ли chdbfl.exe при ошибке формата потока?

Для файловой базы — часто да, если повреждена структура файла 1Cv8.1CD. Запускайте утилиту только на копии базы и при отключённых пользователях.

Файл базы данных поврежден в 1С 8.3: как исправить ошибку СУБД

Базы данных и СУБД

Пошаговое восстановление файловой базы 1С при ошибке «Файл базы данных поврежден»: резервная копия, chdbfl.exe, тестирование и исправление и запасные варианты.

Ошибка «Нарушена целостность структуры конфигурации»: восстановление через MS SQL

Базы данных и СУБД

После неудачного динамического обновления база 1С не открывается с ошибкой о нарушенной целостности конфигурации. Разбираем по шагам восстановление через таблицы Config и Params в MS SQL.

XML в 1С программно: запись, чтение, DOM и выгрузка данных

Интеграция и веб-сервисы

Готовые примеры работы с XML на встроенном языке 1С: запись и чтение, DOM с XPath, преобразование XML в структуру, выгрузка справочника и разбор ошибок парсинга.

Работа с JSON в 1С: чтение, запись, даты и типичные ошибки

Интеграция и веб-сервисы

Практическое руководство по JSON в 1С: чтение строки и файла, Структура против Соответствия, запись массивов, даты, сериализация через XDTO и разбор частых ошибок.