Hare.ru @ Коллективный разум / Hare.ru @ Дикое место |
Архив hare.ru | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Мысли, конвертированные в текст | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Концептуальные работыДоступ к данным V7 из других систем. Исследование MD.Андрей Малкин (где-то в 2001) Почти из жизниНачальник – программисту: «Нужно данные из 1С импортировать, сделаешь?» Дальше возможны варианты.
В 2000 году начинают появляться материалы по структуре MD-файла и кажется, что вот-вот появится инструмент/технология импорта – но нет: на cегодня существует масса решений, базирующихся на экспорте из V7 и практически нет законченных средств импорта из неё. Уточню, что под импортом я понимаю возможность доступа к данным V7, находясь не только вне этой системы, но и не имея на компьютере никаких её компонентов. В этой публикации я не буду обосновывать необходимость (нужность, востребованность) подобного решения: будем считать, что мною движет исключительно стремление удовлетворить собственное любопытство. В качестве тестовых примеров будут использоваться комплексные конфигурации для версий 7.5 и 7.7. Итак, постановка задачи: получить возможность доступа к данным V7, точнее к объектам хранения данных (справочникам, регистрам, перечислениям и т.д.). Решение (технология) должно поддерживать как версию 7.7, так и версию 7.5. Никакие компоненты V7 использоваться не должны: только *.dbf и 1cv7.md. Исследуем MD Те, кто читал жёлто-красные книжки, знают, что описания всех объектов системы хранятся в файле 1cv7.md. Сам он представляет собой так называемый Compound File – структуру, поддерживающую хранение разнородных данных в одном файле. Сначала, конечно, необходимо найти какое-то средство для ковыряния внутри него. Самым известным инструментом для этой работы является FAR DocFile Browser Plugin by Igor Pavlov. В последнее время появилось несколько новых инструментов, ориентированных не на абстрактный compound-file, а конкретно на 1cv7.md (compound.dll by Kostya Volkov, MD Editor by Павел Бычковяк, Visual MD Editor by Sergey Belov, и другие). Мы будем использовать Compound Extractor by Denis Abrosimov. Тому, кто захочет узнать подробности об этой программе или пожелает заточить её под себя, необходимо обратиться к главе II, написанной Денисом (в ней меня особенно умиляют упоминания «поделок от Микрософт» ;-). Денис, кстати сказать, один из авторов описываемой технологии, видел софт от 1С только издали (ближе мы его не подпускаем, бережём ;-). Внутри 1cv7.md нас будет интересовать исключительно файл Main Metadata Stream (далее просто MMS) из папки \Metadata. В зависимости от версии 1С, его кодировка либо OEM (для 7.5), либо ANSI (для 7.7). Для извлечения MMS из MD-хранилища мы воспользуемся командой compound_extr.exe 1cv7.md "\metadata\main metadata stream" Compound Extractor создаст файл с аналогичным именем, который мы и будем анализировать в дальнейшем. MMS изнутри Даже поверхностный взгляд на MMS позволяет определить, что этот файл имеет регулярную структуру: группы символов в двойных кавычках (chr(34)), разделенные запятыми и ограниченные фигурными скобками (chr(123) и chr(125)). Подобные структуры часто встречаются в разных местах V7: файл выгрузки данных, файл синтакс-помощника, и практически всё, что записано в файле метаданных. Что это: внутрифирменное описания объектной модели или какой-то стандарт – мне неведомо. Никаких материалов, реально описывающих структуру MMS, я не видел. Вполне возможно, что предложенный ниже доморощенный способ разбора MMS методически неверен, но результаты он даёт адекватные. Для упрощения дальнейшего описания придётся ввести термин класс метаданных – это то, что в 1С называют «вид объекта метаданных» (понятия справочник, операция, табличная часть документа, и т.п.). Это иерархическая структура: все классы, кроме корневого (реально отсутствующего в MMS), имеют класс-родитель (например класс Документы – родитель для класса Табличная часть документа). Объект метаданных –просто экземпляр класса, определяемый набором свойств (реквизитов). Естественно, что такая структура может быть легко представлена и обработана программой. Теперь структуру MMS можно представить так:
Предлагаемая интерпретация сильно упрощена. В MMS встречаются и фигурные скобки внутри строк-описателей объектов; структура ссылок Refers и форм Forms – более сложна. Но! Мне формы неинтересны, и я их без всяких угрызений совести исключаю из рассмотрения. Для целей описания объектов хранения предложенная структура минимально достаточна. Последуем совету Оккама и не будем множить сущности сверх необходимого ;-). Объекты разных классов имеют различный набор свойств (реквизитов), но у всех первые четыре свойства одинаковы:
|
Партнеры: Также может быть интересно: Канал Россия 1 на http://spbtvonline.ru/ |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сайт поддерживается за счет партнеров: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
:::... Сайт содержит архив двух версий hare.ru | Карта сайта |