При работе с файловыми базами данных 1С (формат .1CD) администраторы часто сталкиваются с необходимостью изменения внутреннего формата базы. Это может быть связано как с переходом на более современные версии платформы (например, с 8.2.14 на 8.3.8 и выше), так и с необходимостью обратной конвертации («отката») для обеспечения совместимости со старыми версиями платформы. Для этих целей используется специализированная системная утилита cnvdbfl.exe. В этой статье мы подробно разберем, как работает этот инструмент, какие риски существуют при конвертации и как гарантировать сохранность данных.
Утилита cnvdbfl.exe входит в стандартный комплект поставки платформы 1С:Предприятие и обычно располагается в каталоге bin установленной версии (например, C:\Program Files\1cv8\8.3.x.x\bin\). Ее основная задача — преобразование структуры файла .1CD под требования конкретной версии платформы или изменение размера страницы базы данных.
Проанализируем основные сценарии использования:
Выясним, происходит ли потеря данных при конвертации из формата 8.3 в 8.2. Главное технологическое различие между этими форматами заключается в способе адресации данных внутри файла. В формате 8.2.14 используется 32-битная адресация, которая накладывает жесткое ограничение: размер любой внутренней таблицы базы данных (включая индексы) не может превышать 4 Гб.
Рассмотрим ситуацию: в вашей базе формата 8.3 есть крупный регистр сведений или таблица движений запасов, объем которой составляет 5 Гб. Что произойдет при попытке конвертации в 8.2? Утилита cnvdbfl.exe не станет «обрезать» лишние данные. Вместо этого процесс прервется с ошибкой «Превышен максимальный размер таблицы». Таким образом, искажения данных не будет — вы просто не сможете завершить конвертацию, пока не уменьшите размер таблиц (например, путем свертки базы или удаления части истории).
Разберем понятие размера страницы. Формат 8.3.8 поддерживает страницы размером от 4096 до 65536 байт. Формат 8.2.14 жестко ограничен размером страницы в 4096 байт. При конвертации «вниз» утилита обязана привести все данные к меньшему размеру страницы.
Проанализируем последствия этого процесса:
.1CD может измениться. Это не означает потерю данных, а является следствием более или менее плотной упаковки записей в страницы меньшего размера.Чтобы избежать неприятных сюрпризов, рекомендуем придерживаться следующей последовательности действий при работе с cnvdbfl.exe:
Шаг 1. Создание резервной копии. Это обязательный этап. Конвертация — это низкоуровневая операция с файловой системой. Любой сбой питания или программная ошибка в процессе могут привести к необратимому повреждению файла .1CD.
Шаг 2. Проверка физической целостности. Перед запуском cnvdbfl.exe необходимо убедиться, что исходная база не содержит ошибок. Используйте утилиту chdbfl.exe (проверка и восстановление файловых баз). Если в базе есть логические несоответствия, конвертация может их усугубить.
Шаг 3. Запуск конвертации. Утилита не имеет графического интерфейса, поэтому работа с ней ведется через командную строку. Рассмотрим пример команды для перевода базы в формат 8.2.14 со страницей 4096 байт:
cnvdbfl.exe -f "C:\MyBase\1Cv8.1CD" -p 4096 -v 8.2.14
Здесь параметры означают следующее:
-f: полный путь к файлу базы данных;-p: целевой размер страницы;-v: целевая версия формата (8.2.14 или 8.3.8).Шаг 4. Проверка результатов. После успешного завершения (утилита должна сообщить об окончании процесса без ошибок) необходимо запустить базу в режиме Конфигуратора и выполнить процедуру «Тестирование и исправление» (ТиИ). Особое внимание уделите пунктам «Реиндексация таблиц» и «Пересчет итогов».
Посмотрим на ситуацию с итогами: при смене формата индексы и итоги перестраиваются заново. Если в исходной базе были «битые» итоги, то после конвертации цифры в отчетах могут измениться. Это не является потерей данных, а напротив, представляет собой исправление старых ошибок учета.
Для окончательной уверенности в сохранности информации рекомендуется выполнить сверку ключевых отчетов до и после конвертации. Проанализируем наиболее эффективный метод:
Выясним, есть ли риски для строк неограниченной длины и двоичных данных (хранилищ значений). В форматах 8.2 и 8.3 механизмы хранения таких данных несколько отличаются. При конвертации очень больших объемов (терабайты картинок или сканов внутри .1CD) утилита cnvdbfl.exe может потреблять значительный объем оперативной памяти. Если вы используете 32-битную версию утилиты на базе с огромным количеством блоб-полей, возможна ошибка Out of memory. В этом случае рекомендуется выполнять конвертацию на 64-битной операционной системе с использованием 64-битной версии платформы 1С.
Подводя итог, можно утверждать: утилита cnvdbfl.exe является надежным инструментом, и сама по себе она не искажает данные. Основной риск при «откате» с 8.3 на 8.2 — это невозможность завершить процесс из-за превышения лимита 4 Гб на таблицу. Если же процесс завершился штатно, данные останутся в целостности, а процедура тестирования и исправления поможет окончательно привести логическую структуру базы в порядок.