Какой платформой и каким релизом сделана выгрузка .dt

· 10 мин

Содержание

Надёжно узнать версию 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 в текстовом редакторе

Самый быстрый способ — открыть начало файла и поискать номер платформы. Он занимает минуту, но работает не на каждом файле.

  1. Скопируйте dt во временную папку, чтобы случайно не сохранить изменения в оригинале.
  2. Откройте копию в редакторе, который не падает на больших файлах: Notepad++, AkelPad, Far Manager (F3 — просмотр).
  3. Включите поиск (Ctrl+F) и ищите 8.3. и 8.2..
  4. Если нашлась строка из четырёх чисел через точку (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.

  1. Откройте копию dt в HxD.
  2. Вызовите поиск (Ctrl+F), вкладка текстового поиска.
  3. Ищите 8.3. дважды: с кодировкой ANSI и с Unicode (UTF-16 LE).
  4. Смотрите первые мегабайты файла: служебные данные лежат в начале, дальше идут сжатые блоки.

Из командной строки то же самое делает утилита 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. В окне запуска 1С нажмите Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации.
  2. Укажите отдельную папку, например C:\Temp\dtcheck. Не используйте каталог рабочей базы.
  3. Откройте новую базу в режиме Конфигуратора.
  4. Выберите Администрирование → Загрузить информационную базу… и укажите dt.
  5. Подтвердите замену данных: база пустая, терять нечего.
  6. После загрузки откройте Конфигурация → Открыть конфигурацию, щёлкните правой кнопкой по корню дерева и выберите Свойства.
  7. В палитре свойств смотрите поля Версия (релиз конфигурации) и Режим совместимости.

Загрузка 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, потому что данные в выгрузке сжаты. Закладывайте запас минимум в 3–5 объёмов файла выгрузки.
Как узнать, какая платформа стоит у меня, чтобы сравнить с номером из dt?
В Конфигураторе или в окне программы откройте Справка → О программе. Номер платформы указан в первых строках окна. Сравнивайте все четыре числа: 8.3.24.1548 и 8.3.24.1691 — разные сборки.
Можно ли проверить dt на Linux?
Да. Поиск номера через strings и grep работает в любом дистрибутиве. Для точной проверки подойдёт платформа 1С для Linux: команды 1cv8 с ключами /RestoreIB и /DumpConfigToFiles там те же.