Формат файлов выгрузки dt

Соответствие версий схем XML и платформ.

При открытии обработок сразу из xml файлов возможна ошибка

Неизвестная версия формата <ВерсияФормата> загружаемого файла D:\git\e1c_tests_erp\dataprocessors\CheckAccountingQueries.xml

Формат файлов выгрузки dt

Помимо этого xml файлы изменяют свою версию схемы при сохранении в более новых версиях платформы, что может быть не желательно при работе в git, так как версия сборщика в epf может оказаться ниже вашей.


C:\Program Files\1cv8\8.3.14.2095\bin>1cv8.exe DESIGNER /F D:\bases1C\empty8.3.14.2095 /LoadExternalDataProcessorOrReportFromFiles D:\git\e1c_tests_erp\dataprocessors\CheckAccountingQueries.xml D:\git\e1c_tests_erp\e1c_tests_smoke\epf\CheckAccountingQueries.epf /out log.txt

Загрузка внешней обработки или отчета из XML.

Корневой файл выгрузки: D:\git\e1c_tests_erp\dataprocessors\CheckAccountingQueries.xml

Целевой каталог или файл: D:\git\e1c_tests_erp\e1c_tests_smoke\epf\CheckAccountingQueries.epf

Ошибка загрузки документа.

Неизвестная версия формата 2.9 загружаемого файла D:\git\e1c_tests_erp\dataprocessors\CheckAccountingQueries.xml


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

Далее цитата из ИТС: https://its.1c.ru/db/v8324doc#bookmark:dev:TI000001713

2. Версии формата выгрузки

Файлы выгрузки версионируются. Номер версии формата выгрузки, в зависимости от номера версии системы 1С:Предприятие, приводятся в следующей таблице.

2.2 до версии 8.3.9.1850 включительно
2.3 начиная с версии 8.3.9.2033

Явное указание номера версии в самих файлах выгрузки начинается с версии 2.0 (выгрузка из платформы версии 8.3.7 и старше). Если в файлах выгрузки отсутствует явное указание номера версии, считается, что эта выгрузка имеет номер версии 1.0.

## Формат файла выгрузки данных

Версия формата единая для всех объектов конфигурации, которые могут быть выгружены в файлы. Версия формата записывается в корневые XML-файлы объектов конфигурации, а также в корневые XML-файлы некоторых подчиненных объектов конфигурации. Файлы выгрузки, имеющие формат отличный от XML, не содержат внутри себя указания на версию формат выгрузки.

Выгрузка всегда выполняется в формате текущей версии платформы 1С:Предприятие (той, из которой выполняется выгрузка).

Загрузка выполняется успешно только в том случае, если версия загружаемых файлов меньше или равна версии платформы 1С:Предприятие, с помощью которой загружаются файлы выгрузки.

## Версия платформы и редактирование файлов

Теперь мы знаем, в какой версии платформы редактировать файлы, чтобы случайно не поменять версию схемы. Хотя это и довольно странное поведение платформы, ведь epfку, созданную в 8.3.23 - я могу открыть платформой 8.3.20, а xmlку - нет.

_Статья представляет собой шпаргалку для тех, кто, как и я, не смог найти эту информацию через поисковик._

## Описание формата файлов выгрузки DT

**Описание формата файлов выгрузки DT может стать основой для разработки средств восстановления данных**

Так получилось, что форматы файловых баз 1CD и файлов конфигураций CF достаточно подробно описаны, и сделано множество утилит для работы с ними. Разумеется, для рабочих целей их не используют, но иногда они незаменимы для восстановления поврежденных баз. С помощью Tool1CD уважаемого awa (светлая ему память) было восстановлено бесчисленное количество баз.

А вот описания формата DT мне не попадалось, и утилит работы с ним было пересчитать по пальцам одной руки фрезеровщика со стажем. Надеюсь, эта статья исправит положение и станет основой для новых разработок. Сразу предупреждаю - описание не исчерпывающее, и 1С периодически вносит изменения и дополнения, да и не все секреты получится описать в одной статье.

Не секрет, что файл содержит заголовок 1CIBDmpF (очевидно сокращение от 1C Informational Base Dump File - файл выгрузки информационной базы 1С, внезапно), ещё один символ - 1, 2 или 3 - версия формата, а дальше идут сжатые алгоритмом Deflate данные.

## Описание формата файла DT

Для старого формата 1, который использовался в платформе 8.0 и 8.1, после распаковки структура данных была почти очевидна. Распаковка давала любимую 1С скобочную запись с описанием конфигурации и данных.

Форматы 2 (от платформы 8.2) и 3 (платформа 8.3) по сути повторяют эту идею, но распаковка даёт странное бинарное представление данных. Это - бинарное представление того скобочного формата, которое использовалось в версии 1.

Разобраться с этим бинарным форматом мне помогли исходники Tool1CD от awa. В архиве оказалась заготовка конвертора из бинарного представления обратно в текстовый скобочный.

Формат скобочной записи в бинарном виде

Итак. Этот бинарный вид – эквивалент скомпилированной скобочной записи. Далее я буду делать вид что всё конвертируется именно в текстовую скобочную запись, хотя есть все основания считать что это просто эквивалент, и 1С промежуточный текстовый формат при распаковке базы не использует.

Основные тэги и их обработка

Основа данных – байты-тэги, которые описывают формат следом идущих данных. Основных тэгов 32, с нумерацией от 0 до 0x1F, в младших 5 битах байта. Ещё есть 3 дополнительных тэга, не образующих отдельных байт, а представленные битами в байте-тэге, комбинируются с одним из базовых тэгов. Это бит 6 (0x20) – закрывающая скобка, закрытие списка, бит 8 (0x80) – запятая, разделитель значений в списке, и бит 7 (0x40) – открывающая скобка, начало списка. Обрабатываются они именно в этом порядке.

Про сертификаты:  Как проверить, действителен ли ваш COVID-сертификат - 07.06.2021, Sputnik Латвия

Обработка байта тэга

  1. Если в байте тэга установлен бит 6 – ставим закрывающую скобку
  2. Если в байте тэга установлен бит 8 – ставим запятую
  3. Если в байте тэга установлен бит 7 – ставим открывающую скобку
  4. Выделяем младшие 5 бит и обрабатываем тэг оттуда.

Таблица сопоставления байтов-тэгов

ТэгОписание
0x00NOP, отсутствие операции
0x01-0x0Aцифра 0-9, выводим цифру. 0x01 – выводим 0, 0x0A – выводим 9
0x0BБайт uint8. Надо считать следующий байт и вывести (как число)
0x0CМинус байт. Надо вывести знак минус и считать следующий байт как число
0x0DСлово (uint16). Надо считать следующее число из следующих 2 байт и вывести как число.
0x0EМинус слово. Аналогично предыдущему, только с минусом
0x0FДвойное слово uint32. Считать число из 4 байт и вывести
0x10Минус двойное слово. Аналогично, с минусом
0x11int64 – 8-байтовое число. Вероятно со знаком
0x12-0x14Неизвестно
0x15GUID. Считать 16 байт и вывести в формате: <uint32>-<uint16>-<uint16>-<uint8><uint8>-<uint8*6>
0x16Отмена кавычек. По умолчанию строки выводятся в двойных кавычках, но если перед строковым тэгом будет отмена кавычек – значение выводится без кавычек
0x17Юникод-строка (UTF-16), до 255 символов. Надо прочитать 1 байт длины, и прочитать указанное число двухбайтовых символов
0x18Юникод-строка (UTF-16), до 65535 символов. Длина указывается 2-байтовым числом
0x19Юникод-строка (UTF-16), до int64 символов. Длина указывается 8-байтовым числом
0x1AANSI-строка или двоичные данные, до 255 символов. Надо прочитать 1 байт длины, и прочитать указанное число символов
0x1BANSI-строка или двоичные данные до 65535 символов. Длина задаётся uint16 – двухбайтовое целое
0x1CANSI-строка или двоичные данные, до int64 символов. Длина задаётся uint64 – 8 байт
0x1D-0x1FНеизвестно

Утилита для командной строки

Эта утилита предназначена для работы с базой данных в формате конфигурации 1С. Она позволяет выполнять следующие команды:

  • -unpack: распаковывает сжатый поток данных
  • -dump: распаковывает и выводит текстовое представление в скобочной записи
  • -scan: проводит сканирование потока тегов на предмет ошибок

Распакованные данные

Результатом работы утилиты является список объектов. Первым элементом списка всегда идет строка с типом объекта. Вот некоторые из возможных типов объектов:

  • Folder: описывает служебные таблицы со структурой, аналогичной таблице Config. Вторым значением после Folder идет строковый параметр – имя служебной таблицы.
  • Database: содержит информацию о физической структуре таблиц базы данных и сами данные таблиц в порядке их следования.

Таблица Config и другие

В базе данных на платформе 8.3 добавлено поле PartNo для разделения больших объектов на части, однако при экспорте это поле не сохраняется и все данные склеиваются в один объект.

Описание таблиц базы данных

Каждая таблица описывается отдельным списком. Первым элементом является число 0, далее идет список объектов, описывающих структуру таблицы. Для некоторых значений типа B (binary) представление может распадаться на несколько частей, которые нужно склеивать.

Восстановление пользовательских данных

Описание таблиц пользовательских данных, таких как ExtensionsInfo, SystemSettings и другие, восстанавливаются из DBSchema – специального объекта, описывающего структуру базы данных.

Описание поля таблицы

Поля таблиц описываются с учетом их логического имени, признака наличия Null, списка типов и поля неопознанного назначения.


Формат файлов выгрузки dt

Формат файлов выгрузки dt

Описание типа содержит символ – код типа, длину поля, точность, имя таблицы на которую может ссылаться значение.

Если в длине поля установлен старший бит 0x80000000 – это поле переменной длины.

  • N – число.

  • R – ссылка. К имени добавляется суффикс RREF, фактически это тип B(16). Если отсутствует строка с описанием таблицы – то значение может ссылаться на различные объекты в базе, и физически создаётся дополнительное поле с суффиксами TREF (тип B(4)) для номера объекта на который идёт ссылка.

  • S – строка. Если длина 0 – это поле неограниченной длины (memo), которое в 1CD хранится в BLOBе

  • B – двоичные данные. Если длина 0 – в 1CD значение попадёт в BLOB. Если длина 16 – это ссылка.

  • L – логическое, true/false, 1/0

  • V – "версия" записи, физически в DT не присутствует.

  • T – Дата-время. Хранится в десятых долях количества миллисекунд от 00:00:00 01.01.0001

  • E – присутствует если поле составного типа, физически это B(1), добавляет префикс _TYPE, к остальным физическим полям добавляется суффикс _<КодТипа>, а ссылочные поля получают двойные суффиксы _RTREF и _RRREF

Про сертификаты:  ИНТЕРГАЗСЕРТ

Для подчиненных таблиц неявно добавляются поля _ИмяРодительскойТаблицы_IDRREF (R) и _KEYFIELD (B(4)), а так же поля-разделители.

Фактический состав полей предлагаю сверять с физической структурой базы в Tool1CD.

Описание индекса – имя, предположительно признак уникальности индекса, объект-список полей входящих в индекс (состав списка – число входящих полей и их имена), значения неопределенного назначения. Похоже что некоторые поля добавляются неявно, так же некоторые индексы тоже создаются неявно, т.е. их описание не присутствует в DBSchema.

Недавно мне на восстановление дали очень занятный файл выгрузки. Это была единственная копия базы, и она не загружалась с ошибкой формата потока. Оказалось – 1С при выгрузке записала немного мусора в область данных таблицы Config. Хотя сжатие данных было целым, что уже хорошо.

Обнаружилось это с помощью той утилиты в режиме dump

Смог базу вылечить, распаковав (unpack), в шестнадцатеричном редакторе вырезал поврежденный кусок, упаковал обратно, и выгрузка загрузилась. Повреждение конфигурации восстановил загрузив эталонную конфигурацию в базу.

Для выгрузки номенклатуры на мобильное устройство необходимо положить в папку «На терминал» файл «Номенклатура.csv» или «Номенклатура.xls», в зависимости от используемого формата файлов.

Формат для CSV имеет следующий вид:

Код;Артикул;Наименование;Штрихкод;Единица;Коэффициент;Характеристика номенклатуры;Остаток;

Цена;Алкоголь;Маркируется маркой;Код ЕГАИС;Крепость;Объем (л);Производитель/Импортёр

В шаблоне, через точку с запятой (без пробелов), перечисляются поля номенклатуры и упаковки, которые будем выгружать.

Поля для алкогольной продукции необходимы только при работе с алкоголем.

Для Excel формат обмена имеет аналогичную структуру.

Формат файлов выгрузки dt

Шаблон можно изменять или вообще создать свой, с колонками, которые необходимы для выгрузки.

Колонки для шаблона номенклатуры:

| | | |

| ———————————————————————————– | ———————————————— |

| | | |

| | Содержит артикул товара, что позволяет искать товар на терминале по его артикулу | |

| Наименование | |

| Штрихкод | Штрихкод товара (обычно 13). |

| | Единицы измерения (например, бут., шт.) | |

| | | |

| | Характеристика товара (если ведется учет с характеристиками) | |

| | Количество товара на складе | |

| | Стоимость единицы товара | |

| Алкоголь | Является алкоголе содержащей продукцией (Да/Нет) |

| Маркируется маркой | Является маркируемой продукцией (Да/Нет) |

| Код ЕГАИС | Код упаковки алкогольной продукции |

| | Крепость алкогольной продукции | |

| Объем (л) | Объем алкогольной продукции |

| | Производитель, импортер алкогольной продукции | |

Пример корректного входного файла «Номенклатура.csv»

Код;Артикул;Наименование;Штрихкод;Единица;Коэффициент;Характеристика номенклатуры;Остаток;Цена;Алкоголь;

Маркируется маркой;Код ЕГАИС;Крепость;Объем (л);Производитель/Импортёр

00000005879;;"Водка ""Зимняя дорога""";4680012890095;бут;1;;;;Да;Да;1127448000053545176;40;0,1;"ООО ""СОРДИС"""

ЦУ000000110;80;STEP Пазл 80;4602827770010;шт;1;;115,00;26,00;;;;;;

ЦУ000000167;5826;Агуша пюре Груша 115г;4602541004156;шт;1;;33,00;23,00;;;;;;

  • В качестве первой строки можно выгружать произвольные имена колонок. Для этого в утилите добавлена настройка «Не читать первую строку данных»;

Формат файлов выгрузки dt

  • Каждая строка должна иметь ровно тоже число колонок, что задано в формате обмена. Если для данной позиции нет данных, то просто пропускаем его, ставя разделитель «;;»;

  • Значения, содержащие зарезервированные символы (двойная кавычка, запятая, точка с запятой, новая строка) обрамляются двойными кавычками («); если в значении встречаются кавычки — они представляются в файле в виде двух кавычек подряд;

  • Подробнее про формат CSV Вы можете прочитать по ссылке https://ru.wikipedia.org/wiki/CSV.

Пример файла Excel для выгрузки номенклатуры

Файлы Excel для выгрузки должны иметь один лист, который содержит выгружаемые данные.

Описание строк задается в виде таблицы, содержащей все колонки (даже если какие-нибудь колонки остаются пустыми), которые есть в шаблоне. Каждая колонка может иметь ячейку заголовок, для удобства при просмотре человеком. Если ваш excel файл не имеет строки заголовков, то необходимо отключить опцию «Не читать первую строку данных».

Колонки в документе с данными должны идти в том же порядке, что и в файле шаблона.

Формат файлов выгрузки dt

Ошибки выгрузки номенклатуры

При возникновении ошибки плана:

08.06.2023 10:34:09 Ошибка при загрузке номенклатуры из файла ‘C:\ProgramData\Cleverence\Databases\Склад 15, Минимум\XlsCsv\На терминал\Номенклатура.xlsx’.

Packing Id cannot be null or empty.

08.06.2023 10:34:09 Ошибка при завершении загрузки’При загрузке номенклатуры из файла возникла ошибка:Packing Id cannot be null or empty.’.

При загрузке номенклатуры из файла возникла ошибка:Packing Id cannot be null or empty.

Проверьте, заполнены ли поля Packing Id и Product Id в файле номенклатуры. Данные поля являются обязательными и не могут быть пустыми, что ведет к ошибке выгрузки.

Выгрузка/загрузка данных в систему

На странице "Администрирование" в блоке "Выгрузка/загрузка" можно выполнять выгрузку данных из системы и загрузку данных в систему.

Для выгрузки данных в блоке "Выгрузка / загрузка" нажмите кнопку "Выгрузить" в соответствующей строке. На экране откроется стандартное окно сохранения файла.

Для загрузки данных в блоке "Выгрузка / загрузка" нажмите кнопку "Обзор" в соответствующей строке и выберите файл. Загрузка файла может требовать некоторое время. Итог загрузки отображается на экране в информационном окне.

Про сертификаты:  Сертификат подарочный электронный Фотопочта номиналом 1000 рублей – выгодная цена – купить товар Сертификат подарочный электронный Фотопочта номиналом 1000 рублей в интернет-магазине Комус

| Настройка | Выгрузка | Загрузка |

| ————————————— | ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————- | ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————– |

| Метаинформация | Выгружается файл с настройками системы (метаинформацией) | Загружается файл с настройками системы (метаинформацией). Во время загрузки метаинформации могут появляться сообщения о результатах загрузки или о превышении таймаута загрузки. Достоверным критерием окончания загрузки является появление в логе действий технолога события с сообщением о завершении загрузки метаинформации |

| Лицензии | Выгружается лицензионный файл в формате xml. Файл содержит описание лицензий: типы, группы, количество, ограничения по классам, перечень ролей, допустимых для нелицензированных пользователей и тд. Лицензионный файл также содержит в себе цифровую подпись для предотвращения его несанкционированного изменения | Загружается лицензионный файл, предоставленный компанией . После загрузки лицензионного файла обновите страницу с приложением |

| Шаблоны отчетов и печатных форм | Выгружается файл в формате .xml. Файл содержит все существующие в системе шаблоны отчетов и печатных форм | Загружается единый файл с шаблонами отчетов и печатных форм. В результате загрузки файла: обновятся шаблоны, существующие в системе и присутствующие в файле загрузки; добавятся шаблоны отчетов, присутствующие только в файле загрузки; шаблоны отчетов, существующие в системе, но отсутствующие в файле загрузки не изменятся. Список загруженных шаблонов хранится в интерфейсе на странице "Шаблоны отчетов и печатных форм", см. Добавление и настройка шаблона отчета (печатной формы) |

| Файлы приложений | При нажатии кнопки "Выгрузить" открывается форма для выбора встроенных приложений. Для выбора доступны только встроенные приложения, которые запускаются на внутреннем сервере, у которых есть файл приложения. После выбора приложение необходимо сохранить данные. Выгружается файл в формате .zip. Архив содержит файлы выбранных встроенных приложений | Загружается файл с архивом. При загрузке архив распаковывается. Для каждого архива определяется встроенное приложение (код приложения = названию архива) и сопоставляется с ним. Если для архива не нашлось подходящего встроенного приложения, архив игнорируется и не загружается в систему |

| Модули | — | Загружается xml файл модуля В результате загрузки файла: параметры модуля заполняются автоматически на основании данных из xml файла; для модуля создается карточка с заполненными соответствующими значениями атрибутами; новый модуль отобразится на странице "Каталог модулей" Если выполняется попытка сохранить модуль с кодом, который уже существует, то на экран выводится сообщение: "Модули со следующими кодами уже существуют: коды модулей через запятую. Обновить существующие модули?": "Да" — окно с сообщением закроется, в карточке существующего модуля значения атрибутов "Описание", "Текст", "Версия" будут заменены соответствующими значениями загружаемого модуля; "Нет" — окно с сообщением закроется, обновления модуля не происходит. Для корректной загрузки xml файла требуется получить в службе поддержки компании контрольную сумму модуля для проверки целостности данных. |

| Информация о системе | Выгружается файл в формате .xml. Файл содержит параметры приложения: версия приложения, количество созданных объектов в базе приложения, размер занятой и свободной памяти, базовая ссылка на приложение, параметры, заданные в файле конфигурации, часовой пояс и прочее | — |

| Статистика | Выгружается файл в формате .xml. Файл содержит информацию о производительности системы за последнее время | — |

| Текущий набор коротких логов приложения | Выгружается файл sdng.short_log.zip. Файл содержит архив с логами приложения за указанный период в минутах | — |

| Текущий лог приложения | Выгружается файл sdng.log.zip. Файл содержит архив с логом приложения за текущую дату и время | — |

| Расширения настроек поля ввода с маской | Выгружается файл в формате .xml Файл содержит настройки маски для поля ввода | Загружается файл в формате XML и JS. Файл содержит расширения маски в полях ввода — новые псевдонимы и сокращения, расширения существующих псевдонимов и сокращений, переопределения системных псевдонимов. В результате загрузки файла: Старый файл целиком замещается новым файлом. Для файла XML при попытке загрузки производится валидация данного файла. Для файла JS валидации при загрузке не предусмотрено. Если в файле одно и то же имя псевдонима используется несколько раз для определения разных масок ввода, то при работе системы будет использовано последнее из определений (самое нижнее в тексте файла) Файл JS или XML, содержащий в себе JavaScript должен соответствовать формату, описанному в плагине jquery.inputmask |

| Сертификаты | — | Загружается файл с сертификатом SSL. После загрузки сертификат попадает в api.keystore хранилище сертификатов и к нему применимы методы группы api.keystore. Загруженные в систему сертификаты могут быть использованы: в api методах (только для метода api.http.createHttpBuilderClient); для доступа к почтовому серверу с использованием SSL сертификата; для ldap подключений; для доступа к внешнему серверу очередей |

| Дополнительные библиотеки | — | Загружаются внешние библиотеки. Файлы для загрузки предоставляются компанией |

Оцените статью
Мой сертификат
Добавить комментарий