Как исправить ошибку «Ошибка блочного хранения двоичных данных» при обновлении 1С:ERP?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием
← На главную

При переходе на новые релизы 1С:ERP Управление предприятием (например, версию 2.5.22.63 и выше) на платформе ветки 8.3.27 пользователи и системные администраторы всё чаще сталкиваются с критической ошибкой: «Ошибка хранилища двоичных данных - Ошибка блочного хранения двоичных данных». Данная проблема обычно проявляется в момент первого запуска системы после обновления или непосредственно в процессе выполнения обработчиков обновления при обращении к константе СведенияОбОбновленииИБ. Для безопасного перехода без ошибок обновления есть перенос данных для перехода между версиями 1С:ERP и КА.

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

Выясним причину возникновения ошибки

Проанализируем техническую составляющую. Начиная с версии 8.3.27, фирма «1С» внедрила обновленный механизм работы с двоичными данными, который теперь использует так называемое блочное хранение. Этот механизм оптимизирует работу с большими объемами данных в базе (файлы, картинки, хранилища значений), однако он крайне чувствителен к целостности структуры данных и версии драйвера хранилища.

Ошибка возникает, когда система пытается прочитать объект (например, константу СведенияОбОбновленииИБ, хранящую структуру с логами обновления), который был записан старым механизмом, но текущая версия платформы интерпретирует его формат как некорректный. В частности, на релизе 8.3.27.1559 данное поведение признано зарегистрированной ошибкой платформы.

Решение 1: Очистка кэша (самый простой и быстрый способ)

Как показывает практика ИТ-сообщества, во многих случаях проблема вызвана несоответствием закэшированных метаданных и реальной структуры таблиц двоичных данных. Рассмотрим процесс правильной очистки кэша для решения данной проблемы:

  1. Завершим все активные сеансы работы с информационной базой — для этого подойдёт обработка администрирования кластера и управления сеансами 1С.
  2. Если используется клиент-серверный вариант — остановим службу Агента сервера 1С:Предприятия.
  3. Очистим папки локального кэша на компьютере пользователя и на сервере:
    • %AppData%\1C\1cv8\ (папки с именами-идентификаторами баз);
    • %LocalAppData%\1C\1cv8\.
  4. В случае серверной базы дополнительно очистим папку snccntx в каталоге данных сервера 1С.
  5. Запустим систему повторно.

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

Решение 2: Применение официального патча (EF_60022597_2)

Для конфигураций ERP 2.5.22 и Комплексная автоматизация 2.5.22 выпущен специальный патч (исправление), который добавляет в код конфигурации обходной путь (workaround). Разберем, как правильно его применить, чтобы избежать ошибки при обновлении:

Посмотрим на алгоритм действий, который рекомендуют опытные специалисты:

  1. Перед началом обновления (на еще работающей версии 2.5.17 или аналогичной) скачаем патч EF_60022597_2 (или более новый, если он доступен).
  2. Установим патч через меню Обслуживание — Обновление программы — Установленные исправления (патчи).
  3. Только после установки патча приступим к обновлению конфигурации на релиз 2.5.22.х.

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

Решение 3: Тестирование и исправление (ТиИ)

Если очистка кэша и патч не помогли, проанализируем состояние самой базы данных. Иногда физическое представление таблиц в СУБД требует реструктуризации под новые требования платформы.

  1. Запустим конфигуратор.
  2. Откроем меню Администрирование — Тестирование и исправление...
  3. Выберем следующие пункты:
    • Реиндексация таблиц информационной базы;
    • Сжатие таблиц информационной базы.
  4. Нажмем «Выполнить».

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

Решение 4: Программная очистка константы (для продвинутых пользователей)

Рассмотрим ситуацию, когда константа СведенияОбОбновленииИБ уже повреждена и не дает запустить систему ни под каким предлогом. В этом случае можно прибегнуть к радикальному методу — очистке значения константы (для этого подойдёт универсальный инструмент администрирования и редактирования объектов 1С). Это приведет к потере истории логов текущего процесса обновления, но позволит системе сформировать новую структуру данных в формате 8.3.27.

Воспользуемся внешней обработкой или консолью кода (в этом поможет универсальная консоль кода для выполнения алгоритмов 1С) и выполним следующий фрагмент:


// Очистка константы, вызывающей ошибку блочного хранения
НаборКонстант = Константы.СведенияОбОбновленииИБ.СоздатьНабор();
НаборКонстант.Очистить();
Попытка
    НаборКонстант.Записать();
    Сообщить("Константа успешно очищена. Попробуйте запустить обновление снова.");
Исключение
    Сообщить("Ошибка при записи: " + ОписаниеОшибки());
КонецПопытки;

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

Подведем итоги

Ошибка блочного хранения — это следствие перехода платформы на более строгий контроль двоичных объектов. Чтобы минимизировать риски при обновлении ERP на платформе 8.3.27, мы рекомендуем:

  1. Использовать наиболее стабильные сборки платформы (рекомендуется проверять релизы выше 8.3.27.1559).
  2. Всегда устанавливать актуальные патчи EF_... до начала процесса обновления метаданных.
  3. При возникновении любых ошибок десериализации первым делом выполнять полную очистку серверного кэша.

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

← На главную