diamond АШ Tlg

Растёт таблица binarydata после обновления платформы на 8.3.27

Что делать? Краткая инструкция

TL;DR

Если вы заметили, что в вашей базе 1С начала неадекватно расти таблица binarydata после обновления платформы на версию 8.3.27, то есть несколько тривиальных способов уменьшения этой таблицы:

  • Update от 14.11.2025: Обновить платформу на 8.3.27.1859: проблема решена, дальше можно не читать!
  • Update от 16.10.2025: Выгнать всех пользователей из базы, прибить все зависшие сессии, для надёжности заблокировать регламентные задания. При нормальном заходе и выходе единственного (это важно!) в базе клиента срабатывает автоматическая чистка binarydata от мусора. Может сработать не на всех версиях платформы.
  • Выгрузить базу в DT и загрузить обратно. Может не получится из-за ошибок.
  • Пробежаться по таблицам и произвести чтение полей типа ХранилищеЗначения. Update от 16.10.2025: выяснилось, что это работает только при монопольном доступе.
  • Вычистить неактуальные мусорные записи прямым запросом в СУБД. Из-за возможной блокировки таблицы на СУБД может потребоваться приостановка сервера 1С:
    delete from binarydata where f_num > 0
    (сперва проверить результат на копии - мало ли что в интернетах напишут)

Чтобы остановить дальнейший катастрофический рост необходимо сделать следующее:

0) Если конфигурация самописка, то сразу после записи в ХранилищеЗначения в базу данных дописать код чтобы произвести из него чтение. К остальным шагам переходить, если этот невозможно или затруднительно сделать.

1) Через функции для технического специалиста найдите обработку "Управление хранилищем бинарных данных":

Настройки внутреннего хранилища

2) Включите встроенное хранилище:

Настройки внутреннего хранилища

3) Настройте встроенное хранилище:

Настройки внутреннего хранилища

4) Убедитесь что на сервере приложений 1С имеется достаточно свободного места для хранилища! Если места нет - выделите новый диск для профайла пользователя, под которым запущен сервер 1С. Бинарные данные ищите в каталоге BinDataStrg.

5) Периодически производите очистку от удалённых и перезаписанных версий файлов - основной причины распухания binarydata:

Очистка

Актуальные данные, на которые есть живые ссылки, затронуты этой процедурой не будут.

Для автоматической очистки хранилища от мусора можно создать и запустить регламентное задание с такой строчкой кода:

BinaryDataStorage.ClearUnusedSpaceByUniversalDate(Date(3999, 1, 1));

А подробнее?

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

При перезаписи реквизитов типа 'ХранилищеЗначения' вместо замещения старых данных в таблицу binarydata добавляются новые версии файлов. Это, в принципе, нормальное поведение для хранилища S3, но ненормально для внутреннего хранения в СУБД, если не реализована эффективная чистка старых версий. Хотя такая чистка и предусмотрена, но реализована в текущих платформах с ошибками и не работает в многопользовательском режиме.

Если вам, после исправления бага, всенепременно захочется вернуть прикрепленные файлы обратно в СУБД, то придётся дождаться релиза платформы 8.3.28, в котором фирма 1С обещает инструмент для миграции данных из хранилища в СУБД и обратно.