О проекте
Что такое "Открытый Конфигуратор"

Как известно, "1С-Предприятие 7.7" продукт хороший и распространенный. И основной его козырь - открытость платформы. Там, где штатных функций програмы не хватает, всегда есть лазейка в виде "Внешних Компонент". А с выходом проекта "Rainbow" возможности ВК стали поистине безграничны.

Теперь о грустном. Все эти возможности затрагивают только пользовательскую часть программы. А мы, те кто заставляют работать ВК на радость юзеров, большую часть времени проводим отнюдь не в Предприятии, а в Конфигураторе. А здесь все плачевнее. Штатных методов для загрузки дополнительных модулей нет. Соответственно, нет и никаких стандартных интерфейсов типа ILanguageExtender и т.п. Может, на момент выхода Конфигуратор и удовлетворял програмистов по своим возможностям, но на сегодняшний день их уже явно недостачоно.

С целью преодолеть все эти ограничения мной и был задуман этот проект.
Первоначально OpenConf предназначался только для загрузки сторонних dll в адресное пространство Конфигуратора. Теперь я планирую несколько расширить его возможности. К их числу относятся:

  • Позволяет обращатся к объектам Конфигуратора из скриптов и плагинов.

  • Применение технологии ActiveScripting в Конфигуаторе позволяет програмно управлять им с помощью скриптов.

  • Позволяет с легкостью писать плагины для Конфигуратора на любом из языков, способных работать с IDispatch и OLE Automation. Простой стандартный метод визуализации плагинов при помощи ActiveX Control

Основные принципы работы OpenConf
В основу механизма OpenConf положен способ подмены библиотеки config.dll, используемой 1С-Предприятием для работы Конфигуратора. Вместо "родной" config.dll загружается подменная, которая, оказываясь в адресном пространстве процесса, получает возможность выполнять дополнительные действия в программе и в свою очередь загружает "родную" config.dll для обеспечения штатной работы.
Основополагающий принцип работы основан на том факте, что большая часть функционала 1С-Предприятия размещена в библиотеках dll, экспортирующих свои функции по именам. Это позволяет воссоздать заголовочные файлы и библиотеки импорта для этих dll и в дальнейшем обращатся к ним также, как это делается самой программой 1С. Впервые такой подход был применен в ВК "Rainbow" Валерия Атаманюка.
Немаловажно и то, что сама 1С-Предприятие написана с использованием библиотеки MFC, исходные коды которой открыты. Это позволяет во многих случаях понять принципы работы программы и уточнить заголовки классов, полученных из экспортируемых функций dll 1С-Предприятия.

Примечание
При реализации методов OpenConf я старался по большей части пользоваться "штатными" функциями 1С, доступными через ее dll. OpenConf не работает напрямую с файлом метаданных, не парсит Main MetaDataStream, не считает CRC и тп. Для выполнения своих действий он просто обращается к "внутренним" функциям 1С. По сути дела, объектная модель OpenConf просто OLE-обертка вокруг C++ объектов 1С.


С уважением, Александр Орефков