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

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

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

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

Позиционирование продукта

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

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

Интернет. Возможность доступа к Web-ресурсам самого широкого числа посетителей. Примером здесь может служить коробочное решение, разработанное петербургской компанией "Аркадия" (http://www.arcadia.spb.ru) совместно с "1С" под названием "1С:Аркадия Интернет-Магазин". Конечно, вряд ли данный продукт годится для создания огромных супермаркетов, но опыт продаж за последние полгода говорит, что он вполне подойдет для малых и средних электронных магазинов.

Экстранет. Обеспечение информационного взаимодействия с определенным кругом партнеров и заказчиков. Практически одновременно с объявлением первой версии "Web-расширения" компания "ИКС Технологии" (http://www.xtek.ru) создала на его основе систему "Портал дистрибутора" для работы со своими дилерами в онлайновом режиме. С осени прошлого года эта технология предлагается в виде тиражируемого решения ("ИКС:Web-портал дистрибутора").

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

Структура 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С:Предприятие 7.7. Web-расширение" включает две необходимые технологические программные части: Web-компонент для "1С:Предприятия" и библиотеку V7 Scripting Engine (рис. 1).

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

Логика его работы заключается в том, что при обработке страницы 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/Windows 2000.

Для начала создадим небольшое тестовое приложение (в терминологии "1С" оно называется конфигурацией). В среде "1С:Предприятие" на основе базового объекта "Справочник" сформируем таблицу с именами и телефонами сотрудников предприятия (рис. 2). Чтобы убедиться, что программа действительно готова к работе через Интернет, просмотрите пункт "О программе" в меню "Помощь" - в появившемся окне выводится информация о том, что Web-расширение подключено к системе (рис. 3).

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

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

Далее напишем ASP-страницу, обеспечивающую доступ удаленного пользователя к этому справочнику. В принципе это можно сделать с помощью любого текстового редактора, но мы воспользуемся программой Microsoft 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-компонентов.

Fig.4
Рис. 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 с кодом, приведенным в листинге во врезке. В данном случае использование русской мнемоники в языке V7Script оказывается очень удобным: операторы на английском языке соответствуют обращению к объектам IIS, на русском - к объектам "1C:Предприятия".

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

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

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

Содержимое страницы Default.asp

<%@Language=V7Script%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; 
		charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Home Page</title>
</head>
<body>
<form method="GET" action="default.asp">
<p>Имя адресата: <select size="1" name="name">
<%
ТребИмя = Request.QueryString("name").Item;
Спр = СоздатьОбъект("Справочник.АдреснаяКнига");
Спр.ВыбратьЭлементы();
Пока (Спр.ПолучитьЭлемент() = 1) Цикл
Если (ТребИмя = Спр.Наименование) Тогда
%>
<option selected>
<%Иначе%>
<option>
<%КонецЕсли;%>
<%=Спр.Наименование%>
</option>
<%КонецЦикла;%>
</select>
<input type="submit" value="Спросить"></p>
<p>Телефон:
<%
Если (ТребИмя <> "") Тогда
Спр.НайтиПоНаименованию(ТребИмя, 0, 1);
Если (Спр.Выбран() = 1) Тогда
Response.Write(Спр.ТелефонРабочий);
Иначе
Response.Write("Адресат отсутствует");
КонецЕсли;
КонецЕсли; %>
</p>
</form>
</body>
</html>

От версии 1.0 - к 2.0

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

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

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

  • обеспечена синхронизация работы всех элементов Web-приложений с помощью Диспетчера;
  • реализована возможность интерактивной настройки и контроля через стандартное средство администрирования Microsoft Management Console;
  • добавлен специальный конструктор для создания макетов Web-приложений, в которые можно переносить справочники, документы, журналы и отчеты "1С:Предприятия".

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

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

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

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

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

Конструктор макета

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

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

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

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

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

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

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

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

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

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

Fig.13
Рис. 13. Синхронная работа Web-приложения и "1С:Предприятия".

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

Просто и со вкусом

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

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