Почему возникает "Ошибка блочного хранения двоичных данных" в 1С:Предприятие 8.3.27 и как её исправить?

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

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

Причины возникновения ошибки

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

  1. Изменения в механизмах хранения: В платформе 1С 8.3.27 были внесены существенные изменения в механизмы хранения двоичных данных. Эти изменения, вероятно, связаны с новой функцией прозрачной поддержки хранилища S3 и возможностью блочного хранения данных, что позволяет обойти ограничения СУБД на размер BLOB-данных. Однако, эти новшества могли привести к ошибкам в определенных сценариях.
  2. Повреждение данных или файловой системы: Ошибка может быть вызвана повреждением самих двоичных данных, проблемами с файловой системой на сервере, где хранится база, или нехваткой свободного места.
  3. Ошибки в конфигурации или кэше: Сбои в работе сервера 1С, повреждение кэша сервера или клиента, а также некорректные настройки конфигурации могут стать причиной данной проблемы.
  4. Неконтролируемый рост таблицы BinaryData: После обновления платформы до версии 8.3.27 (включая 8.3.27.1688), часто наблюдался неконтролируемый рост таблицы BinaryData в базе данных. Эта таблица предназначена для хранения значений реквизитов типа "ХранилищеЗначения". Чтобы точно сопоставить объекты метаданных с физическими таблицами и понять масштаб проблемы, можно использовать обработку для анализа структуры хранения базы данных, которая включает поддержку таблицы BinaryData.

Подтверждение проблемы и её масштаб

Мы видим, что эта ошибка является известной и достаточно серьезной. Она проявляется в различных сценариях, таких как выгрузка данных в DT-файлы, работа с сообщениями КонтурEDI, а также при проблемах с фотографиями товаров и клиентов. Часто пользователи замечают разрастание каталога img_cache и необходимость повторной загрузки картинок. В таких случаях хорошим подспорьем может стать сжатие картинок средствами 1С, что помогает снизить нагрузку на таблицу двоичных данных. Проблема наблюдалась в версии 8.3.27.1644 и сохранялась даже в более поздних сборках, таких как 8.3.27.1719 и 8.3.27.1688.

Официальные решения и рекомендации от 1С

Давайте рассмотрим основной и наиболее надежный путь решения, предложенный разработчиками 1С.

Официально эта ошибка, известная под номером 60025066 на багборде 1С, была исправлена в платформе 1С:Предприятие версии 8.3.27.1786 или выше. Более того, в версии 8.3.27.1859 проблема с неконтролируемым ростом таблицы BinaryData также считается решенной.

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

После успешного обновления платформы, нам необходимо выполнить следующие действия:

  1. Полная индексация базы данных: Мы можем выполнить её через "Конфигуратор" (меню "Администрирование" -> "Тестирование и исправление"). При использовании MS SQL Server важно, чтобы была корректно выполнена настройка регламентных операций, а для устранения специфических ошибок индексации на новых версиях платформы рекомендуется использовать доработанный скрипт IndexOptimize с коррекцией блокировок.
  2. Использование утилиты chdbfl.exe: Если предыдущий шаг не принес желаемого результата или если у вас файловая база, рекомендуем использовать утилиту chdbfl.exe, которая находится в каталоге установки платформы 1С. Запустите её, укажите путь к файлу базы данных и выполните проверку и исправление.

Временные решения и обходные пути (для платформ до официального исправления)

Что же делать, если по каким-либо причинам мы не можем обновиться до версии платформы с официальным исправлением? Рассмотрим различные временные решения.

1. Обновление платформы до тестовых версий

Некоторые пользователи пытались решить проблему, обновляясь до более ранних тестовых версий платформы, таких как 8.3.27.1671 или 8.3.27.1688. Однако, как мы видим из опыта, проблема могла сохраняться, и лучше стремиться к официально исправленным версиям.

2. Работа с таблицей BinaryData через SQL

Таблица BinaryData в базе данных SQL Server является ключевой для хранения двоичных данных. Чтобы понять, какие процессы вызывают ошибки в СУБД, полезно проанализировать SQL сервер глазами 1С-ника, изучив текущие запросы и ожидания.

  1. Создание таблицы BinaryData (если отсутствует или повреждена): В некоторых случаях мы можем использовать SQL-скрипт для её создания. Обязательно выполняйте такие операции на резервной копии базы данных!

    Посмотрим на пример SQL-скрипта:

    
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[BinaryData](
        [f_key] [varbinary](16) NOT NULL,
        [f_off] [numeric](18, 0) NOT NULL,
        [f_num] [numeric](18, 0) NOT NULL,
        [f_data] [varbinary](max) NOT NULL
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
    ALTER TABLE [dbo].[BinaryData] SET (LOCK_ESCALATION = DISABLE)
    GO
    
  2. Ручная очистка и восстановление двоичных данных: Это трудоемкий процесс, который может включать удаление записей из BinaryData и последующую перезагрузку данных через интерфейс 1С.

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

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

    
    delete from binarydata where f_num > 0
    

3. Рекомендации от 1С для старых версий (обходной путь)

Представители 1С предлагали следующий метод: временно снять замок с конфигурации, понизить режим совместимости (например, до 8.3.26), "передернуть" переключатель параметра "Режим использования блочного хранения двоичных данных", а затем вернуть режим совместимости обратно. Это инициирует переинициализацию механизмов хранения.

4. Настройка встроенного хранилища двоичных данных

Используйте обработку "Управление хранилищем бинарных данных" через "Функции для технического специалиста". Убедитесь, что встроенное хранилище включено, настроено на корректный каталог и на сервере достаточно свободного места для работы механизма — для этой задачи есть обработка переноса файлов из базы в тома.

5. Прочие рекомендации и диагностика

  1. Проверить диск и права доступа: Убедитесь в наличии места и прав у учетной записи сервера 1С.
  2. Сделать резервную копию базы данных: Это критически важный шаг!
  3. Перезапустить сервер 1С: Помогает сбросить кэш.
  4. Проверить логи сервера 1С: Изучите технологический журнал для поиска детальных причин.
  5. Выгрузка базы в DT и обратная загрузка: Метод помогает при логических повреждениях.
  6. Программное чтение полей "ХранилищеЗначения": Можно попробовать инициировать чтение объектов для выявления конкретных поврежденных записей.

Важные технические детали

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

Надеемся, что представленные нами решения помогут вам успешно справиться с "Ошибкой блочного хранения двоичных данных". Всегда начинайте с наиболее безопасных и официальных методов!

← На главную