С выпуском в 2003 г. программной системы "1С:Предприятие 8" фирма "1С" заметно ускорила (по сравнению с вариантом 7.x) процесс развития ее базового компонента — технологической платформы. Причина тому представляется вполне очевидной: именно с появлением "1С:Предприятие 8" компания существенно расширила круг своих потенциальных заказчиков, начав активное освоение корпоративного рынка. Но в этом сегменте у заказчиков имеются давно устоявшиеся (и постоянно растущие!) требования к бизнес-приложениям, и чтобы соответствовать им, разработчикам "1С" пришлось повысить темпы развития базовых технологий.

Сразу отметим, что появление «1С:Предприятие 8» вызвало также определенное расслоение сообщества партнеров-внедренцев "1С", ключевого элемента всей экосистемы фирмы. Это тоже вполне понятно: клиентский рынок серьезно увеличился, и стал более четко виден водораздел между мало-средним и средне-крупным сегментами. С точки зрения технологий это видно по процессу перехода партнеров (не заказчиков, а именно партнеров — в существующей экосистеме "1С" им принадлежит существенная роль в решении вопроса выбора ПО клиентами) с версии 7 на 8. По очевидным причинам реальное применение «1С:Предприятие 8» началось с корпоративного сегмента рынка, а существенная часть компаний-франчайзи, работающих в сфере SMB, только к 2008 г. подошла к этапу перехода на новую версию.

Но на каком варианте "восьмерки" остановить свой выбор? Ответ на этот вопрос представляется не столь однозначным. Сегодня платформа «1С:Предприятие» представлена последней версией 8.1, но, судя по всему, уже в текущем году появится следующая, которая пока имеет условный номер 8.2 и называется "1С:Предприятие 8. Управляемое приложение". Конечно, можно продвигаться последовательно, но можно и сделать шаг "через ступеньку" и сразу выйти на передовые технологические позиции. Есть о чем подумать…

Цели, задачи, реализация

Говоря об «1С:Предприятие 8. Управляемое приложение», нужно сразу отметить несколько важных моментов. Во-первых, слово "приложение" в названии этого ПО не должно никого вводить в заблуждение. Речь идет не о прикладном решении, а о платформе, предназначенной для создания и исполнения приложений (хотя с точки зрения ОС эта платформа представляет собой приложение). В этом плане, наверное, было бы правильнее говорить, что «1С:Предприятие 8. Управляемое приложение» — это платформа для реализации управляемых приложений.

Во-вторых, с точки зрения архитектуры в «1С:Предприятие 8. Управляемое приложение» реализован целый ряд принципиальных новшеств по сравнению с предыдущими вариантами платформы. И потому есть серьезные основания присвоить ей номер 9 (вопрос о нумерации версии фирма "1С" к моменту написания статьи окончательно еще не решила). Но в то же время новая система должна обеспечить полную совместимость с ранее созданными программами «1С:Предприятие 8». Тут нужно иметь в виду другой важный момент: старые программы будут работать в обычном режиме, без новых возможностей платформы, для функционирования в "управляемом режиме" нужно переписывать код (но при этом все возможности "обычного режима" также остаются доступными).

Основные новшества «1С:Предприятие 8. Управляемое приложение» связаны с необходимостью и дальше повышать производительность и масштабируемость платформы, поддерживать работу удаленных пользователей, упростить процесс разработки и сопровождения прикладных решений, а также сделать более удобной работу пользователей. Весь этот взаимосвязанный набор целей достигается с помощью разнообразных архитектурных изменений платформы, которые в самых общих чертах сводятся к решению двух основных задач: повышения управляемости прикладных решений (на этапах как разработки, так и эксплуатации) и переноса основной вычислительной нагрузки системы с клиентской части на серверную.

Одна из ключевых идей системы «Управляемое приложение» заключается в переходе на использование модели декларативного описания программного кода и пользовательского интерфейса. Это существенно повышает управляемость бизнес-приложения и позволяет перейти к применению тонкого Windows- и Web-клиента.

Концептуально в платформе «1С:Предприятие 8» изначально имеются три основных программных слоя: пользовательский интерфейс, бизнес-логика и управление данными. Проблема заключается в том, что в силу исторического архитектурного развития в текущих версиях платформы (8.0 и 8.1) слой управления интерфейсом полностью реализуется только в клиентской части системы. Более того, опять же в силу унаследованных особенностей функции пользовательского интерфейса и бизнес-логики в «1С:Предприятие 8» так сильно переплетены между собой, что разделить их на логически независимые слои очень сложно.

Собственно, на преодоление этого наследия и ориентирована система «1С:Предприятие 8. Управляемое приложение», обеспечивающая перенос вычислительной нагрузки с клиента на сервер (рис. 1) за счет более четкого разделения слоев интерфейса и бизнес-логики и реализации управления пользовательским интерфейсом на стороне сервера.

В документации фирмы "1С" четко выделяется, что остается неизменным в «1С:Предприятие 8. Управляемое приложение» и что меняется по сравнению с текущими версиями.

Без существенных изменений остаются слои, реализующие работу с данными информационной базы и бизнес-логику прикладных решений. Это относится к описанию структур данных в конфигурации, к работе с прикладными объектами (справочниками, документами и т. д.) и с различными механизмами платформы (запросы, обмены данными).

Полностью меняется весь слой пользовательского интерфейса (командный интерфейс, формы, оконная система). При этом не просто вводится новая модель разработки интерфейса, но реализуется новая архитектура разделения функциональности между клиентской и серверной частью системы.

Принципиально важно, что реализация всех этих идей выполнена на качественно новом технологическом уровне — на основе модели декларативного описания программного кода и пользовательского интерфейса. Именно это существенно повышает управляемость бизнес-приложения — как на этапе разработки прикладных программ, так и при его настройке на требования конкретных пользователей (а также в случае настроек, сделанных самим пользователем.

Новая модель интерфейса

В текущих версиях «1С:Предприятие 8» пользовательский интерфейс представляет собой набор детально прорисованных разработчиком элементов (главного меню и форм), логика взаимосвязей которого опять-таки практически полностью определяется на этапе разработки приложения. Новый же интерфейс формируется динамически с учетом различных факторов, которые могут меняться непосредственно в ходе работы с приложением (например, прав пользователя или сделанных им самим настроек). Это относится ко всем ключевым компонентам интерфейса.

Командный интерфейс. Это основное средство навигации пользователя по функциям приложения. Упрощенно говоря, раньше он имел достаточно жесткую структуру, и фактически функциональные подсистемы привязывались к командному интерфейсу (состав меню, кнопки и т. п.), изначально написанному разработчиком. Изменения в структуре метаданных или правах пользователя сами по себе не влияли на интерфейс. Теперь же «1С:Предприятие 8. Управляемое приложение» автоматически формирует командный интерфейс для пользователя с учетом состава и внутреннего содержания функциональных подсистем. Пользователь видит структуру прикладного решения и имеет доступ к его функциональности при помощи стандартных команд. При этом разработчик может изменить предлагаемое системой построение командного интерфейса с помощью специального редактора, а также включить свои команды.

Формы. Как и раньше, основная работа пользователя выполняется с помощью форм. Но теперь применяются управляемые формы, формируемые на основе декларативного описания. Отображаемая часть такой формы описывается как дерево, включающее различные элементы (поля, флажки, переключатели, кнопки и т. п.). Каждый элемент может быть группой, включающей другие элементы. Функциональность же формы описывается в виде реквизитов (данные, с которыми работает форма) и команд (выполняемые действия). Описание формы создаются автоматически системой или программируются разработчиком. В любом случае внешний вид формы создается системой в процессе исполнения приложения на основе такого описания. В новой системе конструктор формы доступен не только разработчику, но — в несколько усеченном варианте — и пользователю. На клиентской стороне выполняется только отрисовка формы и ряд простейших операций. Сама же подготовка описания формы, ее бизнес-логика и работа с данными происходят на сервере.

Динамические списки. Эти элементы форм теперь строятся на базе динамической компоновки данных. Реализуется это так: разработчик либо указывает отображаемый объект конфигурации, либо задает запрос, который будет применяться для считывания данных. Система выполняет считывание данных по запросу порциями, по мере передвижения курсора по списку. Разработчик и пользователь имеют различные возможности компоновки данных при настройке отображения списка (отбор, упорядочивание, группировка, условное оформление).

Отчеты. Новая система формирования отчетов на базе компоновки данных с использованием механизма декларативного описания выборки, группировки и представления информации была реализована уже в версии 8.1 (фактически это была первая отработка идей «управляемого приложения»). Форму отчета система создает автоматически, но разработчик может ее изменить. В «1С:Предприятие 8. Управляемое приложение» получил развитие механизм настроек отчетов, который допускает два варианта работы. В первом случае (варианты отчета) разработчики и опытные пользователи могут применять все доступные возможности настройки для создания специализированных отчетов на базе одной схемы компоновки данных. Второй вариант (пользовательские настройки) включает ограниченный набор наиболее популярных настроек, доступный всем пользователям.

Использование прикладных объектов. Гибкость механизма декларативного описания интерфейса обеспечивается также за счет расширения состава свойств прикладных объектов, задаваемых в метаданных. В частности, добавлены свойства, описывающие отображение данных, причем такие параметры используются как в формах, так и в отчетах. Для прикладных объектов реализованы механизмы начального заполнения и проверки ввода обязательных полей. Введены также модули менеджеров, позволяющие реализовать процедуры и функции, которые логически относятся к функциональности объекта, но не связаны с его конкретным экземпляром.

Адаптация интерфейса

Декларативная модель предоставляет гибкие возможности для автоматической настройки интерфейса по желанию конкретного пользователя. В первую очередь, учитываются права пользователя, в частности, из интерфейса автоматически исключаются команды для обращения к объектам, доступ к которым пользователю закрыт. При этом нужно учитывать, что теперь можно установить права не только на объекты, но и на отдельные их реквизиты (например, поля форм или колонки списков). В зависимости от пользовательских ролей настраивается видимость интерфейсных элементов по умолчанию — в первую очередь показывается наиболее важная для данной роли функциональность, состав которой можно потом расширить за счет дополнительных элементов.

Новый механизм функциональных опций дает разработчику возможность описать зависимость между элементами интерфейса и потребностями конкретной организации. Например, если в прикладном решении предусмотрена возможность валютного учета, а конкретному заказчику такая функция не нужна (это задается на уровне информационной базы), то элементы и команды, связанные с механизмом валютного учета, будут автоматически исключены из интерфейса.

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

Модель приложения с точки зрения пользователя

До сих пор в "1С:Предприятие" использовалась классическая многооконная система по принципу интерфейса MDI, при котором главное окно служит оболочкой для всех дочерних окон и включает главное меню и панели инструментов для обращения к функциональности системы. В «1С:Предприятие 8. Управляемое приложение» (точнее, в управляемом режиме работы) каждое окно независимо и представлено отдельным элементом на панели задач Windows.

При запуске прикладного решения в среде «1С:Предприятие 8. Управляемое приложение» открывается его основное окно, в котором пользователь сразу видит структуру прикладного решения (рис. 2). Главное управление функциональностью представлено в верхней части окна в виде панели разделов, соответствующих подсистемам конфигурации верхнего уровня. При активации подсистемы вся функциональность представляется в виде команд в двух панелях — панели навигации и панели действий. Отметим, что пользователь может открыть несколько основных окон и работать с каждым из них независимо (например, при одновременной работе с разными подсистемами).

Логика действий пользователя соответственно выглядит так: навигация между подсистемами выполняется через основное окно, а основная работа идет во вспомогательных окнах.

Вызываемые пользователем списки открываются в рабочей области основного окна, замещая ранее открытую форму. При вызове же команд ввода и редактирования объектов, а также при открытии отчетов и обработок открываются отдельные, независимые вспомогательные окна (рис. 3).

Вспомогательные окна также могут иметь панель навигации, и в них можно выполнять переход к отображению форм, логически связанных с основным окном (без открытия нового окна).

Для удобства работы пользователя в «1С:Предприятие 8. Управляемое приложение» реализованы еще несколько механизмов навигации по функциональности. В частности, теперь есть возможность получить текстовую ссылку на любой объект информационной базы (документ, элемент справочника, отчет и т. п.) и быстро перейти в нужное место с помощью функции "перейти по ссылке" (сами ссылки можно сохранять в списке "Избранное"). Система автоматически хранит ссылки на последние созданные или обновленные объекты, этим списком также можно пользоваться для ускорения навигации по системе.

Кроме того, в основном окне приложения поддерживается режим рабочего стола, в котором отображается одновременно несколько форм, содержащих наиболее оперативную и часто используемую информацию.

Установка и запуск приложения

С целью повысить удобство работы в «1С:Предприятие 8. Управляемое приложение» были несколько изменены процедуры установки и запуска прикладного решения. Но чтобы оценить эти улучшения, нужно сначала вспомнить, как организована работа приложений в среде "1С:Предприятие 8". С точки зрения ОС (в данном случае Windows) в качестве запускаемого приложения выступает платформа «1С:Предприятие 8». Далее уже в среде этой платформы пользователь запускает нужное ему прикладное решение (рис. 4). Однако тут нужно сделать важное уточнение для тех, кто не очень хорошо знаком с системой «1С:Предприятие 8».

То, с чем работает пользователь, в терминологии "1С" называется "Информационная база" (ИБ). Она объединяет в себе и базу данных (БД), и программный код приложения, которое работает с этой БД. Иными словами, если нужно работать с несколькими БД, приходится соответственно создавать столько же ИБ, включая в них экземпляры соответствующих приложений (которые — обратим на это внимание — даже развиваются и модифицируются в собственном жизненном цикле).

Учитывая это, логика запуска и установки программ в «1С:Предприятие 8. Управляемое приложение» была несколько изменена по сравнению с «1С:Предприятие 8.х» и выглядит примерно так.

Установка. С дистрибутива устанавливается программа — платформа «1С:Предприятие 8. Управляемое приложение». С дистрибутива же устанавливаются шаблоны приложений (по сути это шаблон ИБ, который включает и код прикладного решения, и какую-то БД — уже заполненную или пустую).

Запуск. Запускается платформа «1С:Предприятие 8. Управляемое приложение», после чего пользователь должен выбрать нужную ему ИБ (рис. 5). Он может работать с уже установленной ранее ИБ или добавить в список новые ИБ.

Для добавления ИБ существуют два способа: создание новой ИБ или подключение физически существующей ИБ (но пока не включенной в список доступных). Для создания новой ИБ опять же применяются два способа: использовать готовый шаблон ИБ или начать ее написание "с нуля" (писать программный код, описывать структуру БД и т. д.).

Например, в комплект поставки бета-версии нового приложения "1С:Архив 8" входят два шаблона ИБ — собственно приложение (без БД) и демоверсия приложений (код + демо-БД). Соответственно, чтобы работать с демоверсией программы, сначала нужно создать новый экземпляр ИБ на основе имеющегося шаблона. Затем для запуска этой ИБ следует выбрать ее в списке окна "Запуск" и нажать кнопку "1С:Предприятие".