Skip to content
serp83 edited this page Aug 8, 2015 · 7 revisions

Singlec Logo

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, который уже преобразуется в фильтры и делает запрос.

Остальной функционал будет описан позднее.