forked from serp83/iisis.singlec.iis
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdescription.txt
More file actions
58 lines (42 loc) · 5.49 KB
/
description.txt
File metadata and controls
58 lines (42 loc) · 5.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

# iis.singlec(далее Singlec) - фрейворк для разработки приложений на базе 1С 8.x с открытым исходным кодом.
## Преимущества:
* Абстрагирование от конкретной платформы 1с 8.x. Обычные и управляемые формы объедены в одну сущность. Реализация форм происходит с использованием xml файлов. В них описывается структура формы, положения контролов и реализация событий контролов и взаимодействие между ними. Это позволяет уменьшить связанность контрола на уровне его программной реализации с другими контролами. Другими словами, один контрол ничего не знает о других контролах, связь происходит в xml файле;
* Абстрагирование от конкретных конфигураций (т.е. от их сущностей и структуры метаданных) с помощью реализации собственной структуры данных на базе xml схем, которая в последствии адаптируется для каждой конфигурации отдельно с использованием классов-адаптеров;
* Структура Singlec приближает разработку приложений на 1С к ООП;
* Содержит классы, позволяющие упростить разработку.
* Написан на английском языке и при реализации крупных приложений на других языках (Java, JavaScript) для совместного использования с фреймворком упрощается задача в именовании одинаковых сущностей (Н-р в 1с - мы разработали объект с названием ПрофилиПодключения, а на Java ConnectionProfileList- это просто не удобно).
## Архитектура фрейворка
## Классы
#Class - это отдельная обработка с расширением epf.
Каждый класс является singleton(одиночкой). Создается только один экземпляр при загрузке класса. Доступ к классу осуществляется по относительному имени класса. Относительное имя класса имеет вид [ИмяПроекта].[РасположениеКласса] . Например, фактическое расположение класса c:\iisis\projects\singlec\iis\components\scope\db\fileSystem\objectList.epf будет иметь вид iis.scope.db.fileSystem.objectList
### Предопределенные методы классов:
1. Init - вызывается один раз при загрузке класса классом iis.builder;
2. Command - описывает в себе те методы, которые открыты(public) для доступа другим классам, все остальные методы класса являются закрытыми(private)
3. CC - Необходим для доступа текущего класса к другим классам.
Загрузка классов является ленивой, т.е. он подгружается только в том случае, если к его методу обращаются.
Для обращения к методу класса используется запись вида: CC([ИмяПроекта].[РасположениеКласса], [ИмяМетода], [Параметр1], [Параметр2] и т.д.);
### Основные классы:
* **iis.builder** - инициализирует фреймворк и содержит в себе таблицу подгруженных классов
* **iis.beans** - инициализирует beans.xml и дает доступ к настройкам классов, описанных в xml документе.
* **iis.xsd** - класс работы с XDTO Объектами. Фреймворк тесно работает с xml схемами и построенными на их основании xml документами.
### Класс iis.builder
Инициализирует фреймворк при обращении к его методу Init, принимающий в качестве параметров:
- XMLBeansFile - путь к файлу beans.xml;
- XSDComponentFile - путь к файлу xsdLoader.xsd. определяет какие xml схемы необходимо импортировать при инициализации iis.xsd и построения XDTOFactory.
- AppPathList - список директорий, где расположены проекты, которые необходимо подключить.
Занимается поиском и подключением классов к фреймворку. Если классу А нужно вызвать метод класса Б, класс А обращается к iis.builder и просит его найти класс Б и вызвать у него нужный метод.
Хранит все подключенные классы для быстрого к ним обращения. Подключается класс только в том случае, если впервые вызывается его метод.
### Класс iis.beans
Дополнительные настройки каждого класса можно описывать в xml файле(beans.xml), Н-р класс работает с веб-сервисом, у которого есть URL адрес.
URL адрес может измениться и для того, что бы не вшивать его в код можно описать его в xml настройках и обращаться к этим настройкам уже в самом классе.
В каждый bean - это отдельная настройка для конкретного класса. Можно вкладывать вложенные bean, тем самым организовать иерархию bean подобную иерархии классов.
beans.xml подгружается фреймворком один раз при инициализации.
### Класс iis.form
Занимается динамическим построением неуправляемых форм на основании xml файла.
### Класс iis.db
iis.db - универсальный класс для работы с источниками данных в хранилищах в виде организованных списков с однородными данными или же в виде универсального хранилища информации. С помощью iis.db мы можем обращаться к любому источнику данных, не задумываясь о его специфики.
Хранилище можно реализовать как в 1с (Н-р в управлении торговлей есть регистр с настройками), в файловом варианте или в любой из баз данных, написав под нее драйвер управления. На текущий момент драйвер управления реализован для БД MySQL.
При реализации программ нам приходится часто обращаться к таким источникам, как http ресурс, email, базы данных, файлы (в том числе и архивы, Excel). Для каждого источника данных описывается свой драйвер, с которым уже непосредственно работают другие классы. Правила взаимодействия с драйверами описывается с помощью универсального механизма ObjectListOptions.
Например, из источника базы данных MySQL необходимо получить список записей. Мы не пишем прямой SQL запрос, а просто заполняем ObjectListOptions, на основании которого происходит формирование запроса. Другой пример: с почты нам нужно получить конкретные почтовые сообщения. В этом случае мы не устанавливаем сами фильтры для внутреннего объекта 1с, работающий с почтой, а передаем драйверу ObjectListOptions, который уже преобразуется в фильтры и делает запрос.
### Остальной функционал будет описан позднее.