Перенос информационной базы из клиент-серверного варианта в файловый — задача, с которой часто сталкиваются разработчики при необходимости протестировать функционал на локальном компьютере, где не установлен полнофункциональный SQL-сервер. Однако этот процесс не всегда проходит гладко. Рассмотрим подробно, как правильно выполнить этот переход и что делать, если система выдает критические ошибки СУБД.
Для начала разберем стандартную процедуру. Напрямую файл бэкапа SQL (с расширением .bak) загрузить в файловую базу 1С (формат .1CD) невозможно. Проанализируем необходимую последовательность действий:
.bak. Если у вас нет доступа к рабочему серверу, можно установить бесплатную версию SQL Server Express на локальный ПК..dt. Для автоматизации этого этапа на сервере можно использовать резервное копирование базы в файл выгрузки dt без необходимости закрытия активных сессий пользователей..dt.В процессе загрузки .dt в файловый вариант часто возникает ошибка: Длина ключа индекса превышает максимально допустимую. Выясним причину этой ситуации. Файловая СУБД 1С имеет жесткое ограничение на размер индекса (обычно до 2000 байт), в то время как SQL-серверы позволяют создавать гораздо более «тяжелые» индексы.
Посмотрим на пример ошибки из практики: _InfoR24456_ByDims_SSRRRSTRSRLSNRSSRTSRTSRSSRTSNRTSNSTT. Префикс _InfoR однозначно указывает на то, что проблемным объектом является Регистр сведений. Суффикс _ByDims говорит о том, что индекс строится по измерениям регистра. Большое количество полей в индексе (в примере их более 30) делает невозможным создание таблицы в файловом формате.
Для решения проблемы нам нужно сопоставить техническое имя таблицы в СУБД (например, _InfoR24456) с именем объекта в конфигурации 1С. Рассмотрим, как это сделать программно. Разберем код, который поможет нам идентифицировать «виновника»:
СтруктураХранения = ПолучитьСтруктуруХраненияБазыДанных();
Для каждого Таблица Из СтруктураХранения Цикл
Если Таблица.ИмяТаблицыХранения = "_InfoR24456" Тогда
Сообщить("Проблемный объект метаданных: " + Таблица.ИмяТаблицы);
Прервать;
КонецЕсли;
КонецЦикла;
Этот фрагмент кода нужно запустить в консоли кода или во внешней обработке в той базе, которая еще развернута на SQL — для этого подойдут инструменты разработчика и консоль анализа метаданных. Метод ПолучитьСтруктуруХраненияБазыДанных() возвращает полное описание соответствия объектов 1С и таблиц в СУБД.
Проанализируем ситуацию: если мы обнаружили, что какой-то регистр содержит избыточное количество измерений, у нас есть три пути решения задачи:
Ресурсы или Реквизиты. Это существенно сократит длину индекса..dt файла. Без данных индекс не будет вызывать ошибку при создании структуры..dt, можно воспользоваться специализированными инструментами. Для этих целей отлично подойдет адаптивная выгрузка и загрузка данных XML (удобно через универсальный перенос и миграция данных между базами 1С), которая позволяет гибко настраивать отборы и обходить ограничения. Также можно применить выгрузку данных XML с дополнительными опциями для более точного поиска и фильтрации объектов.
Если задача требует простоты, стоит обратить внимание на простой менеджер данных (simple data manager), а в случаях работы с конфиденциальной информацией пригодится универсальная выгрузка с возможностью шифрования. Кроме того, подобный подход часто спасает, когда необходим перенос базы из доработанной конфигурации в типовую локальную версию без доступа к конфигуратору.
Рассмотрим стандартный алгоритм XML-переноса:При создании файловой базы для разворачивания больших объемов данных, мы рекомендуем убедиться, что используется современный формат .1CD. Начиная с версии платформы 8.3.8, поддерживается формат с размером страницы 8192 байта и выше, что позволяет таблицам преодолевать старый лимит в 4 Гб. Однако помните, что это увеличивает лимит на общий размер таблицы, но не снимает архитектурные ограничения на длину индекса отдельной строки.
Важный момент: если вы планируете работать с базой в файловом режиме постоянно, и она находится на грани лимитов, рассмотрите использование 64-битной версии сервера 1С или автономного сервера, так как стандартная 32-битная платформа может испытывать нехватку оперативной памяти при работе с очень широкими таблицами.
Таким образом, мы выяснили, что переход от клиент-серверной модели к файловой требует не только простого копирования данных, но и внимательного анализа структуры метаданных на предмет совместимости ограничений различных систем управления базами данных.