«Ошибка формата потока» в 1С 8.3: как восстановить базу при запуске, загрузке и обновлении

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

Порядок действий от безопасного к сложному: очистить кэш 1С, повторить операцию с заведомо целым файлом, запустить «Тестирование и исправление» в конфигураторе, а для файловой базы — утилиту chdbfl.exe. Если ничего не помогло, восстановить базу из резервной копии.

Главное правило: до любого исправления сделайте копию базы. Тестирование и исправление, а тем более chdbfl.exe могут удалить повреждённые данные. Без копии откатиться будет некуда.

Что означает ошибка и почему она пугает

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

Сообщение звучит пугающе, потому что ничего не объясняет и часто появляется прямо при запуске: база не открывается, работа стоит. Не пугайтесь, в большинстве случаев сами данные целы. Практика показывает, что часто проблему решает очистка кэша, без необходимости вмешательства в базу.

Типичные причины:

  • повреждённый кэш после аварийного завершения 1С, зависания или отключения питания;
  • обрыв записи в файл базы: сбой питания, потеря сети при работе с файловой базой по общей папке, нехватка места на диске;
  • не скачанный до конца или повреждённый при копировании файл .dt, .cf или .cfu;
  • несовпадение версий: выгрузку делали на одной версии платформы, а загружают на несколько версий старее;
  • сбои диска или памяти на компьютере, где лежит база;
  • антивирус, который блокировал или «лечил» файлы базы во время работы.

Главное правило: сначала копия, потом исправления

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

  1. Попросите всех пользователей выйти из базы или сами завершите их сеансы принудительно. Убедитесь, что процессов 1С на сервере или компьютере с базой не осталось.
  2. Для файловой базы скопируйте всю папку базы целиком, а не только файл 1Cv8.1CD. Положите копию на другой диск или в другое место и подпишите дату создания копии.
  3. Для клиент-серверной базы сделайте резервную копию средствами СУБД: в MS SQL — через SQL Server Management Studio, в PostgreSQL — через pg_dump.
    Выгрузка в .dt через конфигуратор при повреждённой базе может не пройти, поэтому на неё не рассчитывайте.
  4. Проверьте, что копия открывается или хотя бы что её размер совпадает с исходным.

Если резервное копирование у вас не настроено, после восстановления базы займитесь им в первую очередь. Как это сделать, мы разбирали в статье о резервном копировании 1С по расписанию.

Три ситуации, в которых появляется ошибка

Где именно выскочила ошибка, подсказывает, с чего начинать. Сведём ситуации в таблицу, дальше разберём каждую подробно.
*ТиТ = тестирование и исправление информационной базы.

Когда появляетсяВероятная причинаС чего начать
При запуске базы в режиме «1С:Предприятие»Повреждён кэш пользователя, реже служебные таблицы базыОчистка кэша, затем тестирование и исправление
При входе в конфигураторПовреждён кэш или таблицы с конфигурацией внутри базыОчистка кэша, копия базы, chdbfl.exe или ТиИ
При загрузке файла .dtПовреждённый или недокачанный файл, старая версия платформыПроверить файл, загрузить в новую пустую базу, обновить платформу
При обновлении конфигурацииПовреждённый файл .cf/.cfu, кэш, ошибки в базеСкачать обновление заново, очистить кэш, ТиИ
Только у одного пользователяЛокальный кэш этого пользователяОчистка кэша на его компьютере
У всех пользователей сразуПовреждение самой базы или серверного кэшаКопия базы, ТиИ, при клиент-серверной базе — очистка серверного кэша

Ошибка при запуске и при входе в конфигуратор

Сначала выясните, у кого ошибка. Если база не открывается только у одного сотрудника, а у остальных работает, почти наверняка виноват кэш на его компьютере. Если не открывается ни у кого, проблема в базе или, для клиент-серверного варианта, в кэше сервера 1С.

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

Ошибка при загрузке выгрузки .dt

Здесь под подозрением в первую очередь сам файл. Выгрузки часто передают через почту, облачные диски и флешки, и файл приходит неполным («бьется» при передаче). Второй частый вариант: выгрузку сделали на новой версии платформы, а загружают на старой.

Ошибка при обновлении конфигурации

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

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

Это самый безопасный шаг. Кэш содержит копию конфигурации и служебные данные, которые 1С при следующем запуске создаст заново. Данные базы при этом не затрагиваются.

  1. Закройте все окна 1С на компьютере. В диспетчере задач убедитесь, что нет процессов 1cv8.exe и 1cv8c.exe.
  2. Откройте окно «Выполнить» (сочетание Win + R), вставьте путь %APPDATA%\1C\1cv8 и подтвердите.
  3. В открывшейся папке найдите каталоги, названные идентификатором вида xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, и удалите их: в каждом хранится кэш одной базы. Всё, что названо обычными словами, оставьте на месте.
  4. Повторите то же для папки %LOCALAPPDATA%\1C\1cv8.
  5. Запустите 1С. Первый запуск будет дольше обычного: кэш создаётся заново.

Альтернатива ручному удалению: запуск 1С с параметром командной строки /ClearCache, который очищает кэш клиент-серверного вызова при старте. Его можно прописать в дополнительных параметрах запуска базы в стартовом окне 1С.

Если база работает на терминальном сервере, чистить кэш нужно в профиле того пользователя, у которого ошибка. Удобнее делать это под администратором, открывая папку профиля пользователя, когда он вышел из сеанса.

Кэш сервера 1С для клиент-серверной базы

Если база клиент-серверная и ошибка у всех пользователей, может быть повреждён кэш на сервере 1С. Очистка выполняется при остановленной службе агента сервера 1С:

  1. Предупредите пользователей и дождитесь, пока все выйдут.
  2. Остановите службу «Агент сервера 1С:Предприятия 8.3».
  3. В каталоге кластера (обычно srvinfo\reg_1541) переместите в отдельную папку каталоги, имена которых начинаются с snccntx. Не удаляйте сразу: так проще вернуть, если что-то пойдёт не так.
  4. Запустите службу и проверьте вход в базу.

Настройки кластера и список баз хранятся в других файлах этого каталога. Их не трогайте.

Шаг 2. Повторная загрузка или обновление с целым файлом

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

  1. Сравните размер файла с исходным. Если выгрузку прислали, попросите отправителя сообщить точный размер в байтах или контрольную сумму. В PowerShell её можно посчитать командой Get-FileHash с указанием пути к файлу.
  2. Скачайте или скопируйте файл заново, желательно другим способом: не через почту, а через облачный диск, или наоборот.
  3. Выясните, на какой версии платформы сделана выгрузка. Для загрузки используйте ту же или более новую версию платформы 8.3.
  4. Загружайте .dt в новую пустую базу, а не поверх рабочей. Создайте базу в стартовом окне, откройте её в конфигураторе и выполните «Администрирование» → «Загрузить информационную базу».
  5. Для обновления конфигурации скачайте файл .cf или .cfu с портала 1С заново и сверьте, что он подходит именно к вашей текущей версии конфигурации.

Загрузка большой выгрузки требует много оперативной памяти и места на диске. Если вместо ошибки формата потока вы видите сообщение о нехватке памяти, это другая проблема, её мы разбирали в статье «Недостаточно памяти в 1С».

Шаг 3. Тестирование и исправление (ТиИ)

Встроенный инструмент проверяет структуру базы и может исправить часть ошибок. Работает и для файловых, и для клиент-серверных баз. Запускайте только после того, как сделали копию.

  1. Убедитесь, что в базе нет других пользователей. ТиИ требует монопольного доступа.
  2. Откройте базу в режиме «Конфигуратор».
  3. Выберите «Администрирование» → «Тестирование и исправление».
  4. Для первого прохода отметьте «Реиндексация таблиц информационной базы», «Проверка логической целостности информационной базы» и «Проверка ссылочной целостности информационной базы».
  5. Выберите режим «Тестирование и исправление». При обнаружении битых ссылок выберите «Создавать объекты» — так вы потом увидите, что именно пострадало, а не потеряете данные без информации об этом.
  6. Нажмите «Выполнить» и дождитесь окончания. На большой базе это может занять несколько часов.
  7. Прочитайте отчёт в окне служебных сообщений и сохраните его.

«Пересчёт итогов» и «Сжатие таблиц» для первого прохода не нужны: они долгие и не лечат ошибку формата потока. Их можно запустить потом, когда база откроется.

Если конфигуратор не открывается из-за той же ошибки, для файловой базы переходите к chdbfl.exe. Для клиент-серверной базы ТиИ можно попробовать запустить из командной строки в пакетном режиме конфигуратора с параметром /IBCheckAndRepair.

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

chdbfl.exe — утилита проверки физической целостности файла 1Cv8.1CD. Она входит в состав платформы и работает без запуска 1С, поэтому помогает, когда база не открывается вообще. Для клиент-серверных баз она не подходит.

  1. Убедитесь, что копия папки базы сделана и лежит в другом месте.
  2. Проверьте, что базу никто не открыл. Если база лежит в общей папке, закройте 1С на всех компьютерах.
  3. Найдите утилиту в каталоге bin установленной платформы, например C:\Program Files\1cv8\8.3.x.xxxx\bin\chdbfl.exe. Используйте ту же версию платформы, на которой работает база.
  4. Запустите утилиту, укажите путь к файлу 1Cv8.1CD.
  5. Сначала запустите проверку без флажка «Исправлять обнаруженные ошибки». Посмотрите, что найдено.
  6. Если ошибки есть, запустите проверку ещё раз с флажком «Исправлять обнаруженные ошибки».
  7. После исправления откройте базу в конфигураторе и выполните тестирование и исправление, как описано в шаге 3.

Важно понимать, как работает исправление. Утилита восстанавливает структуру файла и при необходимости удаляет записи, которые не удалось прочитать. База откроется, но часть документов или справочников может пропасть. Поэтому после исправления проверьте ключевые данные: остатки, последние документы, отчётность.

Если после всех шагов в конфигураторе остаются ошибки конфигурации или база ругается на целостность при запуске, посмотрите статью «Нарушение целостности системы в 1С»: там разобраны похожие случаи.

Клиент-серверная база: проверка на стороне СУБД

Для баз на MS SQL и PostgreSQL физические ошибки ищут средствами самой СУБД. В MS SQL это команда DBCC CHECKDB. Запускайте её сначала без параметров исправления: режимы с исправлением могут удалить данные, и применять их стоит только на копии и после оценки последствий. В PostgreSQL штатной утилиты «проверить и исправить всё» нет, здесь обычно проще восстановить базу из резервной копии.

Когда восстанавливать из резервной копии

Чинить базу имеет смысл, пока это быстрее и надёжнее, чем восстановление. Переходите к резервной копии, если:

  • chdbfl.exe или ТиИ сообщают о большом количестве неисправимых ошибок;
  • после исправления пропали важные документы или справочники;
  • база открывается, но ошибка повторяется при каждом проведении или формировании отчётов;
  • есть свежая копия, а потеря данных за последние часы менее болезненна, чем день простоя;
  • ошибка появилась снова через короткое время — это признак проблемы с диском, памятью или сетью.

Порядок восстановления:

  1. Сохраните повреждённую базу отдельно, не удаляйте её. Из неё иногда удаётся вытащить документы, введённые после копии.
  2. Восстановите копию в новую базу или новый каталог, а не поверх повреждённой.
  3. Проверьте, что копия открывается и данные на месте.
  4. Переключите пользователей на восстановленную базу.
  5. Документы, введённые после даты копии, внесите заново или перенесите из повреждённой базы, если она открывается.

Если резервной копии нет, а все шаги не помогли, остаются сторонние утилиты для разбора файла 1Cv8.1CD и работа специалиста. Результат здесь не гарантирован, поэтому работайте только с копией.

Как снизить риск повторения

  • Настройте ежедневное резервное копирование с хранением нескольких копий и периодически проверяйте, что копии восстанавливаются.
  • Поставьте источник бесперебойного питания на компьютер или сервер, где лежит база.
  • Не работайте с файловой базой по нестабильной сети, Wi-Fi или VPN. При 5 и более пользователях рассмотрите терминальный сервер или клиент-серверный вариант.
  • Добавьте папку базы в исключения антивируса.
  • Следите за свободным местом на диске и состоянием диска.
  • Обновляйте платформу на всех компьютерах до одной версии.

Если заниматься копиями, обновлениями и проверками базы некому, эту работу можно передать провайдеру. Например, облачный сервер 1С с администрированием включает обслуживание сервера и ежедневные резервные копии, так что при сбое базу восстанавливают из свежего снимка.

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

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

Да. Кэш — это временная копия конфигурации и служебных данных на компьютере пользователя. Документы и справочники хранятся в самой базе. После удаления кэша 1С создаст его заново при следующем запуске, первый запуск будет медленнее.

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

Скорее всего, повреждён кэш на его компьютере или в его профиле на терминальном сервере. Очистите кэш именно у этого пользователя. Если не помогло, проверьте, одинаковая ли версия платформы у него и у остальных.

Опасен ли chdbfl.exe для базы?

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

Что делать, если .dt не загружается ни в какую базу?

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

Помогает ли переустановка платформы 1С?

Сама по себе редко. Переустановка не трогает кэш и файлы базы. Смысл она имеет, если выгрузку нужно загрузить на более новой версии платформы или если есть подозрение на повреждение файлов самой платформы.

Ошибка появилась после обновления конфигурации. Можно ли откатиться?

Да, если перед обновлением вы сделали копию базы или выгрузку .dt. Восстановите её и повторите обновление с заново скачанным файлом после очистки кэша. Если копии нет, начинайте с тестирования и исправления.