Интернет-технологии в системе "1С:Предприятие"
- Основы серверных технологий
- Решение «1С» и структура Web-компонента
- Общая схема разработки
- Создание первого Web-приложения
- Листинг. Содержание страницы Default.asp
- Некоторые аналогии технологии разработки
- Примеры реализации технологии
- Решения «1С»
- «ИКС Технология» автоматизирует свою работу
- Интернет-магазин компании «Аркадия»
- Торопись не поспешая...
Важная роль Интернета как базовой технологии для организации бизнеса не нуждается сегодня в особых доказательствах. Поддержка конкурентоспособности любых предприятий (от небольшой фирмы до гигантской корпорации) ставит в наши дни обязательным условием создание информационной инфраструктуры, которая наряду с высокой оперативностью должна обеспечивать взаимодействие всех участников деловых процессов (как сотрудников организации, так и клиентов и партнеров), независимо от их географической удаленности.
В этой ситуации выглядит вполне естественным появление весной нынешнего года специального программного компонента «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
Собственно продукт «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).
Рис. 2
Чтобы убедиться в том, что наша программа действительно готова к работе через Internet, выполним команду «О программе» в меню «Помощь» Ч на появившемся окне видна информация о том, что Web-расширение подключено к системе (рис. 3).
Рис. 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-компонентов.
Рис. 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("Адресат отсутствует"); КонецЕсли; КонецЕсли; %>
В результате всех этих несложных операций у нас должна сформироваться страница Default.asp с кодом, приведенным на листинге. В данном случае очень полезно использование русской мнемоники в языке V7Script: операторы на английском языке соответствуют обращению к объектам IIS, на русском Ч к объектам «1C:Предприятие».
Загрузите созданную ASP-страницу в браузер и убедитесь, что с ее помощью вы сможете получать информацию из Адресной Книги, которая работает в среде «1C:Предприятие» (рис. 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("Адресат отсутствует"); КонецЕсли; КонецЕсли; %> </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).
Рис. 6
Нужно отметить, что изначально доступ реализаторов к «1С:Предприятие» не предполагался, поэтому данная конфигурация доработана с целью обеспечения этих функций. Конфигурация и Web-приложение поставляются в виде открытых кодов, вследствие чего могут дорабатываться клиентом самостоятельно.
Второе Web-решение фирмы «1С» Ч «Удаленный склад» распространяется по подписке на компакт-дисках информационно-технического сопровождения. Ётот продукт предназначен для реального использования типовой конфигурации «Торговля+Склад» (разумеется, ее нужно приобретать отдельно). В результате ее внедрения создается полнофункциональная система класса «Интранет» для удаленной работы кладовщика торговой организации. Данное приложение также может использоваться как образец для создания собственных решений (рис. 7).
Рис. 7
«ИКС Технология» автоматизирует свою работу
Ёффективность предлагаемой поставщиком технологии хорошо проверяется вопросом: «А вы сами используете эту систему для автоматизации собственного бизнеса?» Ответом на него служит пример «Портал дистрибьютора», который был разработан одним из ближайших партнеров «1С» Ч компанией «ИКС Технологии» и используется ею с весны нынешнего года для ведения дистрибьюторской деятельности (рис. 8).
Рис. 8
Ёто типичная Ёкстранет-система, которая позволяет не просто регистрировать заказы, но и обсуждать их условия с дилерами в режиме online. (Чаще всего эти условия не укладываются в обычную систему прейскуранта и фиксированных скидок. Как правило, окончательные цены определяются многими дополнительными факторами, в том числе и субъективными.) Отличительная черта подобной системы Ч предоставляемая партнеру возможность постоянного контроля процесса обработки заказа и получение доступа к информации о взаиморасчетах.
«ИКС Технология» также предлагает эту разработку в качестве тиражируемого решения, настраиваемого на требования конкретного заказчика.
Интернет-магазин компании «Аркадия»
Одним из наиболее популярных способов применения Web-технологий в коммерции является создание Интернет-магазинов. Специалисты «1С» проявляют в данном случае присущую фирме аккуратность в оценке возможностей своих продуктов, подчеркивая, что система «1С:Предприятие» не является специализированным продуктом для создания огромных электронных супермаркетов, ориентированных на обслуживание сотен тысяч покупателей в день. Но для средних и малых магазинов (собственно, сегодня у нас в стране мощных электронных магазинов фактически нет) данная система вполне подходит.
Примером коробочного решения является разработка петербургской компании «Аркадия» под названием «1С:Аркадия Интернет-магазин». Двойная торговая марка продукта объясняется наличием в его составе типовой конфигурации «Торговля+Склад» и участием специалистов «1С» в его разработке.
Реализация проекта выглядит достаточно обычно (рис. 9). Основные этапы покупки состоят из осмотра витрины (каталог товаров), наполнения корзины покупателем и оплаты им заказанного товара. Владелец магазина может воспользоваться готовыми шаблонами для создания интерфейса или разработать его самостоятельно. Для покупателей может быть предложен вариант с сохранением корзины заказов между посещением магазина (на клиентской машине сохраняются сведения, используемые для повторной идентификации клиента). Наряду с использованием развитой поисковой системы с помощью текстовых запросов пользователь может работать в каталоге с собственными закладками, которые сохраняются на его удаленном компьютере. Менеджер магазина в любой момент оперативно обновляет каталоги предлагаемых продуктов, специальным образом выделяя «горячую» информацию.
Рис. 9
Оплата заказанного товара может производиться разными способами: традиционными безналичными, наличным или электронным Ч снятием со счета либо по кредитной карте. Доставка товара выполняется после получения денег (при традиционной оплате) или немедленно (при использовании электронных методов).
Распространение этого продукта началось в конце июня, так что в ближайшее время можно ожидать появления на его основе действующих проектов, информация о которых будет размещаться на сайте http://www.magazin.ru/.
Торопись не поспешая...
Работа фирмы «1С» привлекла мое внимание сразу, как только пять лет назад я начал заниматься журналистикой в сфере компьютерного предпринимательства. С тех пор я внимательно слежу за развитием ее бизнеса и продуктов. Мне кажется, что одной из причин успеха компании является то, что она не поддается искушению применять новые технологий, руководствуясь исключительно соображениями престижа и моды. В исполнении «1С» новшества появляются очень точно к моменту, когда потенциальные клиенты готовы их принять и применить. (Здесь можно вспомнить, в частности, историю с применением MS SQL Server (КомпьютерПресс 11, с. 177) Ч о том, как специалисты фирмы настойчиво ждали, когда «созреет» не только рынок, но и сам продукт.)
В приватной беседе представитель одной из компаний-конкурентов как-то обронил: «Если Борис Нуралиев решил заняться чем-то новым, значит это стоящее дело! Так что, наверное, пришла пора заняться реальным внедрением Интернет-технологий на больших и малых предприятиях».
Начать дискуссию