Архитектура управляемого приложения ориентирована на максимальный перенос выполнения всей функциональности на сервер и максимальное «облегчение» клиента.
В предыдущих версиях платформы форма и командный интерфейс полностью располагались на клиенте и обращения к серверу выполнялись в основном для считывания и записи прикладных данных. Также на сервер могли переноситься отдельные части вычислений с помощью серверных общих модулей.
В управляемом приложении вся работа прикладных объектов выполняется только на сервере. Функциональность форм и командного интерфейса также реализована на сервере.
На сервере выполняется подготовка данных формы, расположение элементов, запись данных формы после изменения. На клиенте отображается уже подготовленная на сервере форма, выполняется ввод данных и вызовы сервера для записи введенных данных и других необходимых действий.
Аналогично командный интерфейс формируется на сервере и отображается на клиенте. Также и отчеты формируются полностью на сервере и отображаются на клиенте.
При этом механизмы системы ориентированы на минимизацию объема данных, передаваемых на клиентский компьютер. Например, данные списков, табличных частей и отчетов передаются с сервера не сразу, а по мере просмотра их пользователем.
Что работает на сервере:
Запросы к базе данных
Запись данных
Проведение документов
Различные расчеты
Выполнение обработок
Формирование отчетов
Подготовка форм к отображению
…
Что работает на клиенте:
Получение и открытие форм
Отображение форм
«Общение» с пользователем (предупреждения, вопросы…)
Небольшие расчеты в формах, требующие быстрой реакции (например, умножение цены на количество)
Работа с локальными файлами
Работа с торговым оборудование
Встроенный язык на клиенте
Однако управлять функциональностью системы можно и на клиенте. На клиенте поддерживается работа встроенного языка. Она используется в тех случаях, когда необходимо провести расчеты, связанные с отображенной на экране формой, например, быстро (без обращения к серверу) подсчитать сумму строки документа на основе цены и количества; задать пользователю вопрос и обработать ответ; прочитать файл из файловой системы компьютера и отправить его на сервер.
Но работа встроенного языка на клиенте поддерживается в строго ограниченном объеме. Клиентские процедуры в модулях в явном виде отделяются от серверных, и в них используется ограниченный состав объектной модели встроенного языка.
На клиенте не допускается непосредственная работа с базой данных. Не допускается работа непосредственно с прикладными объектами, например, недоступны такие типы, как СправочникОбъект.<имя>. Не допускается использование запросов. При необходимости вызова действий с данными в клиентском коде нужно вызывать серверные процедуры, которые уже будут обращаться к данным.
Работа управляемых форм
Для работы с прикладными данными в формах используются специализированные типы данных, предназначенные именно для отображения и редактирования данных в форме. Они наполняются на сервере из данных прикладных объектов и преобразуются потом обратно для записи измененной информации в базу данных.
Таким образом, форма не работает непосредственно с данными прикладных объектов, а имеет собственную структуру данных, связанную с элементами формы. Преобразование данных прикладных объектов в данные формы и обратно осуществляется системой автоматически при выполнении стандартных действий в форме.
Но при реализации собственных алгоритмов разработчик должен вызывать такое преобразование самостоятельно.
Таким образом, разработчику нужно понимать, что он фактически работает с двумя контекстами исполнения системы: серверным и клиентским. И между ними происходит обмен данными. При разработке необходимо заботиться о минимизации клиент-серверного взаимодействия (сокращении объемов передаваемых данных, минимизации вызовов сервера и максимальной реализации бизнес-логики на сервере).
Одинаковая работа в разных режимах
Программная модель управления клиентским приложением и взаимодействия между клиентом и сервером реализована таким образом, чтобы обеспечить работу системы с одной конфигурацией как в режиме тонкого клиента, так и в режиме Веб-клиента.
Это определяет ряд особенностей и ограничений. Например, для работы с файлами предоставляется специальный механизм, который обеспечивает обмен файлами между клиентом и сервером с учетом ограничений, которые накладывает модель безопасности интернет-браузеров.
Эффективная проверка прав доступа
Перенос выполнения бизнес-логики на сервер влияет на методику проверки прав доступа. Появляется возможность выполнять больше действий прикладных объектов в привилегированном режиме, так как они теперь выполняются на сервере и не требуют проверки прав доступа при обращении к данным информационной базы.
Например, при проведении документа не обязательно проверять права доступа по регистрам, так как достаточно проверки того, что пользователю можно записать и провести документ с таким составом информации. Для этого введена возможность программного включения и выключения привилегированного режима в модулях на сервере. Также введена возможность установки в метаданных выполнения в привилегированном режиме проведения документа, отмены проведения документа и формирования задач бизнес-процессов.
Файловый вариант
Работа в файловом варианте также поддерживается системой для конфигураций, использующих режим управляемого приложения. Никаких изменений для этого в конфигурацию вносить не нужно. Разумеется, в этом случае вся функциональность (как серверная, так и клиентская) выполняется на клиенте.
Взаимодействие с кластером серверов
В управляемом приложении введено понятие сеанс работы пользователя. В отличие от соединения, сеанс является логической идентификацией работы пользователя с системой и не привязан к конкретному рабочему процессу кластера. Для пользователя, работающего с тонким или Веб-клиентом, каждый вызов сервера может отрабатываться любым из имеющихся рабочих процессоров на любом сервере кластера.
Следует отметить, что повышена надежность работы сервера и его устойчивость к сбоям программной и аппаратной части. Выход из строя или плановая замена сервера не требуют завершения работы пользователей.