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

Интернет-технологии в системе "1С:Предприятие"

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

© Андрей Колесов, 2000
Авторский вариант. Статья была опубликована c незначительной литературной правкой в журнале "КомпьютерПресс" (N 09/2000, на CD-ROM)

Хотелось бы высказать благодарность специалистам фирмы "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С" привлекла мое внимание сразу, как только я начал пять лет назад заниматься журналистской деятельностью в сфере компьютерого предпринимательства. С тех пор я внимательно слежу за развитием ее бизнеса и продуктов. Мне кажется, что одна из причин успеха компании является то, что она не поддается искушению применения новых технологий исключительно из соображений престижа и моды. В исполнении "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>

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