Главная страница Visual 2000 · Общий список статей
Интернет-технологии в системе "1С:Предприятие"Андрей Колесов
© Андрей Колесов, 2000Хотелось бы высказать благодарность специалистам фирмы "1С" и, в первую очередь Александру Алексееву, за помощь в изучении Web-расширения и в подготовке данной статьи.
Важность использования Интернета...
Важность использования Интернета в качестве базовой технологии для организации бизнеса не требует сегодня особых доказательств. Поддержка конкурентоспособности любых предприятий (от малой фирмы до гигантской корпорации) сегодня ставит обязательным условием создание информационной инфраструктуры, которая наряду с высокой оперативностью должна обеспечивать взаимодействие всех участников деловых процессов (как между сотрудниками организации, так и в среде клиентов и партнеров) независимо от их географической удаленности.
В этой ситуации выглядит вполне естественно появление весной нынешнего года специального программного компонента "Web-расширение" в составе одной из самых популярных в России учетных систем "1С:Предприятие". Стоит отметить своевременность создания данной функции. Действительно, в момент первого ее представления на выставке "Комтек-2000" у многих партнеров и клиентов фирмы "1С" присутствовало мнение о том, что это некая "дань моде". Однако уже спустя два месяца, на летнем партнерском семинаре был виден чисто деловой интерес к использованию данного компонента.
Как мне уже приходилось отмечать в статье "1С:Предприятие" как платформа разработки приложений" (КомпьютерПресс N 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С" — я не являюсь пользователем этих учетных систем, и вообще говоря, не умею с ними работать. Поэтому мне удобнее сделать какую-то простую конфигурацию с нуля.
В прошлый раз (см. "КомпьютерПресс" N 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("Адресат отсутствует"); КонецЕсли; КонецЕсли; %> </p>
В результате всех этих несложных операций у нас должна сформироваться страница Default.asp с кодом, приведенным на листинге 1. В данном случае как раз очень полезно использование русской мнемоники в языке V7Script: операторы на английском языке соответствуют обращению к объектам IIS, на русском — к объектам "1C:Предприятия".
Загрузите созданную нами ASP-страницу в браузер и убедитесь, что с ее помощью вы сможете получать информацию из Адресной Книги, которая работает в среде "1C:Предприятие" (рис. 5). Более того, если вы сейчас будете корректировать этот справочник, новая информацию будет автоматически отображаться в браузере и нажатии команды "Обновить".
Рис. 5
Разумеется, мы сделали очень простое Web-приложение из одной страницы и не показали многих особенностей подобной разработки. Но, тем не менее — за пару минут мы обеспечили доступ к работающей системе из любой точки планеты, где имеется Интернет. Очевидно, что также просто можно включить в эту страницу включить код для коррекции Адресной Книги внешними пользователями. Но в этом случае, конечно же, обязательно потребуется реализация механизма авторизации доступа, а то какой-нибудь вам такое запишет...
Некоторые аналогии технологии разработки
В плане понимания механизма работы Web-расширения, здесь возможно полезно вспомнить вариант, реализованный в другой инструментальной среде — Visual Basic (см. "Visual Basic 6.0 упрощает разработку для Web", "КомпьютерПресс", N 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-код, так и V7Script-программу. Скорее всего, такие возможности будут реализованы в будущих вариантах среды разработки "1С:Предприятия" при наличии соответствующего спроса со стороны программистов. А пока можно предложить такой подход к разработке Web-приложений для "1С:Предприятия": сначала создается прототип программы с обычным интерфейсом (используя все средства отладки "Конфигуратора"), а потом отлаженный код переносится в ASP-страницы.
Первый рабочий пример использования "Web-расширения" появился еще в марте нынешнего года, за месяц до официального объявления продукта. На сайте фирмы (www.1c.ru/declaration) всем желающим была предоставлена возможность автоматизированного заполнения налоговой декларации. За несколько дней, оставшихся до окончания срока подачи документов в налоговую инспекцию, этой услугой воспользовались несколько сот человек, которые и не подозревали, что имеют дело с новой технологией "1С".
На самом деле с помощью соответствующего Web-приложения они получил доступ к функциям заполнения декларации, реализованные в программе "1С:Деньги". Нет нужды подчеркивать, что этот известный продукт также построен на базе технологии "1С:Предприятие" и реализован в виде специальной конфигурации, решающей задачу учета личных финансов.
Здесь полезно вспомнить, что применение Web-технологий в конкретных решениях можно условно разделить на три основные категории:
Интернет: Возможность доступа к Web-ресурсам самого широкого числа посетителей. С точки зрения бизнес-применения, речь идет об организации электронной коммерции и информационное обслуживание клиентов (Интернет-магазины, справочные службы и т.д.)
Экстранет: Обеспечение информационного взаимодействия с определенным кругом партнеров и заказчиков (разнообразные порталы доступа к торговой и коммерческой организации и т.д.)
Интранет: Внутренняя система предприятия, которая предоставляет удаленный доступ к информационным ресурсам через браузер.
С технологической точки зрения разницы между этими решениями нет, отличия заключают чисто в функциональности, обеспечении различных уровней защиты информации и авторизации доступа, а также необходимых показателей производительности для разных потоков запросов. Приведенный выше пример с заполнением декларации является типичным примером Интернет-решения.
Непосредственно в состав продукта "1С:Предприятие. Web-расширение" входит пример Web-приложение "Портал реализатора", подробное описание которого приведено в документации.
Основная задача конфигурации для портала (она реализована на базе типовой конфигурации "Торговля + Склад") — показать принципы построения подобной системы, основные подходы к ее реализации. Но вместе с тем это достаточно полезный продукт, с помощью которого реализаторы (продавцы) могут связываться с удаленным торговым предприятием без ограничений на место и время связи и работать с торговой системой, отчитываясь за проданные товары и заказывая новые (рис. 6)
Рис. 6
Нужно отметить, что изначально доступ реализаторов к "1С:Предприятию" не предполагался, поэтому данная конфигурация доработана для обеспечения этих функций. Конфигурация и Web-приложение поставляются в виде открытых кодов, поэтому могут дорабатываться клиентом самостоятельно.
Второе Web-решение фирмы "1С" — "Удаленный склад" распространяется по подписке на компакт-диски информационно-технического сопровождения. Этот продукт предназначен для реального использования типовой конфигурации "Торговля+Склад" (разумеется, ее нужно приобретать отдельно). В результате ее внедрения получается полнофункциональная система класса "Интранет" для удаленной работы кладовщика торговой организации. Данное приложение также может использоваться как образец для создания собственных решений (рис. 7).
Рис. 7
"ИКС Технология" автоматизирует свою работу
Эффективность предлагаемой поставщиком технологии хорошо проверяется вопросом: "А вы сами используете эту систему для автоматизации ведения собственного бизнеса?" Ответом на него служит пример "Портрал дистрибутора", который был разработан одним из ближайших партнеров "1С" компанией "ИКС Технологии" и используется ею с весны нынешнего года для ведения своей дистрибуторской деятельности (рис. 8).
Рис. 8
Это типичная Экстранет-система, которая позволяет не просто регистрировать заказы, но и обсуждать их условия с дилерами в режиме Online. (Чаще всего эти условия не укладываются в обычную систему прейскуранта и фиксированных скидок. Как правило, окончательные цены определяются многими дополнительными факторами, в том числе и субъективными.) Отличительная черта подобной системы — предоставляемая партнеру возможность постоянного контроля процесса обработки заказа и получение доступа к информации о взаиморасчетах.
"ИКС Технология" предлагает также эту разработку в качестве тиражируемого решения, настраиваемого на требования конкретного заказчика.
Интернет-магазин компании "Аркадия"
Одним из наиболее популярных способов применения Web-технологий в коммерции является создание Интернет-магазинов. Специалисты "1С" проявляют в данном случае присущую фирме аккуратность в оценке возможностей своих продуктов, подчеркивая, что система "1С:Предприятие" не является специализированным продуктом для создания огромных электронных супермаркетов, ориентированных на обслуживание сотен тысяч покупателей в день. Но для средних и малых магазинов (собственно, у нас в стране мощных электронных магазинов пока факстически нет) данная система вполне подходит.
Примером коробочного решения является разработка петербургской компании "Аркадия" под названием "1С:Аркадия Интернет-магазин". Двойная торговая марка продукта объясняется наличием в его составе типовой конфигурации "Торговля+Склад" и участием специалистов "1С" в самой разработке.
Реализация проекта выглядит достаточно обычным образом (рис. 9).
Рис. 9
Основные этапы покупки состоят в осмотре витрины (каталог товаров), наполнении корзины покупателя и оплаты им заказанного товара. Владелец магазина может воспользоваться готовыми шаблонами для создания интерфейса или разработать его самостоятельно. Для покупателей может быть предложен вариант с сохранением корзины заказов между посещением магазина (на клиентской машине сохраняются сведения, используемые для повторной идентификации клиента). Кроме развитой поисковой системы с помощью текстовых запросов, пользователь может работать с собственными закладками в каталоге, которые сохраняются на его удаленном компьютере. Менеджер магазина в любой момент оперативно обновляет каталоги предлагаемых продуктов, выделяя специальным образом "горячую" информацию.
Оплата заказанного товара может производиться разными способами — традиционными безналичными или наличным, или электронным — снятие со счета или по кредитной карте. Доставка товара выполняется после получения денег при традиционной оплате, или немедленно при использовании электронных методов.
Распространение этого продукта началась в конце июня, так что в ближайшее время можно ожидать появления действующих проектов на его основе, информация о которых будет размещаться на сайте www.magazin.ru.
Работа фирмы "1С" привлекла мое внимание сразу, как только я начал пять лет назад заниматься журналистской деятельностью в сфере компьютерого предпринимательства. С тех пор я внимательно слежу за развитием ее бизнеса и продуктов. Мне кажется, что одна из причин успеха компании является то, что она не поддается искушению применения новых технологий исключительно из соображений престижа и моды. В исполнении "1С" новшества появляются очень точно к моменту готовности потенциальных клиентов к их применению. (Тут можно вспомнить, в частности, историю с применением MS SQL Server — см. "КомьютерПресс" N 11, с. 177, — когда специалисты фирмы настойчиво ждали, когда созреет не только рынок, но и сам продукт.)
В приватной беседе представитель одной из компаний-конкурентов как-то обронил: "Если Борис Нуралиев, решил заняться чем-то новым, значит это стоящее дело!". Так что, наверное, пришла пора заняться реальным внедрением Интернет-технологий в деятельности больших и малых предприятий.
Листинг 1. Содержание страницы 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>