Интернет-технологии в системе «1С:Предприятие»
Решение «1С» и структура Web-компонента
Создание первого Web-приложения
Листинг. Содержание страницы Default.asp
Некоторые аналогии технологии разработки
«ИКС Технология» автоматизирует свою работу
Интернет-магазин компании «Аркадия»
Важная роль Интернета как базовой технологии для организации бизнеса не нуждается сегодня в особых доказательствах. Поддержка конкурентоспособности любых предприятий (от небольшой фирмы до гигантской корпорации) ставит в наши дни обязательным условием создание информационной инфраструктуры, которая наряду с высокой оперативностью должна обеспечивать взаимодействие всех участников деловых процессов (как сотрудников организации, так и клиентов и партнеров), независимо от их географической удаленности.
В этой ситуации выглядит вполне естественным появление весной нынешнего года специального программного компонента «Web-расширение» в составе одной из самых популярных в России учетных систем «1С:Предприятие». Стоит отметить своевременность создания данной функции. Действительно, на момент первого его представления на выставке «Комтек-2000» в среде многих партнеров и клиентов фирмы «1С» бытовало мнение о том, что это — некая «дань моде». Однако уже спустя два месяца, на летнем партнерском семинаре, наблюдался чисто деловой интерес к использованию данного компонента.
Основы серверных технологий
Как я уже отмечал в статье «1С:Предприятие» как платформа разработки приложений» (КомпьютерПресс 5’2000, с. 151-155), технологическую основу пакета составляет набор функциональных объектов, собранных в несколько компонентов. (С точки зрения современной терминологии Windows компонент «1С» — фактически библиотека объектов.) «Web-расширение» — это второй чисто технологический компонент, обеспечивающий связь самого приложения и Web-сервера. (В системе давно имеется еще один технологический компонент — «Управление распределенными базами данных».)
Серверные технологии, используемые в Web-приложениях, основаны на реализации простой идеи динамического формирования HTML-страниц, которым Web-сервер обменивается с браузером клиента. При этом создание содержимого страниц выполняется на основе данных, поступающих с браузера и с серверного приложения. Естественно, сервер обеспечивает передачу в приложение данных, поступающих от клиента.
Сегодня существует два основных варианта реализации этого подхода. В первом из них сервер запускает некоторые программы (на основе запросов, полученных от пользователя), которые полностью формируют страницы. Здесь используются две схожие технологии: Common Gateway Interface (запуск отдельных программ) и Internet Server Application Programming Interface (использование DLL, что ускоряет процесс обработки и экономит ресурсы сервера).
Второй подход основан на использовании активных серверных страниц — Active Server Pages (ASP). Эта технология подразумевает включение программного кода непосредственно в исходную HTML-страницу (именно такая страница является ASP). Обнаружив ASP, сервер передает ее некоторой программе-интерпретатору, выполняющей обнаруженный код и формирующей законченную HTML-страницу, которая затем отправляется сервером в браузер пользователя.
Код, включенный в ASP, обычно называется скриптом, а язык программирования — скриптовым. Такие скиптовые языки, как правило, создаются на основе «обычных» систем программирования (наиболее известные — JavaScript и VBScript), путем удаления из последних ненужных или просто запрещенных конструкций и добавления каких-либо специальных средств взаимодействия с HTML-кодом. Именно таким путем был создан VBScript на базе VB. Что касается JavaScript, созданного Microsoft, то он весьма далек от схожего по названию Java (что неудивительно, ведь Java — это детище Sun).
Обычно любые динамические страницы можно разделить на две логические части: достаточно статичное оформление внешнего вида и обновляемое информационное наполнение. Достоинство технологии ASP заключается в том, что она позволяет для оформления страницы использовать специализированные HTML-редакторы (наиболее популярные из них — FrontPage и Dreamweaver), в текст которых затем вписывается нужный код скрипта.
Решение «1С» и структура Web-компонента
Web-решение «1С» реализуется на основе ASP-технологии в среде Microsoft Internet Information Server (IIS) 4.0 или выше. Такой выбор определяется двумя взаимосвязанными моментами. С одной стороны, ASP сегодня представляет собой одно из наиболее простых и достаточно эффективных серверных решений (это видно из приведенного выше примера). Это, в свою очередь, в значительной степени предопределило использование IIS, для которого данная технология является «родной». С другой стороны, привязку именно к IIS специалисты «1С» объясняют доступностью этого средства (сервер входит в состав Windows 2000, для Windows NT 4.0 его можно скачать с Web-сайта Microsoft), а также желанием получить более эффективное решение, не гонясь за платформной независимостью (необходимость которой вызывает сегодня большие сомнения).
Для Windows NT Workstation вместо IIS следует использовать Personal Web Server. К сожалению, в среде Windows 9x этим средством воспользоваться нельзя (что возможно, например, при создании Web-приложений с помощью VB), так как в данном случае задействованы некоторые особенности операционной системы.
Подчеркнем, что сама ASP-технология не содержит встроенных средств для выполнения скриптов — эти функции возлагаются на сервер. В качестве стандартного набора таких исполняемых механизмов в составе IIS имеются JavaScript Engine и VBScript Engine для соответствующих языков. Однако самое важное здесь заключается в том, что IIS использует технологию Active Scripting, открытые интерфейсы которой позволяют разрабатывать и подключать произвольные скриптовые языки. Именно этот факт используется в решении «1С», которое предусматривает создание ASP-приложений с применением встроенного языка «1С:Предприятие».
Общая схема работы Web-приложения в данном решении приведена на рис. 1 (само приложение в виде набора ASP-страниц находится на сервере). Здесь следует отметить, что все запросы пользователей, приходящие на Web-сервер, «1С:Предприятие» обрабатывает последовательно. Для параллельного распределения нагрузки можно использовать несколько запущенных копий программы — как на компьютере с Web-сервером, так и на других компьютерах.
Собственно продукт «1С:Предприятие 7.7. Web-расширение» включает две необходимые технологические программные части: Web-компонент для «1С:Предприятия» и библиотеку V7 Scripting Engine (кроме них, в коробке находятся также пример реализации Web-приложения «Портал реализатора», книга документации и, конечно же, аппаратный ключ защиты).
В документации достаточно подробно описана процедура установки и запуска программ на компьютер и технология разработки Web-приложений. Кратко говоря, инсталляция заключается в том, что Web-компонент должен пройти авторизацию и «прописаться» в установленном у пользователя пакете «1С:Предприятие», а библиотека — выполнить аналогичную операцию в IIS.
В общем виде логика работы заключается в том, что при обработке страницы IIS передает в V7 Scripting Engine сформированный скрипт (просто складывая последовательные фрагменты кода), который фактически представляет собой модуль для исполнения в среде «1С:Предприятие». Кроме того, IIS передает контекст страницы в виде набора доступных объектов, которые библиотека также отправляет далее в «1С:Предприятие». Соответственно все эти объекты становятся доступными для «1С:Предприятия» через свой встроенный объект ASP (он входит в состав Web-компонента). Через ASP-объект приложение может также вызывать процедуры и функции, реализованные на других скриптовых языках. Объекты самого IIS — Request, Response, Application, Session и Server — доступны из скрипта напрямую.
Общая схема разработки
Задача разработки Web-приложения заключается в создании комплекса ASP-страниц, обеспечивающих взаимодействие удаленного пользователя с некой конфигурацией, работающей в среде «1С:Предприятие». Разумеется, возможен вариант создания специализированной конфигурации, предназначенной для работы в удаленном режиме.
Вряд ли можно говорить об универсальной схеме разработки приложений — как обычных, так и Web. Однако Интернет-доступ с неизбежностью требует решения проблемы авторизации доступа, за исключением, возможно, общедоступных справочных систем, работающих в режиме просмотра. (Для обычных приложений проблема доступа может решаться посредством запирания на ключ комнаты с выключенным компьютером или сдачи винчестера в режимный отдел.) С этой точки зрения в общем случае Web-приложение должно состоять из трех частей:
- Незащищенной части, по которой любой пользователь может «ходить» произвольным образом.
- Блока, обеспечивающего авторизацию пользователя.
- Защищенной части, в которую пользователь попадает только после авторизации. Перемещения здесь производятся под постоянным контролем механизма авторизации с учетом полученных пользователем прав доступа.
Создание первого Web-приложения
Итак, мы установили на компьютер все необходимые программы и теперь попробуем написать первое Web-приложение в среде «1С:Предприятие». Для начала нам нужно создать пользовательское приложение («Конфигурация»). В принципе можно использовать работающую систему, например «Бухгалтерию» или «Склад». Но, как мне уже приходилось подчеркивать в своей предыдущей статье о технологиях «1С», — я не являюсь пользователем этих учетных систем и, вообще говоря, не умею с ними работать. Поэтому мне удобнее создать какую-либо простую конфигурацию «с нуля».
В прошлый раз (см. КомпьютерПресс 5’2000) было выполнено несколько таких примеров, в том числе в виде разработки небольшой адресной книги (такое «небухгалтерское» приложение должно было подчеркнуть, что мы имеем дело с достаточно универсальной инструментальной средой). Вот и сейчас мы создадим отдельную тестовую конфигурацию, в которой на основе базового объекта «Справочник» сформируем простенькую таблицу с именами и телефонами сотрудников предприятия (рис. 2).
Чтобы убедиться в том, что наша программа действительно готова к работе через Internet, выполним команду «О программе» в меню «Помощь» — на появившемся окне видна информация о том, что Web-расширение подключено к системе (рис. 3).
Теперь нужно создать ASP-страницу, с помощью которой уделенный пользователь сможет получить доступ к этому справочнику и узнать нужные ему телефоны. Как вы убедитесь сами, выполнить эту задачу можно с помощью любого текстового редактора, в частности Notepad, но сейчас я все же воспользуюсь программой 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-компонентов.
Собственно, на этом создание 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("Адресат отсутствует"); КонецЕсли; КонецЕсли; %>
В результате всех этих несложных операций у нас должна сформироваться страница Default.asp с кодом, приведенным на листинге. В данном случае очень полезно использование русской мнемоники в языке V7Script: операторы на английском языке соответствуют обращению к объектам IIS, на русском — к объектам «1C:Предприятие».
Загрузите созданную ASP-страницу в браузер и убедитесь, что с ее помощью вы сможете получать информацию из Адресной Книги, которая работает в среде «1C:Предприятие» (рис. 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("Адресат отсутствует"); КонецЕсли; КонецЕсли; %> </form> </body> </html>
Некоторые аналогии технологии разработки
Для того чтобы понять механизм работы Web-расширения, полезно вспомнить вариант, реализованный в другой инструментальной среде — Visual Basic (см. «Visual Basic 6.0 упрощает разработку для Web», КомпьютерПресс, № 5’99, c.107). Так вот, приложения IIS, или иначе — WebClass, создаваемые в среде VB (там также можно делать DHTML-приложения, которые работают непосредственно на клиентской машине в среде браузера), представляют собой, на мой взгляд, некую смесь технологий ISAPI и ASP.
С одной стороны, в VB используются готовые HTML-шаблоны для формирования динамических страниц. Но в отличие от ASP программный код здесь физически отделен от пользовательского интерфейса (HTML-кода) и находится в виде формируемых ActiveX DLL. Этот программный код обрабатывает запросы, поступающие с браузера, и корректирует динамические страницы, меняя не только ее содержание, но и, при необходимости, структуру.
Достоинства такого подхода — упрощение отладки приложения, которая ведется в среде VB, и возможность создания повторно используемых компонентов. Но в то же время визуальные средства разработки WebClass-приложений в VB 6.0 пока откровенно слабее того, что существует для создания обычных Windows-приложений. Наряду с этим сама логика разработки представляется совсем не простой — мы хорошо помним, сколько нам пришлось повозиться с созданием регистрационной формы в тестовом приложении.
В случае «1С:Предприятия» программисту придется писать довольно много кода вручную, без поддержки возможностей интеллектуального редактора. Однако логика разработки выглядит достаточно простой. При этом она, с одной стороны, нацелена на конкретную работу с прикладными конфигурациями, работающими в среде «1С:Предприятие», а с другой — позволяет легко применять другие удобные средства программирования, в том числе те же JavaScript и VBScript. В любом случае подобный подход на начальной стадии становления технологии представляется совершенно естественным.
При этом, конечно, стоит подчеркнуть позицию разработчиков «1C»: создание Web-расширения не ставит целью конкуренцию с существующими средствами разработки Web-приложений. Задача более конкретная — открыть простой и удобный доступ к работающим прикладным системам «1С:Предприятие» через Web.
Тем не менее для создания серьезных Web-приложений, конечно, хотелось бы иметь специализированную среду, в которой можно было бы писать и отлаживать как HTML-код, так и VBScript-программу. Скорее всего, такие возможности будут реализованы в будущих вариантах среды разработки «1С:Предприятие», при наличии соответствующего спроса со стороны программистов. А пока можно предложить следующий подход к разработке Web-приложений для «1С:Предприятие»: сначала создается прототип программы с обычным интерфейсом (с использованием всех средств отладки «Конфигуратора»), а затем отлаженный код переносится в ASP-страницы.
Примеры реализации технологии
Первый рабочий пример использования «Web-расширения» появился еще в марте нынешнего года, за месяц до официального объявления продукта. На сайте фирмы (www.1c.ru/declaration) всем желающим была предоставлена возможность автоматизированного заполнения налоговой декларации. За несколько дней, оставшихся до окончания срока подачи документов в налоговую инспекцию, этой услугой воспользовались несколько сот человек, которые и не подозревали, что имеют дело с новой технологией «1С».
На самом деле с помощью соответствующего Web-приложения они получили доступ к функциям заполнения декларации, реализованным в программе «1С:Деньги». Нет нужды подчеркивать, что этот известный продукт также построен на базе технологии «1С:Предприятие» и реализован в виде специальной конфигурации, решающей задачу учета личных финансов.
Здесь полезно вспомнить, что применение Web-технологий в конкретных решениях можно условно разделить на три основные категории:
- Интернет: возможность доступа к Web-ресурсам самого широкого числа посетителей. С точки зрения бизнес-применения речь идет об организации электронной коммерции и информационном обслуживании клиентов (Интернет-магазины, справочные службы и т.д.).
- Экстранет: обеспечение информационного взаимодействия с определенным кругом партнеров и заказчиков (разнообразные порталы доступа к торговой и коммерческой организации и т.д.).
- Интранет: внутренняя система предприятия, которая предоставляет удаленный доступ к информационным ресурсам через браузер.
С технологической точки зрения разницы между этими решениями нет, различия заключаются исключительно в функциональности, в обеспечении различных уровней защиты информации и авторизации доступа, а также необходимых показателей производительности для разных потоков запросов. Приведенный выше пример с заполнением декларации является типичным примером Интернет-решения.
Решения «1С»
Непосредственно в состав продукта «1С:Предприятие. Web-расширение» входит пример Web-приложения «Портал реализатора», подробное описание которого приведено в документации.
Основная задача конфигурации для портала (она реализована на базе типовой конфигурации «Торговля + Склад») — показать принципы построения подобной системы, основные подходы к ее реализации. Но вместе с тем это достаточно полезный продукт, с помощью которого реализаторы (продавцы) могут связываться с удаленным торговым предприятием без ограничений, касающихся места и времени связи, и работать с торговой системой, отчитываясь за проданные товары и заказывая новые (рис. 6).
Нужно отметить, что изначально доступ реализаторов к «1С:Предприятие» не предполагался, поэтому данная конфигурация доработана с целью обеспечения этих функций. Конфигурация и Web-приложение поставляются в виде открытых кодов, вследствие чего могут дорабатываться клиентом самостоятельно.
Второе Web-решение фирмы «1С» — «Удаленный склад» распространяется по подписке на компакт-дисках информационно-технического сопровождения. Этот продукт предназначен для реального использования типовой конфигурации «Торговля+Склад» (разумеется, ее нужно приобретать отдельно). В результате ее внедрения создается полнофункциональная система класса «Интранет» для удаленной работы кладовщика торговой организации. Данное приложение также может использоваться как образец для создания собственных решений (рис. 7).
«ИКС Технология» автоматизирует свою работу
Эффективность предлагаемой поставщиком технологии хорошо проверяется вопросом: «А вы сами используете эту систему для автоматизации собственного бизнеса?» Ответом на него служит пример «Портал дистрибьютора», который был разработан одним из ближайших партнеров «1С» — компанией «ИКС Технологии» и используется ею с весны нынешнего года для ведения дистрибьюторской деятельности (рис. 8).
Это типичная Экстранет-система, которая позволяет не просто регистрировать заказы, но и обсуждать их условия с дилерами в режиме online. (Чаще всего эти условия не укладываются в обычную систему прейскуранта и фиксированных скидок. Как правило, окончательные цены определяются многими дополнительными факторами, в том числе и субъективными.) Отличительная черта подобной системы — предоставляемая партнеру возможность постоянного контроля процесса обработки заказа и получение доступа к информации о взаиморасчетах.
«ИКС Технология» также предлагает эту разработку в качестве тиражируемого решения, настраиваемого на требования конкретного заказчика.
Интернет-магазин компании «Аркадия»
Одним из наиболее популярных способов применения Web-технологий в коммерции является создание Интернет-магазинов. Специалисты «1С» проявляют в данном случае присущую фирме аккуратность в оценке возможностей своих продуктов, подчеркивая, что система «1С:Предприятие» не является специализированным продуктом для создания огромных электронных супермаркетов, ориентированных на обслуживание сотен тысяч покупателей в день. Но для средних и малых магазинов (собственно, сегодня у нас в стране мощных электронных магазинов фактически нет) данная система вполне подходит.
Примером коробочного решения является разработка петербургской компании «Аркадия» под названием «1С:Аркадия Интернет-магазин». Двойная торговая марка продукта объясняется наличием в его составе типовой конфигурации «Торговля+Склад» и участием специалистов «1С» в его разработке.
Реализация проекта выглядит достаточно обычно (рис. 9). Основные этапы покупки состоят из осмотра витрины (каталог товаров), наполнения корзины покупателем и оплаты им заказанного товара. Владелец магазина может воспользоваться готовыми шаблонами для создания интерфейса или разработать его самостоятельно. Для покупателей может быть предложен вариант с сохранением корзины заказов между посещением магазина (на клиентской машине сохраняются сведения, используемые для повторной идентификации клиента). Наряду с использованием развитой поисковой системы с помощью текстовых запросов пользователь может работать в каталоге с собственными закладками, которые сохраняются на его удаленном компьютере. Менеджер магазина в любой момент оперативно обновляет каталоги предлагаемых продуктов, специальным образом выделяя «горячую» информацию.
Оплата заказанного товара может производиться разными способами: традиционными безналичными, наличным или электронным — снятием со счета либо по кредитной карте. Доставка товара выполняется после получения денег (при традиционной оплате) или немедленно (при использовании электронных методов).
Распространение этого продукта началось в конце июня, так что в ближайшее время можно ожидать появления на его основе действующих проектов, информация о которых будет размещаться на сайте www.magazin.ru.
Торопись не поспешая...
Работа фирмы «1С» привлекла мое внимание сразу, как только пять лет назад я начал заниматься журналистикой в сфере компьютерного предпринимательства. С тех пор я внимательно слежу за развитием ее бизнеса и продуктов. Мне кажется, что одной из причин успеха компании является то, что она не поддается искушению применять новые технологий, руководствуясь исключительно соображениями престижа и моды. В исполнении «1С» новшества появляются очень точно к моменту, когда потенциальные клиенты готовы их принять и применить. (Здесь можно вспомнить, в частности, историю с применением MS SQL Server (КомпьютерПресс 11, с. 177) — о том, как специалисты фирмы настойчиво ждали, когда «созреет» не только рынок, но и сам продукт.)
В приватной беседе представитель одной из компаний-конкурентов как-то обронил: «Если Борис Нуралиев решил заняться чем-то новым, значит это стоящее дело! Так что, наверное, пришла пора заняться реальным внедрением Интернет-технологий на больших и малых предприятиях».
Хотелось бы выразить благодарность специалистам фирмы «1С», и в первую очередь Александру Алексееву, за помощь в изучении Web-расширения и в подготовке данной статьи.
КомпьютерПресс 9'2000