Главная страница Visual 2000 · Общий список статей

Разработка Web-приложений для "1С:Предприятия"
Компания "1С" создала компонент "Web-расширение" для платформы "1С:Предприятие", обеспечивающий механизм удаленного доступа пользователей к системе через Интернет.

Андрей Колесов

© Андрей Колесов, 2001
Авторский вариант. Статья была опубликована c незначительной литературной правкой в журнале BYTE/Росся (N 04/2001, с.48)
В этой статье продолжается тема, ранее рассмотренная в статьях, опубликованных в "КомпьютерПресс" и PC Week. Но вторая часть посвящена новшествам версии 2.0.


Несмотря на популярность темы электронной торговли...

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

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

Ровно год назад, на выставке "Комтек-2000" фирма "1С" представила программный компонент "Webрасширение" (в виде отдельного коробочного продукта) для системы "1С:Предприятие 7.7". А под занавес уходящего века была выпущена его вторая версия.

В начало статьи

Позиционирование "1С:Web-расширения"

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

Технологии "1С" могут применяться для создания всех трех основных категорий Web-приложений:

В начало статьи

Структура Web-компонента и общая схема разработки

"1С:Web-расширение" — это чисто технологический компонент, обеспечивающий связь "1С:Предприятия" и Web-сервера. Он реализован на основе технологии Active Server Pages (ASP) в среде Microsoft Internet Information Server 4.0 или выше.

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

Сама ASP-технология не содержит встроенных средств для выполнения скриптов — эти функции возлагаются на сервер. В качестве стандартного набора таких исполняемых механизмов в составе IIS имеются JavaScript Engine и VBScript Engine для соответствующих языков. Однако самое важное здесь заключается в том, что IIS использует технологию Active Scripting, открытые интерфейсы которой позволяют разрабатывать и подключать произвольные скриптовые языки.

Именно этот факт используется в решении "1С", которое предусматривает создание ASP-приложений с применением встроенного языка "1С:Предприятие", схема которого приведена на рис. 1. Собственно продукт "1С:Предприятие 7.7. Web-расширение" включает две необходимые технологические программные части: Web-компоненту для "1С:Предприятия" и библиотеку V7 Scripting Engine.

Рис.1. Общая схема работы Web-приложения в среде "1С:Предприятие 7.7. Web-расширение".

В общем виде логика работы заключается в том, что при обработке страницы IIS передает в V7 Scripting Engine сформированный скрипт (просто складывая последовательные фрагменты кода), который фактически представляет собой модуль для исполнения в среде "1С:Предприятие". Кроме того, IIS передает контекст страницы в виде набора доступных объектов, которые библиотека также отправляет далее в "1С:Предприятие". Соответственно все эти объекты становятся доступными для "1С:Предприятия" через свой встроенный объект ASP (он входит в состав Web-компоненты). Через ASPобъект приложение может также вызывать процедуры и функции, реализованные на других скриптовых языках. Объекты самого IIS — Request, Response, Application, Session и Server — доступны из скрипта напрямую.

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

  1. Незащищенной части, по которой любой пользователь может ходить произвольным образом.
  2. Блока, обеспечивающего авторизацию пользователя.
  3. Защищенной части, в которую пользователь попадает только после авторизации. Перемещения здесь производятся под постоянным контролем механизма авторизации с учетом полученных пользователем прав доступа.

В начало статьи

Создание первого Web-приложения

Покажем общую логику разработки на простом примере, выполненном "с нуля". Для работы нам понадобится компьютер с установленными "1С:Предприятие" и "1С:Web-расширение", работающими в среде Windows NT 4.0 (или старше).

Для начала создадим небольшое тестовое приложение (в терминологии "1С" оно называется конфигурацией) — в среде "1С:Предприятие" на основе базового объекта "Справочник" сформируем таблицу с именами и телефонами сотрудников предприятия (рис. 2).

Рис.2. Пример приложения "Адресная книга".

Чтобы убедиться, что программа действительно готова к работе через Internet, выполните команду "О программе" в меню "Помощь" — на появившемся окне видна информация о том, что Web-расширение подключено к системе (рис. 3).

Рис.3. В окне Справки видно, что Web-расширение подключено.

Далее напишем ASP-страницу, обеспечивающую доступ удаленного пользователя к этому справочнику. В принципе это можно сделать с помощью любого текстового редактора, но мы сейчас воспользуемя программой MS FrontPage 2000. Создадим новую Web-страницу и сразу запомним ее с именем Default.asp. Для размещения визуальных элементов можно воспользоваться разнообразным инструментарием FrontPage, но в данном случае мы обойдем без него. Откроем вкладку HTML редактора и вручную впишем такой код между тегами <body></body>:


<form method="Get" action="default.asp">
<p>Имя адресата: <select size="1" name="Name">
</select> 
<input type="submit" value="Спросить"> 
</p>
<p>Телефон: </p>
</form>

Теперь перейдем во вкладку Normal, чтобы посмотреть, как будет внешне выглядеть созданный нами визуальный интерфейс (рис. 4). Обратите внимание на то, что наш код ограничен тегами <form></form> для объединения используемых нами HTML-компонентов.

Рис.4. Так выглядит интерфейс справочника.

Собственно на этом создание HTML-заготовки закончено, теперь нужно "активизировать" страницу, написав небольшую программу на V7Script. Для этого в первую очередь нужно записать в самую первую строчку страницы директиву <%@Language=V7Script%>, которая указывает, что для выполнения программы IIS должен использовать библиотеку V7 Scripting Engine. Далее между тегами <select></select> впишем такой код, который будет обращаться к справочнику "Адресная книга" и формировать текущий список сотрудников:


<%
  ТребИмя = Request.QueryString("name").Item;
  Спр = СоздатьОбъект("Справочник.АдреснаяКнига");
  Спр.ВыбратьЭлементы();
  Пока (Спр.ПолучитьЭлемент() = 1) Цикл
    Если (ТребИмя = Спр.Наименование) Тогда
%>
  <option selected>
    <%Иначе%>
  <option>
    <%КонецЕсли;%>
    <%=Спр.Наименование%>
  </option>
<%
  КонецЦикла;
%>

Код скрипта реализован с использованием тега <%%>, т.е. он соответствует языку, который установлен для этой страницы в качестве первичного. В случае необходимости на одной странице можно использовать несколько языков для написания скриптов, но в этом случае следует использовать теги <script></script> с явным указанием конкретного языка.

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

Далее нужно написать простой код, который будет по нажатию кнопки "Спросить" получать телефон указанного сотрудника:


<p>Телефон: 
  <% 
  Если (ТребИмя <> "") Тогда
    Спр.НайтиПоНаименованию(ТребИмя , 0, 1);
    Если (Спр.Выбран() = 1) Тогда
      Response.Write(Спр.ТелефонРабочий);
    Иначе
      Response.Write("Адресат отсутствует");
    КонецЕсли;
  КонецЕсли; %>
</p>

В результате всех этих несложных операций у нас должна сформироваться страница Default.asp с кодом, приведенным на листинге 1. В данном случае как раз очень полезно использование русской мнемоники в языке V7Script: операторы на английском языке соответствуют обращению к объектам IIS, на русском — к объектам "1C:Предприятия".

Теперь можно загрузить созданную нами ASP-страницу в браузер и убедиться, что через нее можно получать информацию из Адресной Книги, которая работает в среде "1C:Предприятие" (рис. 5). Более того, если вы сейчас будете корректировать этот справочник, новая информацию будет автоматически отображаться в браузере и нажатии команды "Обновить".

Рис.5. Окно удаленного доступа из браузера в программе "Адресная книга".

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

В начало статьи

В начало статьи

От версии 1.0 к 2.0

Из приведенного выше примеры видно, что при создании Web-приложения программисту придется довольно много кода писать руками, без поддержки возможностей интеллектуального редактора. Но сама логика разработки выглядит достаточно простой и позволяет легко применять другие удобные средства программирования, в том числе те же JavaScript и VBScript.

Большой объем "ручное работы" — это естественная характеристика любой технологии на начальной стадии ее становления. Кстати, упростить отладку Web-приложения можно использую такой прием: сначала создается прототип программы в среде "1С:Предприятие" с обычным интерфейсом (используя все средства отладки "Конфигуратора"), а потом отлаженный код переносится в ASP-страницы.

В версии 2.0 логика разработки и написания кода осталась в целом такой же, однако в новом продукте появились некоторые полезные дополнительные функции и средства:

В начало статьи

Средства диспетчеризации и администрирования

Появление нового модуля — Диспетчера Web-расширения — вызвано необходимостью обеспечить надежную работу нескольких экземпляров ASP-приложений и нескольких систем "1С:Предприятие" одновременно. Диспетчер распределяет запросы на исполнение ASP-страниц, поступающих от IIS, среди доступных в данный момент "1С:Предприятий" в соответствии с заданными настройками. Пользователь можно вызвать окно Диспетчера, в котором видны параметры текущих настроек и статистика работы (рис. 6). Настройка самого диспетчера заключается в установке двух параметров — временного интервала сбора статистики и имени файла, используемого при обращении к Администратору.

Рис.6. Окно диспетчера Web-расширения.

Основная идея администрирования в данном случае заключается в описании параметров каждого Web- приложения и всех запусков "1С:Предприятия", а также установлении их взаимосвязей. Внутренний механизм тут остался прежним, но если в версии 1.0 нужно было описывать структуру системы путем непосредственного редактирования текстового конфигурационного файла, то теперь это делается специальным визуальным средством — Администратором Web-расширения, реализованным на основе стандартного средства управления Windows NT/2000 — Microsoft Managament Console (MMC). При этом используется возможность администрирования в среде MCC различных дополнительных сервисов с помощью подключения специальных компонентов snap-in. Для управления настройками Web- расширения используется файл v7snapin.msc. Дерево объектов администратора включает корневой узел компьютера с запущенным Диспетчером (таких корневых узлов может быть несколько) и трех основных подузлов: статистики, обрабатываемых Web-приложение и используемых запусков "1С:Предприятия". Вызов Администратора выполняется из Диспетчера или непосредственно из меню Windows (рис. 7).

Рис.7. Управление Web-расширением с помощью Microsoft Managament Console.

В начало статьи

Использование Конструктора макета Web-приложения

В состав Web-расширения 2.0 включен Конструктор макетов Web-приложений, который существенно упрощает разработку сложных систем. Конструктор запускается из среды "1С:Конфигуратора".

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

Рис.8. Набор файлов Web-приложения, созданного Конструктором в режиме "по умолчанию".

Начальная страница (main.asp) появляется после запуска Web-приложения. Вариант, созданный "по умолчанию", не содержит никакой содержательной информации и имеет вид, представленный на рис. 9.

Рис.9. Начальная ASP-страница, созданная Конструктором.

Остальные ASP-страницы в целом аналогичны соответствующим объектам "1С:Предприятия". Хотя функциональность макета, созданного в режиме "по умолчанию" (т.е. созданного на основе предлагаемого базового набора объектов), минимальна, но все же даже с его помощью пользователь может начать работать с некоторыми данными учетной системы. Например, управляя интервалом дат можно получать данные из реального журнала, хранимого в "1С:Предприятие" (рис.10, общий журнал всегда присутствует в системе и содержит документы).

Рис.10. ASP-страница с содержимым общего журнала.

Далее пользователь может добавлять собственные справочники, документы, журналы и отчеты, используя соответствующий набор Web-конструкторов (рис. 11).

Рис.11. Создание нового объекта с помощью Конструктора.

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

Рис. 12. Набор объектов созданного Web-приложения.

Таким образом, с помощью только Web-конструкторов, не написав ни строчки кода, можно создать достаточно полезное Web-приложение, с помощью которого, например, получать разнообразные отчеты (рис.13).

Рис.13. Страница с полученным отчетом.

При отладке системы на одном компьютере легко убедиться, что Web-приложение и "1С:Предприятие" работают совершенно синхронно (рис.14).

Рис.14. Синхронная работа Web-расширения и "1С:Предприятия".

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

В начало статьи

Простенько и со вкусом

Представляя свое решение, разработчики "1C" всегда подчеркивают, что создание Web-расширения не ставит целью конкурировать с существующими средствами разработки Web-приложений. Задача более конкретная — открыть простой и удобный доступ к работающим прикладным системам "1С:Предприятия" через Web. И задача эта решена.

Если первая версия этого продукта, скорее, напоминала действующий макет технологии (слишком много ручной работы), то появление конструкторов, средств диспетчеризации и администрирования делает его инструментом создания достаточно сложных Web-приложений широким кругом разработчиков. Конечно же, хотелось бы иметь специализированную среду, в которой можно было бы писать и отлаживать, как HTML-код, так и V7Script-программу. Но вполне вероятно, что такие средства появятся в следующих версиях "1С:Web-расширения".

В начало статьи