Какой платформой и каким релизом сделана выгрузка .dt
Содержание
Надёжно узнать версию
1С по файлу dt можно одним способом: загрузить выгрузку в пустую тестовую базу и посмотреть свойства конфигурации. Быстрая прикидка без загрузки — поиск строки вида 8.3.xx.xxxx в самом файле через текстовый или HEX-редактор, но она даёт подсказку, а не гарантию.
Файл выгрузки информационной базы (.dt) не имеет поля «версия», которое показывает Проводник. Поэтому ниже — от быстрых способов к точным, плюс скрипт для проверки сразу десятков файлов.
Что значит «версия 1С» применительно к выгрузке dt
Когда спрашивают про версию по файлу выгрузки, обычно имеют в виду одно из трёх. Это разные числа, и узнаются они по-разному.
| Что ищем | Пример | Зачем нужно | Где видно |
|---|---|---|---|
| 🧩 Версия платформы, которой сделана выгрузка | 8.3.24.1548 | Понять, загрузится ли dt на вашей платформе | Косвенно в файле; точно — по ошибке при загрузке или у автора выгрузки |
| 📦 Релиз конфигурации | 3.0.150.30 | Понять, какие обновления ставить дальше | Свойства конфигурации после загрузки |
| ⚙️ Режим совместимости | Версия 8.3.20 | Узнать минимальную платформу для работы базы | Свойства конфигурации после загрузки |
Формат dt закрытый и фирмой-разработчиком не документирован. Внутри — служебный заголовок и сжатые блоки: конфигурация, данные, служебные таблицы. Почти всё содержимое сжато, поэтому релиз конфигурации блокнотом не прочитать.
Если исходная база доступна, проще всего открыть её и посмотреть Справка → О программе: там видны и платформа, и конфигурация с номером релиза. Остальные способы нужны, когда на руках только сам файл.
Источники подсказок рядом с файлом
Прежде чем открывать dt, посмотрите, что лежит рядом:
- 📁 Имя файла. Администраторы часто пишут релиз в имени:
buh_3.0.150_2025-03-01.dt. - 📄 Манифест шаблона. Демобазы в каталоге шаблонов лежат вместе с файлом
1cv8.mft— это обычный текст, где указаны название и версия конфигурации. - 🗂️ Журнал копирования. Если выгрузку делал скрипт, версия платформы есть в пути к
1cv8.exe, которым он запускался.
Способ 1. Смотрим dt в текстовом редакторе
Самый быстрый способ — открыть начало файла и поискать номер платформы. Он занимает минуту, но работает не на каждом файле.
- Скопируйте dt во временную папку, чтобы случайно не сохранить изменения в оригинале.
- Откройте копию в редакторе, который не падает на больших файлах: Notepad++, AkelPad, Far Manager (
F3— просмотр). - Включите поиск (
Ctrl+F) и ищите8.3.и8.2.. - Если нашлась строка из четырёх чисел через точку (
8.3.22.1923), запишите её как вероятную версию платформы.
Обычный «Блокнот» Windows на файле в несколько гигабайт зависнет. Для крупных выгрузок берите просмотрщик Far Manager: он читает файл кусками и не грузит его в память целиком.
Не сохраняйте dt после просмотра в редакторе. Даже случайное «Сохранить» с другой кодировкой испортит выгрузку, и база из неё уже не загрузится.
Почему находится не всегда
Строки в файле могут быть записаны в однобайтной кодировке или в UTF-16, где между символами стоят нулевые байты. Во втором случае поиск 8.3. по обычному тексту ничего не даст. В Notepad++ попробуйте сменить кодировку отображения на UTF-16 LE или ищите в HEX-режиме, как описано ниже.
Способ 2. HEX-редактор и поиск по шаблону номера
HEX-редактор показывает байты как есть и ищет и текст, и последовательности байтов. Подойдут HxD, WinHex, встроенный HEX-режим Far Manager.
- Откройте копию dt в HxD.
- Вызовите поиск (
Ctrl+F), вкладка текстового поиска. - Ищите
8.3.дважды: с кодировкой ANSI и с Unicode (UTF-16 LE). - Смотрите первые мегабайты файла: служебные данные лежат в начале, дальше идут сжатые блоки.
Из командной строки то же самое делает утилита strings (входит в набор Sysinternals для Windows, есть в любом Linux):
# Linux: ищем номера вида 8.3.xx.xxxx в однобайтных и UTF-16 строках
strings -n 8 base.dt | grep -Eo '8\.[23]\.[0-9]+\.[0-9]+' | sort | uniq -c
strings -n 8 -e l base.dt | grep -Eo '8\.[23]\.[0-9]+\.[0-9]+' | sort | uniq -c
В Windows без сторонних утилит поможет PowerShell. Скрипт читает только первые 4 МБ, поэтому не тормозит на больших файлах:
$path = "D:\Backup\base.dt"
$fs = [System.IO.File]::OpenRead($path)
$buf = New-Object byte[] (4MB)
$n = $fs.Read($buf, 0, $buf.Length); $fs.Close()
$ascii = [System.Text.Encoding]::ASCII.GetString($buf, 0, $n)
$utf16 = [System.Text.Encoding]::Unicode.GetString($buf, 0, $n)
($ascii + $utf16 | Select-String -Pattern '8\.[23]\.\d+\.\d+' -AllMatches).Matches.Value |
Sort-Object -Unique
Как читать результат
- ✅ Одно число — скорее всего, это и есть платформа, которой делали выгрузку.
- 🔀 Несколько разных чисел — часть может быть случайным совпадением в сжатых данных или строкой из самой конфигурации. Ориентируйтесь на ту, что ближе к началу файла.
- ❌ Пусто — эвристика не сработала, переходите к загрузке в тестовую базу.
Номер, найденный поиском, — гипотеза. Перед загрузкой в рабочую базу проверяйте его надёжным способом.
Способ 3. Загрузка выгрузки dt в пустую базу через Конфигуратор
Это единственный способ, который даёт все три числа точно. Нужна платформа не ниже той, которой сделана выгрузка, и свободное место на диске с запасом в несколько объёмов dt.
- В окне запуска 1С нажмите
Добавить→Создание новой информационной базы→Создание информационной базы без конфигурации. - Укажите отдельную папку, например
C:\Temp\dtcheck. Не используйте каталог рабочей базы. - Откройте новую базу в режиме Конфигуратора.
- Выберите
Администрирование → Загрузить информационную базу…и укажите dt. - Подтвердите замену данных: база пустая, терять нечего.
- После загрузки откройте
Конфигурация → Открыть конфигурацию, щёлкните правой кнопкой по корню дерева и выберитеСвойства. - В палитре свойств смотрите поля
Версия(релиз конфигурации) иРежим совместимости.
Загрузка dt полностью заменяет данные базы, в которую грузите. Перепутали базу в списке — потеряли данные. Проверяйте путь в заголовке окна Конфигуратора до нажатия кнопки.
Загрузка требует монопольного доступа к базе. Для пустой тестовой базы это не проблема: кроме вас, в ней никого нет.
Если загрузка не прошла
Сообщение о несовместимости формата или версии при загрузке — тоже ответ. Оно значит, что выгрузку сделали платформой с номером выше вашего. Поставьте более свежую платформу рядом с текущей (версии ставятся в разные папки и друг другу не мешают) и повторите.
Если база загрузилась, но не открывается в режиме «Предприятие» с требованием обновить платформу — смотрите Режим совместимости. Платформа должна иметь номер не ниже указанного там.
Способ 4. Версия конфигурации внутри dt через командную строку 1cv8
Те же действия можно выполнить без окон — через пакетный режим 1cv8.exe. Это удобно на сервере и в скриптах. Схема такая: создать пустую файловую базу
, восстановить в неё dt, выгрузить конфигурацию в XML и прочитать номер версии из Configuration.xml.
@echo off
set V8="C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe"
set IB=C:\Temp\dtcheck
set DT=D:\Backup\base.dt
%V8% CREATEINFOBASE File="%IB%" /Out "C:\Temp\create.log"
%V8% DESIGNER /F "%IB%" /RestoreIB "%DT%" /DisableStartupDialogs /Out "C:\Temp\restore.log"
%V8% DESIGNER /F "%IB%" /DumpConfigToFiles "C:\Temp\dtcheck_xml" /DisableStartupDialogs /Out "C:\Temp\dump.log"
Что делают ключи:
CREATEINFOBASE File=— создаёт пустую файловую базу./RestoreIB— загружает в неё файл выгрузки, как пункт меню «Загрузить информационную базу»./DumpConfigToFiles— выгружает конфигурацию в XML-файлы./Out— пишет журнал. Если что-то пошло не так, причина будет в нём.
После выгрузки откройте C:\Temp\dtcheck_xml\Configuration.xml. Нужные строки выглядят так:
<Name>БухгалтерияПредприятия</Name>
<Version>3.0.150.30</Version>
<CompatibilityMode>Version8_3_24</CompatibilityMode>
Не путайте их с атрибутом version у корневого элемента в первой строке файла: это версия формата XML-выгрузки, к релизу конфигурации она отношения не имеет.
Выгрузка в XML на типовой конфигурации идёт несколько минут и создаёт десятки тысяч файлов. Для одной проверки это терпимо; для регулярной лучше вариант с Конфигуратором или скрипт из следующего раздела, который сразу удаляет мусор.
В свежих платформах есть автономная утилита ibcmd, которая умеет восстанавливать базу и выгружать конфигурацию без запуска Конфигуратора. Набор команд у неё меняется от версии к версии, поэтому точный синтаксис смотрите в ibcmd help на своей платформе.
Как проверить версии у множества dt-файлов сразу
Когда в архиве сотня выгрузок и надо понять, какие из них от какого релиза, вручную это делать долго. Есть два уровня автоматизации.
Быстрая сортировка по номеру платформы
Скрипт PowerShell проходит по папке, читает начало каждого файла и собирает найденные номера в CSV. Точность та же, что у способа 2, зато сто файлов обрабатываются за секунды.
$dir = "D:\Backup"
$result = foreach ($f in Get-ChildItem $dir -Filter *.dt) {
$fs = [System.IO.File]::OpenRead($f.FullName)
$buf = New-Object byte[] (4MB)
$n = $fs.Read($buf, 0, $buf.Length); $fs.Close()
$text = [System.Text.Encoding]::ASCII.GetString($buf, 0, $n) +
[System.Text.Encoding]::Unicode.GetString($buf, 0, $n)
$found = ([regex]::Matches($text, '8\.[23]\.\d+\.\d+') | ForEach-Object Value | Sort-Object -Unique) -join '; '
[pscustomobject]@{ File = $f.Name; SizeMB = [math]::Round($f.Length/1MB); Platform = $found }
}
$result | Export-Csv "$dir\dt_versions.csv" -NoTypeInformation -Encoding UTF8
Точная проверка релиза конфигурации
Для точного ответа по каждому файлу обёрните команды из способа 4 в цикл. Каждая итерация создаёт временную базу, грузит dt, выгружает XML, достаёт версию и всё удаляет.
$v8 = "C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe"
$tmp = "C:\Temp\dtcheck"
$out = foreach ($f in Get-ChildItem "D:\Backup" -Filter *.dt) {
Remove-Item "$tmp*" -Recurse -Force -ErrorAction SilentlyContinue
& $v8 CREATEINFOBASE "File=`"$tmp`"" /Out "$tmp.log" | Out-Null
& $v8 DESIGNER /F $tmp /RestoreIB $f.FullName /DisableStartupDialogs /Out "$tmp.log" | Out-Null
& $v8 DESIGNER /F $tmp /DumpConfigToFiles "${tmp}_xml" /DisableStartupDialogs /Out "$tmp.log" | Out-Null
$cfgFile = "${tmp}_xml\Configuration.xml"
if (Test-Path $cfgFile) {
[xml]$x = Get-Content $cfgFile -Encoding UTF8
$p = $x.MetaDataObject.Configuration.Properties
[pscustomobject]@{ File = $f.Name; Config = $p.Name; Version = $p.Version; Compat = $p.CompatibilityMode }
} else {
[pscustomobject]@{ File = $f.Name; Config = "ошибка загрузки"; Version = ""; Compat = "" }
}
}
$out | Export-Csv "D:\Backup\dt_releases.csv" -NoTypeInformation -Encoding UTF8
| Out-Null здесь не для красоты: так PowerShell ждёт завершения 1cv8.exe, прежде чем перейти к следующей команде. Без него процессы запустятся параллельно и подерутся за одну базу.
Запускайте пакетную проверку на отдельной машине или ночью. Загрузка гигабайтной выгрузки нагружает диск и процессор, а пользователи рабочих баз на том же сервере почувствуют это сразу.
Частые ошибки при определении версии по файлу выгрузки
- 🔁 Путают версию платформы и релиз конфигурации.
8.3.24.1548— это платформа.3.0.150.30— это конфигурация. Обновления конфигурации подбирают по второму числу. - 📏 Путают режим совместимости с платформой выгрузки. Базу с режимом
8.3.20могли выгрузить платформой8.3.25. Режим совместимости говорит о минимальной платформе для работы, а не о том, чем делали dt. - 💾 Грузят проверочный dt в рабочую базу. Загрузка затирает все данные. Только пустая база в отдельной папке.
- 🗜️ Пробуют распаковать dt архиватором. 7-Zip и WinRAR этот формат не открывают как архив. Внутренние блоки сжаты, но контейнер у dt свой.
- 🔤 Доверяют первому найденному номеру. В данных конфигурации тоже бывают строки вида
8.3.x.x— например, в текстах про требования к платформе. Номер из поиска сверяйте загрузкой. - 🧾 Путают dt и cf. Файл
.cfсодержит только конфигурацию, без данных. Его грузят в пустую базу черезКонфигурация → Загрузить конфигурацию из файла…, а не через «Загрузить информационную базу».
Частые вопросы
Можно ли узнать релиз конфигурации из dt, не загружая его?
Загрузится ли dt, сделанный на 8.3.25, в платформу 8.3.23?
Сколько места нужно для проверочной загрузки?
Как узнать, какая платформа стоит у меня, чтобы сравнить с номером из dt?
Справка → О программе. Номер платформы указан в первых строках окна. Сравнивайте все четыре числа: 8.3.24.1548 и 8.3.24.1691 — разные сборки.Можно ли проверить dt на Linux?
strings и grep работает в любом дистрибутиве. Для точной проверки подойдёт платформа 1С для Linux: команды 1cv8 с ключами /RestoreIB и /DumpConfigToFiles там те же.