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