Visual2000 · Статьи А.Колесова по "1С"

Цикл "1С:Предприятие" в PC Magazine/RE

Web-технологии в "1С:Предприятии" — это довольно просто!

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

© Андрей Колесов, 2006
Авторский вариант. Статья была опубликована в журнале PC Magazine/RE № 05/06 (с.121-124).


После публикации статьи с общим описанием...

После публикации статьи с общим описанием возможностей продукта "1С:Предприятие 8.0, Web-расширение" (см. PC Magazine/RE, 3/2006, с. 134), мы получили несколько писем от читателей с пожеланием вернуться к этой теме и привести простые примеры создания собственных программ с помощью этого пакета. Мы очень рады, что ИТ-специалисты обратили внимание на "Web-расширение", — это действительно очень интересная и перспективная технология, которая может существенно повысить эффективность применения прикладных решений "1С:Предприятия".

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

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

Что нужно для работы?

  1. "1С:Предприятие 8.0", начиная с версии 8.0.11.
  2. Microsoft Windows (2000, XP или 2003) c поддержкой .NET Frawework 1.1 и установленным Microsoft Internet Information Server (IIS) 5.1 или более новых.
  3. "1С:Предприятие 8.0, Web-расширение 1.1".

Все перечисленное должно находиться на компьютере разработчика, а потом — и на действующем Web-сервере (правда, от "Web-расширения" здесь нужны только модели исполненения). На ПК пользователя должен работать любой Web-бруазер, желательно MS Internet Explorer версии 5.5 и старше.

Строго говоря, для программирования можно использовать бесплатный набор SDK .NET Framework. Но в этом случае, весь код придется писать "руками" в обычном текстовом редакторе. В общем-то, такой вариант можно использовать, например, для создания простых Web-сервисов (им не нужен визуальный пользовательский интерфейс). Но все-таки лучше применить любой инструмент, поддерживающий технологию ASP.NET, а самый лучший вариант — это применение Visual Studio 2003. Во всяком случае, все примеры и шаблоны "Web- расширения" рассчитаны на работу c VS 2003 и C#.

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

Создание Web-приложения с помощью конструктора

Запустите VS 2003. Далее следуйте по шагам.

Шаг 1. Создание проекта.

Для создания нового Web-приложения выберем команду File | New | Project…, а затем —тип проекта Visual C# Projects. В окне шаблонов вы увидите дополнительные шаблоны, которые "прописало" установленное "Web-расширение" — V8 Web Application и V8 Web Service. Укажите сейчас первых из них (рис. 1).

Рис. 1 В списке шаблонов проектов есть два из состава "Web-расширения"

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

Рис. 2 Здесь нужно выбрать используемую информационную базу и задать параметры соединения

Шаг 2. Создание Web-формы.

Для этого следует выполнить команду меню Project | Add New Item. В данном случае мы хотим использовать содержащуюся форму списка (например, список документов "РасходнаяНакладная"). Для этого в открывшемся окне в секции "Категории" нужно выбрать Web Project Items | V8, а потом указать шаблон V8 List Form (рис. 3)

Рис. 3 Тут нужно выбрать шаблон Web-формы

Далее вам будет предложено выбрать нужную таблицу (виртуальную или реальную) информационной базы и указать поля, которые должны быть отображены в создаваемой форме (рис. 4).

Рис. 4 Выбор таблицы информационной базы и состава отображаемых полей

Нажмем "Готово", и конструктор создаст новую Web-форму, в которой будут расположены следующие элементы:

Шаг 3. Запуск на выполнение.

Чтобы проверить созданную форму в работе, ее нужно установить в качестве стартовой страницы командой Project | Web Project | Set As Start Page, а затем запустить компиляцию и выполнение командой Debug |Start.

Разбор полетов

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

Рис. 5 Стартовая форма созданного Web-приложения

Например, по двойному щелчку мышью в строке списка будет открыта форма выбранного документа (рис. 6). В данном случае, используется форма, создаваемая Web-приложением «по умолчанию», если происходит обращение к данным объектов, для которых разработчик не создал собственные формы. Аналогично, при попытке просмотреть данные контрагента, указанного в накладной, будет открыта форма «по умолчанию» элемента справочника «Контрагенты». Именно благодаря наличию механизма форм «по умолчанию» становится возможным использование команд добавления, изменения и копирования в элементе управления V8CommandPanel, расположенном в форме списка документов.

Рис. 6 Работа с документом "1С:Предприятия" в среде Web-браузера

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

Конечно, имеется еще несколько важных нюансов, например, управления правами доступа. Следует уточнить (это детально обсуждается в документации), что само Web-приложение выполняется от имени пользователя ASPNET (под Windows XP) или группы пользователей IIS_WPG (под Windows 2003). Перед созданием приложения необходимо этим пользователям дать полные права на каталог, в котором расположена информационная база.

Обратите внимание, что при создании проекта в момент импорта метаданных мы указывали и пользователя, и его пароль. Они прописываются в конфигурационный файл web.config, и в дальнейшем все обращения к информационной базе идут от этого пользователя. Если такая схема работы не устраивает, то существуют возможности проводить так называемую аутентификацию на основе форм (пример приведен в документации) или задействовать механизм заимствования прав (impersonate — стандартная возможность ASP.NET). Кроме того, в конфигурационном файле можно задать ограничения на доступ к различным ресурсам (страницам) для определенных пользователей. Это опять же стандартная возможность ASP.NET.

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

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

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

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

Работа с простейшим Web-сервисом

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

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

В простейшем случае Web-сервис – это отдельный файл с расширением .asmx, для создания которого не нужны специальные средства разработки (Visual Studio). Вот как, например, выглядит Web- сервис, выполняющий доступ к встроенной функции "ЧислоПрописью" системы "1С:Предприятие":

      <%@ WebService Language="c#" Class="Service1" %>
      <%@ Assembly Name="_1C.V8.Data, Version=8.0.х.х, 
Culture=neutral, PublicKeyToken=a2a389ea4bbb4a49" %>
      using System;
      using System.Web.Services;
      using _1C.V8.Data;
      [WebService]
      class Service1
      {
      [WebMethod]
      public string RublesInWords(decimal sum)
      {
      using (V8DbConnection conn =
      new V8DbConnection("File=c:/info_base", "", ""))
      {
      conn.Open();
      object[] args = new object[] { sum,"L=ru_RU",
      "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2" };
      string ret = (string)V8.Call(conn, conn.Connection, "ЧислоПрописью",
      args);
      return ret;
      }
      }
      }

Но все-таки даже для создания таких простых функций (не говоря уже о более сложных) удобнее воспользоваться средой Visual Studio. В ней автоматически выполняются различные настройки, в описании которых вручную очень легко допустить ошибку. Делается это примерно так же, как при создании Web-приложения, но только при создании нового проекта нужно выбрать в качестве шаблона "V8 Web Service". Конструктор сформирует проект, содержащий все необходимые программные файлы. Файл Service1.asmx.cs будет содержать «заготовку» одного метода Web-сервиса — все той же функции "ЧислоПрописью", но код этого метода закомментирован. Для проверки работоспособности Web-сервиса можно раскомментировать определенный фрагмент кода и обратиться к нему прямо из среды Visual Studio или браузера (на том же компьютере), задав адрес http://localhost/V8WebSample/Service1.asmx.

Но как мы уже говорили, назначение Web-сервиса — это возможность обращения к нему из любых других приложений, поддерживающих эту технологию. Вот как это может выглядеть с помощью Visual Studio 2003. Запустив этот инструмент, выберем вариант создания простейшего консольного проекта и вызовем команду Add Web Reference (рис. 7). При этом нужно указать, где искать необходимый Web-сервис -- на данном локальном компьютере или через механизм UDDI где-то еще (в локальной или в глобальной сети). Когда мы определим адрес (в данном случае — на нашем компьютере), то сразу увидим список доступных Web-сервисов (рис. 8). Выберем нужную функцию и нажмем "Add Reference" — у нас создастся код обращения к этому Web-сервису (рис. 9). Прямо в редакторе кода введем какое-то числовое значение в параметрах вызываемой функции, запустим проект на выполнение и убедимся, что все работает, как задумано.

Рис. 7 Выбор место нахождения Web-сервиса

Рис. 8 Выбор Web-cервиса

Рис. 9 Код программы с обращением к Web-сервису

Само "1С:Предприятие" не содержит встроенных средств для организации клиентского доступа к Web-сервисам, но для этого может быть использован бесплатный набор Microsoft SOAP Toolkit 3.0, который можно скачать с сайта http://msdn.microsoft.com/WebServices/downloads/. Обращение же к тому же простейшему Web-сервису на встроенном языке "1С:Предприятия" может выглядеть примерно так:

      Сервис1=Новый COMОбъект ("MSSOAP.SoapClient30");
      Сервис1.MSSoapInit ("http://localhost/V8WebSample/Service1.asmx?wsd1");
      СуммаПрописью=Сервис1.RublesInWords (Сумма).

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

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