График : Пн-Пт: 9.30 - 18.00
Содержание статьи:
В предыдущих выпусках рубрики мы уже рассказывали о возможностях создания и использования удаленных рабочих мест с помощью продукта «1С:Web-расширение». Конечно, использование Web-клиента — это здорово, но все же сегодня такого механизма уже явно недостаточно для создания действительно мобильных решений. Ведь применение Web-приложений подразумевает дистанционный доступ к централизованным вычислительным ресурсам в режиме постоянного соединения, в то время как на практике сегодня желательно иметь автономные решения, которые могли бы работать на различных малогабаритных устройствах и которые обменивались бы данными с главной системой лишь по мере необходимости.
Действительно, для выполнения многих частных задач конкретному пользователю совсем не нужна полная функциональность «1С:Предприятия» и все данные, хранимые в информационной базе. Ему нужны только средства для выполнения конкретных задач, стоящих перед ним.
Вот простой пример — торговый агент, который объезжает клиентов и собирает у них заказы по достаточно узкой номенклатуре изделий (из того, что на самом деле есть в ассортименте торговой организации). Для этого ему нужно загрузить на свой ноутбук или карманный компьютер соответствующий каталог и список контрагентов. Потом он уезжает и, находясь у клиента, сформирует заказы с помощью карманного устройства. Вечером он приезжает в офис и сбрасывает собранные данные в центральную систему.
Конечно, было бы лучше, если бы агент имел возможность использовать оперативную связь с компанией. Тогда он мог бы, оформив заказ у клиента на другом конце города, сразу обменяться данными с сервером, расположенным в собственном офисе, например через GPRS или Интернет, чтобы сотрудники офиса сразу же приступили к обработке этого заказа, а заодно и обновить используемый им каталог товаров, чтобы иметь актуальную информацию.
Реализовать такой режим работы для «1С:Предприятия» теперь можно, причем довольно просто — с помощью нового программного продукта»1С:Предприятие 8. Расширение для карманных компьютеров» (1С:РКК), разработанного фирмой «1С» совместно с компанией «ДИСКо» (www.disco.ru), специализирующейся на создании Интернет-приложений и решений для PDA-устройств.
Этот пакет предназначен для создания автономных приложений, функционирующих с данными информационных баз «1С:Предприятия 8» на карманных компьютерах и коммуникаторах, работающих под управлением Windows Mobile 2003 или Windows Mobile 5.0 (на базе процессоров Intel ARM), а также на ноутбуках и ПК с Windows 2000 и выше.
В поставку продукта входят следующие программные компоненты:
Все программные компоненты, входящие в состав продукта, имеют как русский, так и англоязычный интерфейс.
Говоря о логике применения 1С:РКК, нужно напомнить, что вся платформа «1С:Предприятия» в целом реализует БД-ориентированную модель создания ПО. Соответственно ядром прикладного решения является комплекс метаданных (описание используемых объектов и взаимосвязей между ними), вокруг которого формируется, с одной стороны, программный код, а с другой — собственно база данных (БД) конкретного заказчика. А все это вместе (метаданные, программы и данные) составляет, в терминологии «1С», информационную базу (ИБ), которая функционирует в среде «1С:Предприятия».
Так что если прикладная программа в обычном понимании является «приложением» к операционной системе и может работать с разными БД (например, Word может функционировать со всевозможными документами и не связан жестко с каким-то одним из них), то в рамках архитектуры «1С» прикладная программа — это компонент ИБ, что-то вроде «большой» хранимой процедуры для обработки БД.
Такая же модель используется при создании и применении мобильных приложений с помощью 1С:РКК. МП представляют собой опять же программные компоненты ИБ, логически привязанные к ее метаданным и программному коду. Соответственно, несколько упрощенно говоря, МП записываются на КПК только на время из применения как бы «разового использования». Точнее, МП могут и долго храниться на КПК, но это скорее режим кэширования, который в общем случае требует регулярной синхронизации кода и данных с центральной ИБ. Мне кажется, что было бы даже правильнее говорить не о «мобильных приложениях», а о «мобильных расширениях» прикладного решения...
В целом общая схема применения продукта тут выглядит примерно так (для простоты клиентское устройство мы будем обозначать как КПК, а компьютер с установленным «1С:Предприятием» — ПК):
1. Разработка и администрирование
2. Работа пользователя с МП
В целом логика практического применения 1С:РКК выглядит достаточно понятно. Имея минимальные представления о разработке ПО в среде «1С:Предприятия» и разобравшись с основами технологии (под руководством опытного инструктора на это уйдет часа 2—3), создать простое, но полезное мобильное приложение можно за полчаса. Попробуем проиллюстрировать это утверждение на приведенном ниже примере.
1. Разработка приложения. Реализуем такую простейшую задачу: пользователь вводит на КПК заказы покупателей. Для этого ему потребуется каталог товаров и список клиентов.
Запускаем редактор МП. Добавляем в список приложений новый проект и указываем информационную базу «1С:Предприятия», для которой он разработан. Создадим для справочника «Номенклатура» форму, при помощи которой пользователь будет подбирать нужный товар в заказ.
Обратите внимание, что мы размещаем на форму только те данные справочника, которые нам нужны для этой конкретной задачи.
Аналогичным образом построим формы для справочников «Контрагенты». Кроме того, нам необходимо создать форму собственно документа «Заказ покупателя».
Добавим возможность автоматического расчета суммы, исходя из указанной пользователем цены товара и количества. Для этого колонкам «Количество» и «Цена» назначим обработчики соответствующих событий, вызываемых при изменении значения в этих колонках, и напишем в модуле формы документа код для подсчета суммы:
Процедура ПодсчетСуммы ()
СтрокаЗаказа = ЭлементыФормы.Товары.ТекущиеДанные;
СтрокаЗаказа.Сумма = СтрокаЗаказа.Количество*СтрокаЗаказа.Цена;
КонецПроцедуры
В заключение создадим стартовую форму со списком «Заказов покупателя», которая будет отображаться при запуске мобильного приложения. Заметим, что редактор автоматически разместил в меню стартовой формы пункт «Связь с сервером».
После этого сохраним готовое приложение в каталоге на диске.
2. Формирование программного взаимодействия сервер МП — ИБ «1С:Предприятия». Мне кажется, что это — ключевой этап в создании МП. В нашем примере мы пройдем его за несколько минут, но сначала нужно дать некоторые общие пояснения.
Взаимодействие редактора и сервера МП с информационной базой «1С:Предприятия» выполняется через фиксированный программный интерфейс (назовем его «Менеджер Мобильных Приложений», ММП), реализованный со стороны ИБ и состоящий из семи предопределенных методов.
Физически ММП реализуется в виде обработки (внутреннего программного объекта прикладного решения), доступ к которой со стороны внешних приложений (РМП и СПМ) выполняется через также фиксированный метод ПолучитьМенеджерМобильныхПриложений, описанный в общем модуле, доступном для внешнего соединения с ключевым словом Экспорт.
// Данная функция должна находиться в общем модуле прикладного решения
// Она возвращает обработку "МенеджерУправленияМобильнымиПриложениями"
//
Функция ПолучитьМенеджерМобильныхПриложений() Экспорт
МенеджерМобильныхПриложений = Обработки.МенеджерМобильныхПриложений.Создать();
Возврат МенеджерМобильныхПриложений;
КонецФункции
Суть данного этапа — написание программного кода ММП. Мы сейчас писать ничего не будем, а воспользуемся готовой подсистемой, которая включена в состав демонстрационного примера: скопируем ее оттуда в нашу ИБ.
Обратите внимание: программный код каждого метода состоит из одной строки — обращения к каким-то другим внутренним функциям. Каждая из них содержит довольно значительный объем программного кода. Но этот вариант реализует некий универсальный механизм взаимодействия, который мы используем и в нашем случае, сделав ряд несложных операций по описанию конфигурационных данных. Но при желании (и наличии определенного опыта) разработчик может написать собственный вариант ММП, который будет более специализированным (не таким объемным) и более оптимальным для данного конкретного решения.
Редактор МП использует только один метод ММП — ЗаписатьМобильноеПриложение, который вызывается при нажатии кнопки «Записать МП» в среде РМП. Внутренний код, реализующий эту операцию, выглядит примерно так:
// Получить экземпляр объекта ММП
ММП = ПолучитьМенеджерМобильныхПриложений;
// Формирование данных о МП
…
// Записать МП
ММП.ЗаписатьМобильноеПриложение(ИмяМобильногоПриложения,
ВерсияМобильногоПриложения, МобильноеПриложениеСтрокой,
ИспользуемыеМетаданные)
Обратите внимание на то, что, прежде чем сохранить МП в ИБ, нужно написать программный код этого метода (это само по себе довольно странно). Куда же записывается созданное МП? Тут могут быть разные варианты, выбор которых отдан на усмотрение прикладного разработчика — как он реализует метод ЗаписатьМобильноеПриложение. В нашем случае (мы используем ММП демопримера) МП будет записывать в специально созданный раздел ИБ под названием «Хранилище МП».
Сервер МП работает с остальными методами, ключевых из которых три. Посмотрим на них, чтобы понять логику работы всей системы. Для начала уточним: СМП работает с ИБ не сам по себе, а передавая соответствующие запросы с КПК.
Работа начинается с аутентификации пользователя (осуществляется вызов метода
ВыполнитьАутентификацию(ИмяПользователя,
КодМобильногоКомпьютера, ПарольПользователя))
Далее происходит получение мобильного приложения
МП = ПолучитьМобильноеПриложение(ИмяПользователя,
КодМобильногоКомпьютера)
Итак, мы видим, что идентификация нужного МП выполняется по имени пользователи и коду КПК. Но понятно, что эти сведения должны быть продублированы на стороне ИБ.
При запуске МП на выполнение (или перед запуском) оно должно получить необходимые данные:
ДанныеМП = ПолучитьДанные(ИмяПользователя,
КодМобильногоКомпьютера,
Знач ПервичнаяИнициализацияИБНаКПК = Ложь)
Здесь заметна любопытная вещь: получается, что данные поступают не приложению, а пользователю! Из этого можно сделать вывод: конкретный пользователь на конкретном КПК может работать только с одним МП. Понятно, что ММП по полученным параметрам сможет определить, о каком МП идет речь. Но откуда он узнает, какие данные нужно передавать на мобильный клиент?
Это опять же программируется в самом методе ПолучитьДанные. Но мы используем готовую программную конструкцию, которая для определения нужных данных использует механизм ПланыОбмена. То есть нам нужно сделать описание «Плана Обмена» для нашего мобильного приложения.
После вышесказанного понятно, как будет работать запись данных из МП в ИБ:
ЗаписатьДанные(ИмяПользователя, КодМобильногоКомпьютера,
ДанныеМобильногоПриложения)
Итак подведем итоги: что же конкретно нам нужно сделать для создания программного интерфейса ММП
Разговоров здесь было много, а, по сути, все наши практические шаги можно сделать за несколько минут. Причем тут видно, что администратор системы, редактируя список, сможет интерактивно определять, какой мобильный пользователь с каким мобильным компьютером и приложением может работать.
Но тут нужно подчеркнуть: мы сейчас использовали некий универсальный механизм, который, возможно, будет не самым оптимальным для конкретного решения. Если мы захотим повысить эффективность нашего мобильного клиента, то придется разобраться в ММП серьезнее и потратить больше времени на программирование руками.
Но, рассказав, как мы выполнили этот этап, нужно сделать несколько критических замечаний по его реализации разработчиками «1С».
1. Совершенно очевидно, что эта таблица должна быть разделена на две: одна должна определять взаимосвязь «пользователь — МП» (с ней имеет дело системный администратор), а вторая «МП — схема обмена» (это относится к компетенции разработчика). Тем более что, имея дело с одной таблицей, может легко получиться так, что для одного и того же приложения будут прописаны разные схемы обмена данными.
2. Самое главное — вообще непонятно, зачем нужно было в ММП кодировать на программном уровне схему обмена данными! Дублирование тут очевидно: ведь при описании плана обмена мы фактически повторили то же самое, что уже проделывали при создании самого приложения. Не говоря уже о том, что при записи МП в ИБ методом ЗаписатьМобильноеПриложение мы передали четвертый параметр — ИспользуемыеМетаданные, где содержится XML-файл с перечнем метаданных, используемых приложением.
3. Инициализация КПК. Этот пункт мы не будет описывать — это достаточно просто.
4. Администрирование сервера мобильных приложений. Чтобы мобильный пользователь мог обмениваться данными с ИБ «1С:Предприятия», нам потребуется настроить и запустить сервер МП. Для этого запускаем сервер в список ИБ, доступных серверу, добавляем информацию о новой базе — каталог базы, способ доступа и ряд других настроек. Способ доступа укажем с использованием протокола TCP/IP — это позволит нам связываться с сервером посредством WiFi, BlueTooth, GPRS (конечно, при условии, что используемые мобильные устройства обеспечивают поддержку этих технологий).
5. Работа пользователя. Запускаем на КПК установленную платформу исполнения МП. Видим, что список ИБ пуст. Добавляем в него описание новой базы. Нажимаем кнопку «Открыть». Поскольку информационная база еще не создана, выдается диалог установки пароля. Пароль должен соответствовать тому, который определен в настройках для данного пользователя в ИБ 1С:Предприятия.
После этого платформа исполнения осу ществляет запуск мобильного приложения. Поскольку в нашем случае мы еще не получали никаких данных и самого приложения, открывается диалог связи с сервером — никакие другие операции, кроме связи с сервером, еще недоступны.
Для связи с сервером необходимо указать нужный тип связи и адрес сервера. Мы планируем осуществлять связь посредством GPRS, используя протокол TCP/IP. Указываем соответствующие настройки — тип связи и IP-адрес компьютера, на котором запущен сервер мобильных приложений.
Далее нажимаем в диалоге связи кнопку Старт (см. выше) и следим за осуществлением обмена с сервером: мы получаем оттуда нужное текущему пользователю приложение и необходимые данные. По окончании обмена производится запуск полученного приложения и отображается стартовая форма. После этого пользователь работает с приложением. Тем, кто имеет опыт работы с «1С:Предприятием», все достаточно привычно.
При необходимости передать данные на сервер выбираем в меню стартовой формы пункт «Связь с сервером». При этом открывается уже знакомый диалог связи.
Итак, мы бегло познакомились с новым продуктом «1С», который позволяет создавать «интеллектуальные» клиентские рабочие места с использованием разных мобильных устройств. Это совсем несложно — создание нашего полезного и работоспособного примера потребовало не более получаса. Хотя, конечно, для реализации более изощренных решений придется глубже разобраться с возможностями продукта и поинтенсивнее поработать руками.
Наверное, не все процессы создания и администрирования еще в 1С:КПК проработаны до конца, но все же не будем забывать — это версия 1.0. Но ее можно применять в реальных условиях у заказчика!