При обслуживании или обновлении баз данных 1С:Предприятия специалисты нередко сталкиваются с ситуацией, когда информационная база успешно функционирует и выгружается в файл .dt под управлением платформы 1С 8.2, но при попытке выгрузить эту же базу в платформе 8.3 возникает критическая ошибка: «Нарушена целостность информационной базы. Ошибка в размере файла ... при выгрузке таблицы Files. Ожидаемое значение 0, значение в таблице ...». Разберем по шагам, что представляют собой эти файлы, почему платформа ведет себя подобным образом и как безопасно решить проблему несколькими проверенными способами.
Для правильного выбора способа восстановления сначала выясним назначение служебной таблицы Files (в СУБД — dbo.Files). В ней хранятся общие двоичные данные, кэш и пользовательские настройки интерфейса:
<GUID>.pfl — это индивидуальные профили пользователей (от английского profile). Значение GUID перед расширением напрямую соответствует идентификатору конкретного пользователя информационной базы из таблицы v8users. Внутри этого файла платформа хранит пользовательские настройки динамических списков, фильтры документов, сохраненные отборы журналов регистрации, а также визуальное расположение, размеры и видимость колонок и окон. Удаление такой записи совершенно безопасно для учетных данных: проводки, регистры, справочники и документы не затрагиваются. При удалении файла пользователь просто вернется к стандартным настройкам отображения интерфейса, а система автоматически создаст новый чистый файл настроек при следующем входе.fo_version — технический кэш актуальности функциональных опций информационной базы, необходимый платформе для быстрой инициализации интерфейсных механизмов.Проанализируем поведение платформы. Начиная с релизов ветки 8.3 (в частности, с версий 8.3.7 и 8.3.8), механизм выгрузки информационной базы в файл выгрузки данных .dt получил строгую проверку соответствия фактического размера потока данных значению в колонке DataSize. Если в платформе 8.2 на расхождение фактического и записанного размера система закрывала глаза, то платформа 8.3 сразу прерывает операцию и выдает сообщение о нарушении целостности.
Важно отметить: стандартная утилита физической проверки chdbfl.exe не находит ошибок в данном случае, поскольку физическая целостность страниц файла 1Cv8.1CD не нарушена — сбой носит исключительно логический характер несоответствия метаданных таблицы.
Рассмотрим самый щадящий и безопасный способ, не требующий прямого вмешательства в структуру базы данных. Поскольку имя проблемного файла содержит GUID пользователя, мы можем сбросить настройки через интерфейс системы:
1С:Предприятие под учетной записью с правами администратора. Запуск можно выполнить как на платформе 8.2, так и на платформе 8.3 (ошибка проявляется только при попытке создать .dt).Files, после чего выгрузка в .dt пройдет без ошибок.Если база данных развернута в клиент-серверном варианте (или была предварительно загружена в SQL через платформу 8.2), исправление можно выполнить прямым запросом к СУБД. Проанализируем два варианта работы с таблицей dbo.Files.
Первый вариант — корректировка поля размера без удаления самих настроек. Платформа ожидает нулевое значение длины, поэтому выполним команду:
UPDATE [dbo].[Files]
SET [DataSize] = 0
WHERE [FileName] = '071523a4-516f-4fce-ba4b-0d11ab7a1893.pfl';
Второй вариант — полное удаление поврежденной строки настроек. Так как файл .pfl хранит лишь пользовательские предпочтения интерфейса, его удаление полностью безопасно:
DELETE FROM [dbo].[Files]
WHERE [FileName] = '071523a4-516f-4fce-ba4b-0d11ab7a1893.pfl';
После выполнения одной из указанных команд выгрузка базы данных в файл .dt на платформе 8.3 выполняется штатно.
Если информационная база файловая, а возможности подключить ее к SQL нет, разберем альтернативные пути решения:
.dt не является единственным способом миграции на новую платформу. Файл 1Cv8.1CD можно скопировать напрямую. При открытии файловой базы платформой 8.3 таблица Files не подвергается той строгой валидации, которая встроена в алгоритм создания .dt. База успешно сконвертируется и продолжит работу.Tool_1CD) позволяют просмотреть структуру таблицы Files, найти проблемную запись по имени файла и вручную скорректировать значение поля DATASIZE на требуемое системой значение 0.