Цели проекта:
Цель проекта - создание новой открытой платформы для создания
информационной системы предприятия.
Концепция построения и развития информационной системы
"МОЕ ПРЕДПРИЯТИЕ"
Общие:
-Система будет строиться с середины. Предполагается, что уже есть исходная
конфигурация, описывающая бизнес логику предприятия (т.е. это md-файл
конфигурации 1С:Предприятие 7.7). В рамках этого проекта будет происходить
конвертация такой конфигурации в проект на С++.
-В обеспечение вышеуказанного пункта система на первом этапе должна
будет, как минимум повторять функциональность и интерфейс программы
1С:Предпритие 7.7. На следующих этапах будет производиться повышение
удобства интерфейса, улучшение технических характеристик, например,
построение трехзвенной архитектуры и пр.
Технические:
-Операционная система - MS Windows (портирование на другие ОС допускается)
-Основной язык программирования для создания ядра является С++ с использованием
библиотеки MFC. Модули, подключаемые для расширения набора компонент
(dll библиотеки) могут быть написаны на произвольном языке.
-Для хранения базы данных принимается произвольный SQL-сервер, поддерживающий
стандарт SQL ANSI-92
-Новая платформа будет позиционироваться как система для средних и крупных
предприятий
-В основании построения такой системы будут лежать программисты-энтузиасты,
имеющие теоретический интерес (повышение профессионального уровня знаний,
собственной самооценки) или практический интерес (использование такой
системы в своей организации).
Лицензия:
-Неограниченна
Примерная диаграмма проекта:
Примечание: работа программы-компилятора 1С-кода (ICompiler.exe)
основывается на синтаксическом разборе конструкций макроязыка 1С, диаграммы
которых приведены здесь.
Техническая реализация
Основа построения системы является объектная модель. Для обеспечения
совместимости кода транслятор макроязыка 1С и компилятором С++ служит
класс CValue, который является базовым классом для всех агрегатных объектов,
поддерживает произвольные типы данных, все методы и операции, аналогично
транслятору 1С. Один и тот же указатель типа CValue сможет работать
одновременно с произвольными объектами.
Обращение к произвольным данным осуществляется через предопределенные
методы:
-Attribute(ИмяАтрибута)
-Method(ИмяМетода,Параметры)
Прямое обращение к методам допускается для типизированных переменных,
такие как, диалоговые элементы формы или при явном задании типов в исходном
коде 1С (через директивы компилятора).
Пример работы с нетипизированной переменной (Spisok):
Spisok=::CreateObject(_S("СписокЗначений"));
for(A=1;A<=10;A=A+1)
{
Spisok.Method("ДобавитьЗначение",A,_S("Тест-")+A);
};
Spisok.Method("Сортировать",0);
Spisok.Method("ВыбратьЗначение",_S(""),_S("Выберите
что-нибудь"));
Пример работы с типизированной переменной, находящейся
на форме диалога (SpisokDialoga):
for(A=1;A<=10;A=A+1)
{
SpisokDialoga.AddValue(A,_S("Тест-")+A);
};
SpisokDialoga.Sort(0);
SpisokDialoga.ChooseValue(_S(""),_S("Выберите что-нибудь"));
Таким образом, все объекты в системе, которые предполагают
использование в конфигурации в независимости от типа объекта (диалоговые,
для работы с базами данных или системные) должны содержать свое описание
в потомке базового класса CValue. Это осуществляется наследованием класса,
реализацией функций обработки обязательных методов (предопределенных
наследуемых методов) и дальнейшей регистрации такого объекта в списке
объектов (для дальнейшего доступа к такому объекту через функцию CreateObject):
RegisterObject(RUNTIME_CLASS(CValueGrid),"Таблица");
RegisterObject(RUNTIME_CLASS(CValueList),"СписокЗначений");
Примерная иерархическая схема агрегатных классов: