При переносе информационных баз 1С между серверами специалисты часто сталкиваются со следующей проблемой. Выгрузка базы данных в формат .dt выполняется без каких-либо ошибок на более новой версии платформы (например, 8.3.18). Однако при попытке загрузить этот файл на сервере или локальном компьютере с установленной платформой более ранней ветки (например, 8.3.17 или 8.3.16) система выдает критический сбой: «Ошибка формата потока». При этом даже прямой перенос файла базы данных 1Cv8.1CD (в файловом варианте) приводит к аналогичной ошибке при попытке открыть его на старой платформе.
В этой статье мы подробно разберем причины возникновения данной ошибки, выясним, почему режим совместимости конфигурации не всегда спасает от этой проблемы, и рассмотрим эффективные практические методы обхода этого ограничения для успешного даунгрейда платформы.
Для того чтобы понять природу этой ошибки, проанализируем внутреннее устройство хранения данных 1С. Вопреки распространенному мнению, режим совместимости конфигурации (свойство РежимСовместимости) влияет преимущественно на поведение программного кода, работу запросов и доступность тех или иных объектов метаданных. Он не управляет напрямую физической структурой хранения таблиц самой СУБД (файловой или клиент-серверной).
При переходе на новые ветки платформы (такие как 8.3.18 и выше) разработчики фирмы «1С» вносят изменения во внутреннюю структуру служебных таблиц базы данных. Рассмотрим ключевые факторы совместимости:
CONFIG, FILES и PARAMS. При первом же запуске базы на новой платформе или при создании новой базы в СУБД записываются служебные файлы настроек в обновленном формате (включая информацию о лицензировании и региональных настройках). Старая платформа 8.3.17 при чтении этих данных не может их распознать и десериализовать, генерируя ошибку формата потока.Асинх, Ждать) и тип данных Обещание. Если модули конфигурации компилировались в новой платформе с использованием этих механизмов, старый компилятор платформы 8.3.17 не сможет прочесть двоичный код модулей в таблице конфигурации.Рассмотрим подробнее четыре рабочих метода решения этой проблемы.
Самым надежным и простым способом решения проблемы является приведение версий платформы к единому знаменателю на всех узлах. Если база данных у клиента или на основном сервере работает под управлением платформы 8.3.18, вам необходимо установить у себя сборку той же ветки.
При этом важно избегать баг-релизов. Например, сборка 8.3.18.1208 признана проблемной и содержит множество внутренних ошибок СУБД. Рекомендуется использовать проверенные и стабильные версии платформы (например, 8.3.18.1289, 8.3.18.1483 или выше). После обновления вашей локальной платформы до версии клиента файл .dt загрузится без каких-либо ошибок.
Если вам обязательно нужно запустить базу на платформе 8.3.17, а под рукой есть только файл 1Cv8.1CD, обновленный в 8.3.18, можно прибегнуть к очистке служебных таблиц, в которых хранятся несовместимые настройки. Выполним этот процесс по шагам:
1Cv8.1CD перед началом любых манипуляций.cnvdbfl.exe, которая находится в каталоге установки вашей платформы 8.3.17 (в папке bin). Запустите команду для конвертации базы в формат 8.2.14, выполнив в командной строке:
"C:\Program Files\1cv8\8.3.17.1851\bin\cnvdbfl.exe" -c -f 8.2.14 "C:\PathToDb\1Cv8.1CD"
Tool_1CD версии 0.3.0 или выше).CONFIG найдите строку, где имя файла name равно versions, и удалите ее.PARAMS удалите запись с именем locale.inf.FILES найдите и удалите все системные файлы настроек пользователей, которые заканчиваются на расширение .pfl (например, файлы настроек интерфейса ib.pfl).Если у вас есть доступ к рабочей базе на платформе 8.3.18 и вам необходимо сделать выгрузку, которую гарантированно сможет прочесть старая платформа 8.3.17, выполните предварительную подготовку:
РежимСовместимости. Установите его в значение «Версия 8.3.17» или ниже.F7).Полученный файл .dt должен успешно развернуться на платформе 8.3.17, так как из него будут удалены все метаданные, использующие новые возможности формата платформы 8.3.18.
В случаях, когда структуры таблиц СУБД повреждены или кардинально несовместимы, лучшим решением является перенос чистых данных без переноса служебных таблиц платформы. Выполним этот процесс по шагам:
.cf.ВыгрузкаЗагрузкаДанныхXML.epf (ее можно найти на диске ИТС или в каталоге шаблонов конфигураций).data.xml..cf (меню Конфигурация — Загрузить конфигурацию из файла...). Примените изменения по кнопке F7.ВыгрузкаЗагрузкаДанныхXML.epf загрузите файл data.xml.Данный метод полностью исключает перенос поврежденных или несовместимых системных файлов настроек платформ, так как они инициализируются заново самой платформой 8.3.17 при создании базы.