Альберт Балаков
«1С:Предприятие 8. Управляемое приложение. Бета-версия»
Новые подходы и технологические решения
Прошло восемь месяцев с момента объявления фирмой «1С» о выпуске продукта «1С:Предприятие 8. Управляемое приложение. Бета-версия», призванного прийти на смену текущей рабочей версии платформы 8.1. Масштаб предлагаемых изменений можно смело назвать революционным: и разработчиков, и пользователей ждет множество новшеств, основой которых являются переработанная архитектура платформы и иной подход к взаимодействию прикладного решения и пользователя.
Прикладные решения, разработанные для версии 8.0 или 8.1, будут работать и под новой версией платформы, но, чтобы задействовать новые возможности, которые мы рассмотрим позже, существующие конфигурации придется переработать. Насколько серьезно? Как минимум, придется заново разработать все формы и учесть ярко выраженную клиент-серверную природу новой платформы, но об этом позже.
Изменения замечаешь сразу после инсталляции «Бета-версии». В состав поставки помимо традиционного «толстого клиента», позволяющего работать с прикладными решениями и вести разработку, включено новое приложение – «тонкий клиент». Основное назначение «тонкого клиента» – позволить пользователям работать с информационной базой «1С: Предприятия» удаленно, например через Интернет.
Если «толстый клиент» поддерживает обратную совместимость, то «тонкий клиент» предназначен исключительно для взаимодействия пользователя с интерфейсом «1С:Предприятия» и только в режиме «Управляемого приложения». В связи с этим он использует значительно меньше аппаратных ресурсов.
Очень важным представляется тот факт, что в качестве полнофункционального клиента теперь может выступать интернет-браузер Mozilla Firefox или Microsoft Internet Explorer, причем добиться этого можно без написания дополнительных приложений.
Замечу, что для взаимодействия с прикладным решением версии 8.0 или 8.1 через браузер требуется разработать веб-приложение, а это, как правило, трудоемкий процесс, требующий от разработчиков знания дополнительных технологий.
Взаимодействие «клиент – кластер серверов»
В «Управляемом приложении» акцент сделан на максимальный перенос всей функциональности с клиента на сервер (кластер серверов) «1С:Предприятия», соответственно существенно переработана модель клиент-серверного взаимодействия.
На стороне клиента оставлен тот минимум функционала, который нужен для эффективного взаимодействия с пользователем, все остальное выполняется на сервере.
Функционал, работающий на клиентском приложении:
- получение и отображение форм, диалог с пользователем;
- элементарные расчеты в формах (например, умножение суммы на ставку НДС);
- работа с локальными файлами и торговым оборудованием.
На стороне клиентского приложения поддерживается ограниченная версия встроенного языка, необходимая для решения интерфейсных задач и не позволяющая взаимодействовать непосредственно с прикладными объектами.
При необходимости выполнения расширенной логики на клиенте следует вызывать серверные процедуры и функции.
Обратите внимание на модуль формы документа на рис. 1 – разработчик для каждой процедуры и функции явно задает место ее функционирования.
Рисунок 1. Модуль формы
При взаимодействии клиентского приложения и кластера серверов используется сеанс работы пользователя. В рамках сеанса любое обращение к серверу от тонкого или веб‑клиента может быть обработано любым рабочим процессом кластера серверов. Это выгодно отличает новую схему взаимодействия от использовавшегося ранее соединения тем, что улучшается нагрузочная балансировка системы (при каждом обращении к серверу для обработки выбирается наименее загруженный процесс), повышается живучесть системы (если некоторые процессы «зависнут», то работа будет распределена между нормально функционирующими процессами).
Интерфейс
Существенно переработана вся подсистема работы с интерфейсом, причем как с точки зрения разработчика, так и с точки зрения пользователя. «Управляемое приложение» взаимодействует с пользователем с помощью управляемого командного интерфейса и управляемых форм.
Управляемый командный интерфейс строится системой автоматически на основе иерархии подсистем, заданной при конфигурировании. Разработчик привязывает объекты конфигурации к подсистемам и тем самым определяет структуру интерфейса, которая будет предложена пользователю. Разумеется, имеется возможность скрыть ненужные, но автоматически генерируемые элементы интерфейса или добавить свои команды.
С точки зрения пользователя интерфейс системы полностью изменен по сравнению с традиционным подходом, использовавшимся в предыдущих версиях платформы. При запуске прикладного решения открывается основное окно командного интерфейса (см. рис. 2).
Рисунок 2. Основное окно командного интерфейса
Верхний уровень подсистем конфигурации располагается в самой верхней части окна. При выборе подсистемы открывается отдельное окно приложения, в котором представлена вся функциональность выбранной и дочерних по отношению к ней подсистем. Классический многооконный интерфейс (Multiple Document Interface) не используется.
Окна командного интерфейса разделяются на три области: панель навигации (слева), панель действий (сверху) и рабочую область (см. рис. 3).
Рисунок 3. Окно командного интерфейса для подсистемы «Документы»
Основным элементом взаимодействия с пользователями являются управляемые формы. Причем разработчик не редактирует форму, располагая на ней элементы управления с точностью до пикселя, а описывает, какие элементы управления должны быть на форме, как их следует сгруппировать и расположить.
Платформа самостоятельно размещает элементы на форме и настраивает их свойства в соответствии с декларативным описанием, сделанным разработчиком (см. рис. 9).
Элементы управления формы имеют специализированные типы данных, предназначенные исключительно для отображения и редактирования данных. Заполнение формы данными прикладных объектов и обратный процесс, расположение на форме элементов управления выполняются на сервере. Клиентскому приложению остается только получить данные, отобразить их и обеспечить диалог с пользователем.
В связи с этим замечу, что при переходе от «1С:Предприятия 7.7» к версии 8.0 разработчиками были предприняты шаги для отделения кода бизнес-логики от кода форм как объектов интерактивного взаимодействия с пользователем. В «Управляемом приложении» этот процесс получил логическое завершение – теперь при разработке прикладных решений следует четко разделять интерфейсную часть, исполняемую на клиенте, и бизнес-логику, исполняемую на сервере.
Изменение принципов построения интерфейса призвано, кроме всего прочего, решить задачу ускорения освоения прикладных решений неподготовленными пользователями, а также задачу облегчения навигации в крупных корпоративных приложениях, характеризующихся большим объемом функционала.
Есть основания полагать, что новая интерфейсная модель повысит скорость разработки за счет того, что не нужно детально настраивать элементы управления в редакторе форм, львиную долю работы платформа выполнит сама.
Веб-клиент и «тонкий клиент»
«Управляемое приложение» поддерживает работу с информационными базами посредством интернет-браузера, когда в качестве клиента используется Mozilla Firefox или Microsoft Internet Explorer. При этом интерфейс за исключением незначительных нюансов полностью идентичен интерфейсу, предоставляемому «толстым» и «тонким клиентом».
При данной схеме взаимодействия браузер конечного пользователя обращается к веб-серверу (Apache или IIS), который, в свою очередь, взаимодействует с «1С:Предприятием».
При этом на компьютер конечного пользователя
ни платформа, ни дополнительные компоненты не устанавливаются.
«Тонкий клиент» может взаимодействовать с веб-сервером по описанной выше схеме или работать напрямую с кластером серверов «1С:Предприятия» по протоколу TCP/IP, обеспечивая удаленную работу с конфигурацией через Интернет. В режиме «Низкая скорость соединения» «тонкий клиент» может функционировать на слабых каналах связи.
Управляемые отчеты
Отчеты в «Управляемом приложении» строятся только на стороне сервера с использованием системы компоновки данных, которая получила дополнительное развитие – внесена возможность описывать варианты отчета.
Управляемый отчет содержит схему компоновки данных, которая, если говорить упрощенно, представляет собой декларативное описание того, как следует выполнить выборку данных и как отобразить полученные данные для пользователя. Конкретная выборка может быть представлена пользователю в разных вариантах, отличающихся, например, глубиной детализации, составом выводимых полей.
Добавлять варианты может как разработчик, так и пользователь. Каждый из вариантов отчета имеет, в свою очередь, ограниченный набор пользовательских настроек (поля для отборов, дата или период отчета и проч.), имеющих смысл именно для этого варианта (см. рис. 4).
Рисунок 4. Варианты отчета и пользовательские настройки
Механизм функциональных опций
Добавлен механизм функциональных опций, позволяющий легко задействовать или выключать целые разделы функциональности в рамках прикладного решения. Набор элементов конфигурации (реквизиты форм, элементы командного интерфейса и проч.) может быть привязан к той или иной функциональной опции. Если функциональная опция задействована, то все элементы конфигурации, связанные с ней, будут доступны пользователю, в противном случае платформа автоматически сделает их недоступными.
Вкратце о миграции существующих приложений на новую платформу
Насколько серьезно нужно переработать прикладное решение для перехода на новую версию платформы?
Придется разработать все формы приложения заново, реализовав их в виде управляемых форм. Разумеется, конструктор форм поможет получить некоторое начальное представление формы. Для добавления логики на форму, скажем, требуется автоматически рассчитывать НДС при вводе ставки, следует написать код с учетом того, что на клиенте поддерживается ограниченная версия встроенного языка.
Практическое представление можно получить на простом примере – скажем, имеется демонстрационная конфигурация для платформы версии 8.1, содержащая справочники «Склады», «Контрагенты», «Номенклатура» и документ «Поступление товаров», формирующий движения вида «Приход» в регистре остатков «Товары на складах».
Структура данных объектов демонстрационной конфигурации приведена на рис. 5, модуль и форма документа «Поступление товаров» – на рис. 6.
Рисунок 5. Структура данных демонстрационной конфигурации
Рисунок 6. Модуль и форма документа «Поступление товаров»
Заставим эту конфигурацию функционировать в режиме «Управляемого приложения». Прежде всего откроем ее в конфигураторе новой платформы и выполним конвертирование в новый формат. «Толстый клиент» поддерживает обратную совместимость с предыдущими версиями, поэтому нужно явно указать режим запуска – откроем свойства конфигурации и для реквизита «Основной режим запуска» выберем значение «Управляемое приложение».
Я уже отмечал, что подсистемы определяют структуру пользовательского интерфейса. Для того чтобы все объекты были представлены в основном окне командного интерфейса, следует установить для них принадлежность самому верхнему уровню подсистем – пункту «Конфигурация» (см. рис. 7).
Рисунок 7. Структура подсистем демонстрационной конфигурации
Для всех справочников установим также принадлежность подсистеме «Справочники», для документа – подсистеме «Документы».
Запустим приложение на выполнение и убедимся, что оно успешно функционирует – структура пользовательского интерфейса отражает иерархию подсистем (см. рис. 10); все формы справочников и документов функционируют – платформа просто игнорирует «старые» и генерирует управляемые формы «на лету», по мере надобности.
Отмечу, что модуль документа в нашем случае не требует изменений, он содержит обработку проведения, которая выполняется на сервере, поддерживающем всю мощь встроенного языка «1С:Предприятия».
Если вернуться в конфигуратор и просмотреть свойства любой формы, то увидим новый нередактируемый реквизит «Тип формы», который может принимать значения «Стандартная форма» или «Управляемая форма». Для унаследованных форм он установлен в значение «Стандартная форма» (см. рис. 8).
Рисунок 8. Свойства формы
Создадим управляемую форму документа, для чего запустим конструктор формы документа. После завершения работы конструктора получившаяся форма будет открыта в редакторе форм (см. рис. 9).
Рисунок 9. Декларативное описание управляемой формы
Окно редактора форм разделено на две части – вся работа по настройке визуального отображения формы ведется в верхней части. Разработчик формирует так называемое декларативное описание – перечень элементов формы, их свойства, группировку и тому подобное, а представление формы, автоматически генерируемое на основании декларативного описания, отображается в нижней части.
Подвинуть элементы управления с помощью мыши в разделе представления формы, как уже отмечалось, нет возможности. Для перемещения, например, реквизита «Дата» в правый столбец следует мышью переместить его из группы «ЛеваяКолонка» в группу «ПраваяКолонка».
Как опробовать «Управляемое приложение»
Бета-версию можно загрузить с сайта поддержки пользователей программных продуктов фирмы «1С» (http://users.v8.1c.ru), она помещена на августовский выпуск партнерского диска ИТС. Выпускается также отдельный программный продукт, содержащий печатный вариант документации и дистрибутив.
По адресу http://demo-ma.1c.ru можно опробовать работу с «Демонстрационной конфигурацией», используя веб-браузер. Там же описан порядок подключения «тонкого клиента».
Рисунок 10. Основное окно демонстрационной конфигурации
Выводы
Фирма «1С» становится все более заметным игроком на рынке корпоративных решений, и новая версия платформы «1С:Предприятие 8» является закономерным шагом в реализации этой стратегии.
Изменения, реализованные в рамках архитектуры клиент-серверного взаимодействия, позволили повысить масштабируемость и устойчивость системы.
Поддержка распределенных неоднородных систем выведена на новый уровень: в версии 8.1 только кластер серверов «1С:Предприятия» мог работать на Linux, теперь и клиент может работать в этой среде, используя связку Apache + Mozilla Firefox.
Декларативное описание интерфейса (управляемый командный интерфейс и управляемые формы), управляемые отчеты, развитая система разграничения средств доступа, система функциональных опций – все это позволяет говорить о том, что прикладные решения можно будет эффективнее разрабатывать и внедрять.