Как исправить ошибку «Отсутствует запись в хранилище двоичных данных» при выгрузке базы 1С в формат dt?

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

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

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

Почему ломается именно выгрузка в формат .dt?

Давайте выясним причину, по которой СУБД-бэкап (например, в формате .bak для Microsoft SQL Server) создается и восстанавливается абсолютно корректно, а попытка выгрузить базу средствами 1С в файл .dt завершается аварийно. Дело в принципиальной разнице подходов к резервному копированию:

  1. Резервное копирование СУБД (физический бэкап): SQL Server или СУБД PostgreSQL копирует страницы данных "как есть" на дисковом уровне. СУБД не валидирует логические связи между таблицами 1С и внешними файлами на сервере приложений. База успешно сохраняется, даже если в ней содержатся битые ссылки или отсутствуют физические файлы в сетевом каталоге.
  2. Выгрузка в формат .dt (логический бэкап): Процесс выгрузки в 1С устроен гораздо сложнее. Платформа последовательно обходит все таблицы метаданных, считывает информацию и пытается обратиться к каждой ссылке во внешнем хранилище двоичных данных для её упаковки в единый архив. Если в базе данных 1С осталась ссылка на объект (например, на прикрепленный файл к документу), но сам файл физически отсутствует в папке хранилища или поврежден его заголовок, процесс выгрузки мгновенно прерывается ошибкой.

Таким образом, возникновение данной ошибки свидетельствует о нарушении логической целостности связей между СУБД и внешним каталогом двоичных данных.

Способ 1. Тестирование и исправление (ТИИ) базы данных

Самым эффективным и простым способом решения проблемы является запуск встроенного механизма тестирования и исправления конфигурации с корректными параметрами. Начиная с последних релизов платформы 1С v8.3, разработчики добавили в ТИИ специальный функционал для валидации внешних хранилищ.

Рассмотрим по шагам процесс запуска исправления:

  1. Обязательно создайте резервную копию базы данных средствами СУБД (например, в формате .bak), так как исправление поврежденных ссылок может привести к удалению записей, не имеющих физических файлов.
  2. Запустите информационную базу 1С в режиме Конфигуратор с правами администратора.
  3. В главном меню перейдите в раздел Администрирование и выберите пункт Тестирование и исправление....
  4. В открывшемся окне настроек параметров обязательно установите флаг напротив пункта Проверка целостности информационной базы.
  5. Ниже найдите и включите флаг Проверка двоичных данных (в старых версиях платформы этого пункта не было, поэтому убедитесь, что вы работаете на актуальной платформе).
  6. В блоке "При наличии ошибок" для параметров "При наличии ссылок на несуществующие объекты" и "Частичное разрушение объектов" установите переключатель в положение Очищать ссылки или Удалять дефектные объекты. Это позволит платформе автоматически удалить "битые" записи в базе данных, для которых файлы не были найдены в каталоге хранилища.
  7. Нажмите кнопку Выполнить и дождитесь завершения операции.

Процедура ТИИ проверит таблицу BinaryData, сопоставит её записи с реальным набором файлов во внешнем каталоге, исправит некорректные связи и удалит ссылки на сиротские объекты. После успешного завершения ТИИ попробуйте выполнить выгрузку в .dt заново.

Если вы предпочитаете выполнять обслуживание баз данных в автоматическом режиме в нерабочее время, мы можем настроить аналогичную процедуру через командную строку Windows или Linux. Для регламентного обслуживания нескольких баз можно использовать программу для автоматического обновления, тестирования и архивирования баз 1С. Пример команды для запуска ТИИ:


"C:\Program Files\1cv8\8.3.27.2130\bin\1cv8.exe" DESIGNER /S "ИмяСервера\ИмяБазы" /N "Администратор" /P "Пароль" /IBCheckAndRepair -Rebuild -IBDataIntegrity -BinaryData -CleanRefs

Способ 2. Устранение платформенных багов (Обновление или Даунгрейд)

Иногда возникновение ошибки связано не с реальным повреждением базы данных, а с ошибками кода самой технологической платформы 1С. В официальном багборде 1С зарегистрирован баг под номером 60025066 (и смежный 60023075), который вызывает ошибку блочного хранения двоичных данных при попытке чтения констант или выгрузки ИБ.

Проанализируем версии платформы, подверженные этой уязвимости:

Если ваша система работает на уязвимом релизе, выполните следующие действия:

  1. Обновите платформу сервера 1С и клиентских рабочих мест до актуального стабильного релиза ветки 8.3.27 (например, 8.3.27.1989 или выше).
  2. Если быстрое обновление серверов невозможно из-за регламентных ограничений, временно выполните даунгрейд (откат) платформы до стабильной версии 8.3.27.1606, в которой эта ошибка отсутствовала.
  3. После изменения версии платформы обязательно выполните очистку кэша сервера приложений 1С и локального кэша пользователей.

Способ 3. Настройка прав доступа к каталогу хранения

Рассмотрим ситуацию, когда база данных была перенесена на новый сервер средствами СУБД, файлы хранилища скопированы на новый диск, но при попытке открыть любой прикрепленный файл или сделать выгрузку система выдает ошибку отсутствия записи.

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

  1. Служба сервера 1С:Предприятие работает под определенной системной учетной записью. В операционных системах семейства Windows это, как правило, локальный пользователь usr1cv8. В Linux-системах — пользователь 1cv8.
  2. При копировании папки с двоичными данными на новый сервер или другой локальный диск права доступа старого пользователя теряются или заменяются правами администратора.
  3. Нам необходимо зайти в свойства папки внешнего хранилища двоичных данных, перейти на вкладку Безопасность и добавить пользователя usr1cv8 (или соответствующую доменную группу, если хранилище сетевое).
  4. Предоставьте этому пользователю права Полный доступ (включая чтение, запись, изменение содержимого папки и выполнение). Примените эти настройки ко всем вложенным папкам и файлам.

Также важно проверить сетевые пути. Если в настройках вашей СУБД прописаны UNC-пути к сетевому диску (например, \\BackupServer\BinaryData\), убедитесь, что новый сервер 1С имеет беспрепятственный доступ к этой сетевой шаре под той учетной записью, под которой запущена его служба.

Способ 4. Перенос данных обратно в СУБД (для платформы 1С v8.5 и старше)

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

Начиная с технологической платформы 1С v8.5.4 (а также в ветке 8.3.28), разработчики добавили штатный инструмент для миграции бинарных данных:

  1. Откройте программу 1С в режиме предприятия под пользователем с полными правами.
  2. Перейдите в меню Функции для технического специалиста (ранее "Все функции").
  3. Найдите стандартную обработку Управление хранилищем двоичных данных.
  4. В открывшемся интерфейсе вы увидите детальную статистику размещения ваших файлов.
  5. Чтобы вернуть файлы обратно в базу, отключите использование внешнего хранилища по умолчанию и нажмите кнопку Актуализировать размещение.
  6. Платформа запустит фоновое задание, которое безопасно перенесет все бинарные данные из внешних папок или облачных хранилищ S3 обратно в таблицы базы СУБД. При этом целостность ссылок будет восстановлена автоматически.

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

← На главную