Разработка Web-приложений для 1С:Предприятия

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



Несмотря на популярность темы электронной торговли...

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

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

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

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

Позиционирование "1С:Web-расширения"

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

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

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

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

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

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

Структура Web-компонента и общая схема разработки

"1С:Web-расширение" — это чисто технологический компонент, обеспечивающий связь "1С:Предприятия" и Web-сервера. Он реализован на основе технологии Active Server Pages (ASP) в среде Microsoft Internet Information Server 4.0 или выше.

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

Сама ASP-технология не содержит встроенных средств для выполнения скриптов — эти функции возлагаются на сервер. В качестве стандартного набора таких исполняемых механизмов в составе IIS имеются JavaScript Engine и VBScript Engine для соответствующих языков. Однако самое важное здесь заключается в том, что IIS использует технологию Active Scripting, открытые интерфейсы которой позволяют разрабатывать и подключать произвольные скриптовые языки.

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

Web компонент для 1с

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

В общем виде логика работы заключается в том, что при обработке страницы IIS передает в V7 Scripting Engine сформированный скрипт (просто складывая последовательные фрагменты кода), который фактически представляет собой модуль для исполнения в среде "1С:Предприятие". Кроме того, IIS передает контекст страницы в виде набора доступных объектов, которые библиотека также отправляет далее в "1С:Предприятие". Соответственно все эти объекты становятся доступными для "1С:Предприятия" через свой встроенный объект ASP (он входит в состав Web-компоненты). Через ASPобъект приложение может также вызывать процедуры и функции, реализованные на других скриптовых языках. Объекты самого IIS — Request, Response, Application, Session и Server — доступны из скрипта напрямую.

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

  1. Незащищенной части, по которой любой пользователь может ходить произвольным образом.
  2. Блока, обеспечивающего авторизацию пользователя.
  3. Защищенной части, в которую пользователь попадает только после авторизации. Перемещения здесь производятся под постоянным контролем механизма авторизации с учетом полученных пользователем прав доступа.

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

Создание первого Web-приложения

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

Для начала создадим небольшое тестовое приложение (в терминологии "1С" оно называется конфигурацией) — в среде "1С:Предприятие" на основе базового объекта "Справочник" сформируем таблицу с именами и телефонами сотрудников предприятия (рис. 2).

Как создать 1с web приложение?

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

Чтобы убедиться, что программа действительно готова к работе через Internet, выполните команду "О программе" в меню "Помощь" — на появившемся окне видна информация о том, что Web-расширение подключено к системе (рис. 3).

Разработка web приложений в 1C

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

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

Разработка веб приложений 1с

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

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

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

    Листинг 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>
    

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

От версии 1.0 к 2.0

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

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

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

  • обеспечена синхронизация работы всех элементов Web-приложений с помощью Диспетчера;

  • реализована возможность интерактивной настройки и контроля через стандартное средство администрирования Microsoft Management Console;

  • добавлен специальный конструктор для создания макетов Web-приложений, в которые можно переносить справочники, документы, журналы и отчеты "1С:Предприятия".

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

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

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

1C web доступ обычное приложение

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

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

1с7 web сервисы пример

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

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

Использование Конструктора макета Web-приложения

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

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

Веб приложения для 1с

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

Начальная страница (main.asp) появляется после запуска Web-приложения. Вариант, созданный "по умолчанию", не содержит никакой содержательной информации и имеет вид, представленный на рис. 9.

Пример разработки 1с веб

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

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

Создание web приложений на 1с 8

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

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

Web приложение 1с

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

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

1с предприятие

Рис. 12. Набор объектов созданного Web-приложения.

Таким образом, с помощью только Web-конструкторов, не написав ни строчки кода, можно создать достаточно полезное Web-приложение, с помощью которого, например, получать разнообразные отчеты (рис.13).

1с предприятие 7 7 web расширение

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

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

Web разработка или 1с

Рис.14. Синхронная работа Web-расширения и "1С:Предприятия".

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

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

Простенько и со вкусом

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

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