[x1c.ru] 1CDBin: Работа с файлами *.1CD на низком уровне средствами языка 1С:Предприятие с возможностью чтения таблиц
Программирование - Инструментарий
Предупреждения, отказ от ответственности:
Разработчик данной обработки не может нести и не несет ответственность за любой ущерб, полученный при использовании данного программного продукта. Рекомендуется использование этого программного продукта на копиях баз.
Сначала благодарности:
В первую очередь выражаю огромную благодарность Валерию Агееву (awa) - автору статей о формате файлов 1CD и утилиты Tool_1CD.
Также выражаю благодарность andrewks за статьи о восстановлении работоспособности файловой базы, которые помогли глубже разобраться со структурой файлов 1CD.
Функционал:
- Просмотр базы 1CD из любой другой конфигурации на управляемых формах (работает в "Такси")
- Просмотр общей информации о таблицах базы (описание, размер записи, данные, BLOB, индексы и т.д.)
- Просмотр общей информации о полях таблицы (тип, длина, NULL и т.д.)
- Просмотр записей таблиц
- Есть 16-ричный вьюер страниц базы
- Возможность выгружать файлы таблицы: Файл данных, Файл BLOB, Файл индексов
- Консоль кода (с примерами) для вывода любой необходимой информации
Для чего можно использовать:
- Изучение физического представления базы
- Выгрузка данных на низком уровне
- Навигация по поврежденным базам (с ограничениями) для выявления повреждений
- Можно рассматривать как пример работы с бинарными данными (функции обработки можно использовать для любых других файлов, например, для графических или звуковых)
Особенности работы:
Само двоичное чтение осуществляет ActiveX "SAPI.spFileStream", установленный практически в любой Windows, дальше идет работа средствами языка 1С через COMSafeArray. Кому интересно, простой пример работы из 1С с этим ActiveX - http://forum330.com/forum/86/all Документация - http://msdn.microsoft.com/en-us/library/ms722561%28v=vs.85%29.aspx
Интерфейс:
Почти весь функционал этой обработки был написан в рамках рабочей задачи, которая не требовала интерфейса. В итоге для этой обработки интерфейс был просто "прикручен" и дописано немного функций, а чтобы не изобретать велосипед, интерфейс был сделан похожим на интерфейс утилиты Tool_1C, автором которой является awa. Однако стоит сказать, что функционал данной обработки скорее дополняет Tool_1CD, нежели чем дублирует его.
Информация о таблицах базы:
Информация о полях таблицы:
Операции над файлами таблицы:
Просмотр записей таблиц:
При чтении данных таблицы добавляются поля, начинающиеся с префикса "B1C_". В поле "B1CD_Deleted" записывается признак удаленной записи (для записи, помеценной в таблице на удаление, устанавливается ИСТИНА). Также для полей типа BINARY создается поле "B1CD_<ИмяПоля>", которое содержит бинарные данные в строке формата Base64.
16-ричный просмотр базы:
Консоль кода:
Ограничения и работоспособность:
Поддерживаются только базы версии 8.2.14.0 (сейчас практически все такие).
Обработка тестировалась на Windows 8 (32bit) и на релизе платформы 8.3.5.1119.
На данный момент не на все варианты повреждений файла 1CD есть проверка, этот функционал планируется доработать в будущем.
Планы по развитию функционала:
Сделать возможность редактирования страниц базы в 16-ричном режиме;
Автоматическое выявление некоторых повреждений баз;
Работа с базой в "Режиме поврежденной базы";
Запись в базу ранее выгруженных и измененных данных;
Жду содержательных комментариев и замечаний по обработке.
История версий:
0.0.2.8a от 02.10.2014 Первая публичная версия (альфа)
0.0.3.0a от 24.01.2015
Новое в версии:
- добавлена возможность вывода записей таблиц (функции чтения таблиц пока находятся в состоянии тестирования)
- ускорена работа с файлом 1CD (spMemoryStream)
- ускорена работа HEX-просмотра
- ускорено открытие базы примерно в 2 раза (3500 таблиц около 15 секунд)
- добавлена форма выхода
- добавлена форма предупреждения привыгрузке файла
- добавлена обработка типа поля T (text)
- исправлена ошибка повторного сохранения
- исправлены другие мелкие ошибки