1С-Предприятие. Документация | Web-расширение
Введение
В настоящее время Интернет все шире используется в самых
различных видах человеческой деятельности. Одними из его основных преимуществ
являются скорость доставки информации, распространенность - для работы с Интернетом
достаточно наличия простой телефонной линии, и независимость от используемой
пользователем операционной системы, будь то Windows, Unix или MacOS. Такие
качества Интернета позволяют использовать его для организации информационных
и деловых процессов как внутри предприятий, так и в среде клиентов и деловых
партнеров, при этом географическая удаленность между партнерами может
не приниматься во внимание. На сегодня организация и поддержка в Интернете
фирменного узла считаются практически обязательными для
ведения успешного бизнеса или представления данных о некоммерческой организации.
Возможность переноса на базу Интернета деловых процессов
привел к появлению абсолютно нового вида коммерции - так называемой электронной
коммерции (e-commerce); ее ближайшим аналогом можно считать торговлю по каталогам.
Основное проявление электронной коммерции - Интернет-магазины, где посетитель,
не выходя из дому, может просмотреть список предлагаемых товаров и услуг,
получить о них всю необходимую информацию (вплоть до внешнего вида товара),
выбрать необходимое и оплатить заказ. Чаще всего заказанный товар доставляют
покупателю непосредственно на дом. Этот способ торговли может использоваться
как для общения с обычными покупателями, так и для внутрикорпоративного взаимодействия
-например, при заказе дилером товара у дистрибьютора. Кроме удобств ведения
такой торговли можно лишь упомянуть, что средства, проходящие через
электронную торговлю, уже исчисляются миллиардами долларов.
Для интеграции 1C Предприятия 7.7 и различных Интернет-технологий
(в первую очередь Web) создано Web-расширение 1 С Предприятия
7.7. При использовании Web-расширения взаимодействие с пользователями
1С:Предприятия можно организовать, совместив средства 1 (^Предприятия и стандартные
возможности Web-интерфейса. Web-приложения на основе 1С:Предприятия могут
как входить в структуру внутрикорпоративных процессов управления, так и
представлять собой Интернет-магазины. При таком подходе получение всей необходимой
информации и управление деятельностью предприятия можно осуществлять, используя
штатные средства 1С:Предприятия 7.7. На витрину Интернет-магазина может быть
вынесен каталог товаров с описаниям и внешним видом товара, заказанный товар
может быть зарезервирован до оплаты или же покупатель может оплатить заказ
карточкой, в базе может поддерживаться корзина покупателя, хранящая отложенные
покупателем товары между посещениями магазина.
Первые три главы описания посвящены общим вопросам, связанным
со стандартами Интернет. В них вводятся стандартные термины и понятия, разбирается
построение Web-приложений и технология AS Р.
Глава 4 описывает процесс установки и запуска используемого
программного обеспечения.
Такие вопросы интеграции технологии ASP и 1 (^Предприятия,
как написание ASP-страниц, работа с пользовательскими сессиями и т.д., разбираются
в главе 5.
В главе 6 рассматривается пример, входящий в поставку -«Портал
реализатора». Дается детальное описание сайта портала и используемой конфигурации.
Интернет-технологии
Интернет построен по технологии «клиент-сервер»,
предполагающей использование двух основных приложений -приложения, работающего
на компьютере клиента, и сервера, выполняющего клиентские запросы. В
Интернете такими приложениями являются браузер (browser, обозреватель) со
стороны клиента и Web-сервер (Интернет-сервер, WWW-server) в качестве сервера.
Один сервер может поддерживать один или несколько сайтов - узлов Интернета,
логически объединяющих информацию различного характера (например, сайт фирмы
может представлять всю информацию о фирме, от местоположения до финансового
состояния). Структура сайга представляет собой дерево каталогов, аналогичное
файловой системе, все файлы на сервере лежат в каталогах этого дерева.
Для общения между клиентом и сервером используется протокол
HTTP (Hypertext Transfer Protocol, протокол передачи гипертекста), который
в свою очередь использует TCP/IP. Основной цикл протокола HTTP представляет
собой пару «запрос файла клиентом - передача файла сервером», причем
файл подразумевается произвольным. Для указания необходимого файла браузер
передает серверу URL (Universal Resource Locator, универсальный указатель
ресурсов), получаемый браузером результат обычно называют страницей. Чаще
всего URL указывается пользователем только один раз - для попадания на необходимый
сайт (например, www.lc.ru), далее новые страницы запрашиваются браузером при
переходе по ссылкам.
В Интернете используются в основном файлы HTML (HyperText
Markup Language, язык разметки гипертекста), содержащие как различно оформленный
текст с графикой, так и ссылки на другие
страницы. Кроме этого, HTML-страницы
могут содержать также программные вставки на так называемых скриптовых языках
-самым распространенным из них является JavaScript (JSript, ECMAScript). Эти
вставки могут выполняться браузером, что позволяет изменять содержимое страницы
в браузере без обращения к серверу. Такие страницы содержат так называемый
DHTML (Dynamic HTML, динамический HTML) - расширение HTML. Все HTML-файлы
представляют собой обычные текстовые файлы, содержащие специального вида фрагменты
- Tera(tags) HTML, описывающие все параметры отображения страницы - шрифт,
размер, картинки, ссылки и пр. Благодаря такому формату HTML-файлы можно писать
в обычном текстовом редакторе, однако чаще применяются специализированные
WYSIWYG-ред акторы HTML, интегрированные с приложениями разработки сайтов.
На сегодняшний день Web-серверы, кроме выполнения основной
функции - возврата файла, запрошенного пользователем, позволяют расширять
свою применимость, предоставляя для расширения функциональности различные
интерфейсы. Одна из основных проблем, решаемых этими интерфейсами - создание
возвращаемой пользователю страницы «на ходу», при этом в качестве исходного
материала обычно используется адрес (URL), переданный пользователем, и файл,
находящийся на сервере по этому адресу. Существует общий, стандартный для
всех серверов интерфейс, называемый CGI (Common Gateway Interface, общий интерфейс
узла), который позволяет создавать нужные страницы, просто выполняя указанные
пользователем приложения на компьютере сервера. Этот способ требует довольно
много серверных ресурсов, поэтому кроме CGI каждый сервер предоставляет дополнительные
возможности расширения, варьирующиеся от сервера к серверу.
Все это позволяет создавать на базе серверов различные приложения,
для которых основным пользовательским интерфейсом служит браузер.
Основными браузерами на сегодняшний день являются два браузера
- Microsoft Internet Explorer и Netscape Navigator. Кроме просмотра HTML-страниц
оба имеют развитые сервисные возможности. Оба браузера имеют реализации для
Windows, MacOS и Unix. Эти браузеры имеют неодинаковые наборы расширений HTML
и различаются по возможностям работы с DHTML, что приходится учитывать при
подготовке страниц и разработке сайтов.
Из остальных браузеров стоит упомянуть Opera (www.opera.com)
и Neoplanet (www.neoplanet.com).
Web-приложения (web applications, часто их называют
Интернет-приложениями, internet applications) представляют собой набор страниц,
объединенных общей функциональностью. Все Web-приложения являются клиент-серверными,
что, очевидно, определяется технологией построения Интернета. В приложениях
обычно задействуются все вышеперечисленные технологии, от DHTML, исполняемом
в клиентском браузере, до расширений Web-сервера. В настоящий момент Web-приложения
используются как внутри предприятий в локальных сетях, так и в Интернете -
это широко известные Интернет-магазины.
Web-приложения
Началом «взрывного» роста Интернета принято считать начало
90х годов. Именно в это время появились и были стандартизованы протокол HTTP
и язык описания страниц HTML, предназначенные для World Wide Web. Изначально
WWW предназначался для публикации различной информации текстового и графического
характера, поэтому язык HTML имел очень много недостатков, в первую очередь
- практически отсутствовали механизмы управления размещением содержания
на HTML-странице и взаимодействия с пользователями. Однако по мере роста интереса
к Интернету росли и требования пользователей к содержанию (иначе - к контенту,
от англ. content), что касалось как оформления опубликованной информации,
так интерактивности при взаимодействии пользователя с сайтами. На сегодняшний
день существующие в Интернете средства, реализованные в Web-серверах, средствах
разработки сайтов и браузерах, позволяют говорить о создании так называемых
Web-приложений, или приложений, построенных на мехнизмах Интернета и позволяющих
пользователям взаимодействовать с Web-серверами. Безусловно, Web-приложения
имеют клиент-серверную архитектуру, что диктуется общим построением Интернета.
Как и традиционные программные приложения, Web-приложения имеют несколько
аспектов: архитектура, подходы к разработке, безопасность приложений, которые
и рассматриваются в этой главе.
Одной из важных характеристик Web-приложения является область
использования приложения. По области использования Web-приложения делятся
на intranet - внутрикорпоративные приложения, рассчитанные на использование
во внутренней (локальной) сети, extranet - также внутрикорпоративные, но уже
работающие во внешней среде (Интернете), и, наконец, internet-приложения,
рассчитанные на общее использование (например, Интернет-магазины). Такое
деление возникает из-за различности подходов к построению таких приложений.
Самые жесткие требования на разработку накладывает internet-приложение - это
использование произвольных браузеров и максимальная безопасность в работе.
При разработке intranet- и extranet-приложений список используемого
программного обеспечения можно ограничить, а для intranet-приложений еще и
снизить требования к безопасности.
Все Web-приложения можно условно разбить на три составные
части: серверная часть, клиентское приложение и интерфейс.
Серверную часть образует Web-сервер, возвращающий страницы
приложения по запросам пользователя. Чаще всего эти страницы создаются динамически
на основе информации, обрабатываемой приложением. Именно на создание страниц
на лету направлены различные расширения Web-серверов, одно из
которых - CGI - уже было ранее упомянуто.
Клиентское приложение (браузер) последовательно запрашивает
страницы с сервера, используя Dynamic HTML для управления интерфейсом и частичной
обработки информации на компьютере клиента.
Пользовательский интерфейс специально выделен отдельным пунктом,
так как именно формированием клиентского интерфейса и работой с ним Web-приложения
отличаются от привычных клиент-серверных приложений. В последнем случае клиентское
приложение обменивается с сервером только данными, используя для формирования
интерфейса ресурсы приложения. В Web-приложениях интерфейс практически
полностью формируется на сервере, оставляя для исполнения клиентом только
управление созданной страницей. Более того, существующие стандарты на браузеры
накладывают дополнительную специфику на модель поведения приложения. В частности,
два свойства, которые необходимо принимать во внимание при разработке приложения
-наличие истории просмотра страниц и произвольный доступ к любой странице
приложения по известному адресу. Последнее свойство обязательно должно учитываться
в приложениях, использующих авторизацию пользователя.
Другая серьезная проблема в разработке Web-приложения -отслеживание
сессии конкретного пользователя. Дело в том, что по определению HTTP-протокол
не имеет понятия текущего состояния (stateless), т.е. очередной запрос страницы
абсолютно не зависит от предыдущих запросов и потому не требует уникального
идентификатора. Для отслеживания последовательных запросов и идентификации
пользователя используются так называемые cookies.
Cookies (русского термина не имеют, в единственном числе
-cookie, точный перевод - «домашнее печенье») представляют собой небольшие
файлы, содержащие произвольную текстовую информацию. Эти файлы
формируются и передаются пользовательскому приложению Web-сервером и хранятся
на компьютере пользователя. При очередных запросах страниц информация из этих
файлов пересылается на сервер вместе с запросом, что позволяет отличать и
отслеживать работу различных пользователей с Web-сервером. Каждый cookie имеет
следующие свойства:
· наименование
cookie;
· значение cookie,
содержащее собственно информацию;
· домен. Указанный домен ограничивает
область видимости cookie. По умолчанию домен устанавливается в домен текущей
страницы (например, для
www.lc.ni - домен Ic.ru);
· каталог. Указанный каталог ограничивает
область видимости cookie внутри сервера. Каталог / используется
для указания всех каталогов сервера. По умолчанию каталог устанавливается
в каталог текущей страницы;
· срок действия. Срок ограничивает
время действия cookie. По истечении указанного срока cookie удаляется с компьютера
пользователя. По умолчанию срок действия не устанавливается, что
означает удаление cookie при закрытии браузера (это эквивалентно установке
срока действия в 0);
· секретность. Cookie с установленным
свойством секретности могут посылаться на Web-сервер только по SSL-соединению.
Это свойство используется редко. По умолчанию секретность не устанавливается.
Домен и каталог необходимы для ограничения области действия
cookie - информация из cookie посылается вместе с запросом только в том случае,
если домен и каталог cookie в точности совпадают с доменом и каталогом запрашиваемой
страницы. Каждый cookie полностью характеризуется своим наименованием, доменом
и путем.
Согласно стандарту браузер может как хранить и использовать
cookies в своей работе, так и отключать их прием и сохранение в целях безопасности.
Для этого в настройках браузеров обычно присутствует флажок, включающий и
отключающий работу с cookie. По умолчанию работа с cookie включена, однако
пользователь вправе отключить прием cookie. Для intranet- и extranet-приложений
возможность отключения cookie можно игнорировать, просто введя некоторую дисциплину
использования приложения. Для общих Web-приложений, опирающихся на использование
cookies, такая возможность отключения представляет серьезную проблему, так
как не существует точного способа определить, принимает ли браузер cookies.
С использованием cookies отслеживание действий пользователя
упрощается - теперь сервер может сохранить в cookie некоторую внутреннюю информацию,
и при последующих обращениях идентифицировать пользователя. Однако здесь следует
учесть одну тонкость. Поскольку два запущенных экземпляра одного браузера
используют единую базу cookies, то сервер не сможет отличить эти браузеры,
даже если они будут находиться на разных страницах. Из вышесказанного вытекает,
что реально идентифицируется не сам пользователь, а скорее его компьютер.
- при запуске двух одинаковых браузеров Web-сервер будет воспринимать их как
одну сессию. При запуске разных браузеров может возникнуть две сессии, если
браузеры используют разные базы для хранения cookies.
Как и для обычных приложений, универсальной схемы построения
Web-приложения не существует, поскольку различные приложения требуют различных
подходов к обработке данных, построению пользовательского интерфейса и т.д.
Однако можно построить некоторую приблизительную схему приложения
с авторизацией. Все приложение делится на три части -незащищенную, часть,
обеспечивающую авторизацию пользователя, и защищенную. В незащищенной части
пользователь может перемещаться произвольно, следуя ссылкам или по запомненным
ранее закладкам. Переход в защищенную часть осуществляется только после авторизации
пользователя, и все перемещения по защищенным страницам обязательно авторизуются.
При первой верной авторизации вся необходимая информация записывается в cookie,
и при последующих авторизациях информация берется в первую очередь из сохраненного
cookie. При отсутствии cookie (удален или браузер не принимает cookie) пользователь
снова проходит через интерактивную часть авторизации. Отсюда следует, что
при невозможности принимать cookie пользователь будет вынужден заново вводить
авторизующую информацию при каждом запросе страницы из защищенной части, а
каждая защищенная страница должна переадресовывать пользователя в незащищенную
часть или на авторизацию. Часть, отвечающая за авторизацию, может быть реализована
как одной, так и несколькими страницами.
Серверные технологии, используемые в Web-приложениях, основываются
на достаточно простом и очевидном принципе динамического создания страницы
при запросе клиента вместо возврата готовой страницы. Такой подход позволяет
создавать страницы на лету, основываясь на различных данных (например,
из баз данных или информации о браузере клиента), доступных с сервера. Наиболее
«старая» и известная технология - CGI (Common Gateway Interface). Фактически
CGI позволяет создавать страницы путем запуска на сервере указанной пользователем
программы (естественно, список этих программ заранее задан администратором
Web-сервера). По ходу работы программа последовательно создает HTML-код результирующей
страницы, в зависимости от различных условий код может быть разным. Стандарт
CGI определяет достаточно простой протокол взаимодействия запущенной
программы и Web-сервера и поэтому реализован практически на всех существующих
Web-серверах.
Web-сервер Internet Information Server дополнительно к CGI
реализует еще две технологии - ISAPI (Internet Server Application Programming
Interface) и ASP (Active Server Pages). Первая является некоторым аналогом
CGI, но использует не отдельные программы, а DLL, что дает значительную экономию
ресурсов сервера. Технология ASP основана на совместном использовании визуальной
разработки страницы и фрагментов скриптов, изменяющих HTML-код страницы в
зависимости от условий, в которых исполняется страница. Эта технология и используется
для расширения возможностей 1С:Предприятия 7.7.
На настоящий момент существуют серьезные функциональные различия
между версиями браузеров Internet Explorer и Netscape Navigator - более того,
различия имеют и реализации одного и того же браузера для разных платформ.
Часто это служит причиной создания двух версий сайта, учитывающих особенности
того или иного браузера. Однако есть общие технологии, поддерживаемые всеми
браузерами независимо от модели и платформы. Две из этих технологий - это
CSS (Cascading Style Sheets) и DHTML (Dynamic HTML). CSS предназначен в первую
очередь для разделения содержания сайта и его оформления. С помощью CSS всем
одинаковым элементам сайта (например, таблицам) можно задать единые правила
оформления, причем эти правила будут написаны не на каждой странице, а в отдельном
файле, что упрощает переоформление сайта. DHTML используется для динамического
изменения страниц в браузере без обращений к Web-серверу. Собственно DHTML
состоит из двух составляющих - DOM (Document Object Model, объектная модель
документа) и JavaScript (иначе стандарт ECMAScript), использующий DOM. JavaScript
-это стандартизованный объектно-ориентированный скриптовый язык общего назначения,
однако его исходное предназначение -исполнение в среде браузера. В качестве
контекста исполнения используются объекты, расположенные на странице - таблицы,
ссылки, рисунки и т.д. Описание существующих объектов и методы работы с ними
и образуют DOM - стандарт на программный доступ к содержанию HTML-страниц.
Основные различия между браузерами кроются именно в реализации этого стандарта,
что приводит к упрощению алгоритмов работы в клиентском браузере (для уменьшения
влияния различий), или к созданию нескольких страниц для разных браузеров.
В качестве примера наиболее известных применений
Web-приложений можно привести электронную торговлю. Приложения, работющие
в этой области, чаще всего являются электронными магазинами или Интернет-магазинами.
В число основных элементов Интернет-магазина входят витрина
(каталог товаров), корзина покупателя и оплата заказанного товара.
Витрина практически всегда представляет собой
структурированное по категориям дерево товаров с возможностью навигации по
дереву и поиска нужного товара.
Корзина покупателя содержит все выбранные пользователем товары,
при этом содержимое корзины может как сохраняться между различными посещениями
магазина, так и действовать только при текущем посещении. Это зависит не только
от магазина, но и от возможностей браузера пользователя, так как существует
единственная возможность однозначно идентифицировать пользователя между
сеансами - использовать cookie. При отправке запроса браузер передает все
возможные для этого сайта и пути cookie серверу, который имеет возможность
прочитать их содержимое и определить пользователя магазина. При отправке страницы
сервер может передать cookie, которые браузер должен сохранить на компьютере
пользователя. Если прием cookie в браузере отключен или просто невозможен,
то различные входы одного покупателя в магазин идентифицировать нельзя, и,
как следствие, корзина такого покупателя может храниться лишь до момента его
выхода из магазина.
Оплата заказанного товара может выполняться различными способами
- традиционными безналичным или наличным, или электронными со счета или по
кредитной карте. Оплата традиционными способами лишь резервирует товар в магазине
до подтверждения оплаты, оплата электронным методом может быть выполнена немедленно
и в этом случае товар может быть незамедлительно отправлен к покупателю.
Ссылки на работающие Интернет-магазины можно найти на сайте
фирмы Аркадия www.magazin.ru.
Как и все остальные расширения функциональности Web-сервера
технология ASP предназначена для динамического создания страницы при запросе
клиента. Такой подход позволяет создавать страницы на лету, основываясь
на различных данных (например, из баз данных или информации о браузере клиента),
доступных с сервера. Чаще всего динамические страницы можно условно разбить
на две логические части - информационное наполнение страницы и ее визуальное
представление (обычно определяемое общим стилем сайта), при этом в отличие
от изменяемой информационной части оформление чаще всего статично. Для создания
оформления страниц традиционно удобны различные WYSIWYG-редакторы страниц
(например, Frontpage или Dreamweaver), однако существовавший изначально единственный
способ динамической генерации страниц -CGI - для создания таких страниц не
подходит, так как CGI-приложения создают весь HTML-текст страниц программным
путем. Поэтому была предложена другая технология создания динамических страниц,
названная ASP (Active Server Pages -Активные Серверные Страницы).
Основой этой технологии является использование HTML-страниц
с внедренным в HTML-код программным кодом на некотором языке программирования,
создающем часть результирующей страницы. Код обычно называют скриптом (script),
а язык программирования - скриптовым. Такой подход позволяет визуально редактировать
оформление страниц, используя для вывода информации скрипты на различных языках.
Фактически ASP-страницы являются обычными HTML-страницами (с некоторыми
синтаксическими отличиями), дополнительно обрабатываемые на сервере перед
отправкой клиенту. Использование скриптов позволяет работать с OLE-объектами,
что в совокупности с встроенными в скриптовые языки возможностями дает практически
неограниченные возможности доступа и обработки различной информации. Технология
ASP рассчитана на использование только с Web-сервером II S.
В программном коде страницы может быть использовано несколько
скриптовых языков, при этом процедуры и функции, написанные на одном языке,
могут быть вызваны из другого языка. В поставку IIS входят два скриптовых
языка - JavaScript и VBScript, однако их число может быть расширено благодаря
использованию открытой технологии Active Scripting.
Для внедрения скриптов в HTML-код страницы используется два
различных варианта тегов: %код скрипта% и script language=имя
языка гипа^зегуегкод скрипта/8спр1. Программный
код между тегами % и % предполагается написанным на определенном для
этой страницы первичном (primary, default) языке, во втором случае язык скрипта
задается параметром тега language. Скриптов, использующих как первый, так
и второй вариант написания, на странице может быть несколько. Порядок исполнения
страницы Web-сервером довольно сложен: сначала исполняются все скрипты,
заключенные в теги script/script и написанные
не
на первичном языке, причем порядок обработки таких скриптов (если их несколько)
неопределен. Затем происходит последовательная обработка страницы - на этом
этапе по мере обработки клиенту последовательно пересылается HTML-код страницы
и исполняются скрипты, написанные в тегах %%. И наконец снова исполняются
скрипты, заключенные между script/script, но уже использующие
язык страницы по умолчанию, порядок обработки таких скриптов (если их несколько)
также неопределен. В обоих случаях весь создаваемый скриптами HTML пересылается
клиенту (или буферизуется на сервере для отложенной отправки - это зависит
от установки Response.Buffer). Исходя из такого порядка обработки страницы
рекомендуется в тегах script/script располагать только процедуры
и функции (на любом языке) и вызывать их при исполнении скриптов в тегах %%.
Только таким образом можно обеспечить однозначность последовательности исполнения
скриптов.
Для управления различными параметрами страницы используются
директивы (directives) ASP. Директивы пишутся в первой строке страницы в единственном
теге % директивы % через пробел в виде пар «директива=значение».
Ниже приведен список директив с кратким описанием:
LANGUAGE - устанавливает язык по умолчанию для страницы.
Все скрипты, использующие теги %%, должны быть написаны именно на
указанном языке. Возможные значения - наименования скриптовых языков (изначально
возможны VBScript и JScript).
ENABLESESIONSTATE - включает или отключает использование
этой страницей пользовательских сессий. Возможные значения - True или False.
CODEPAGE - устанавливает кодовую страницу, используемую в
преобразовании текста при передаче текста из программного кода в Web-сервер.
Этот параметр имеет аналог в языке (см. Session.CodePage).
LCID - .устанавливает идентификатор текущей региональной
установки (local identifier), определяющей формат дат, символ валюты и т.д.
Эта установка необходима для правильной работы встроенных функций скриптовых
языков, использующих вышеуказанные данные. Этот параметр имеет аналог в
языке (см. Session.LCID).
Каждая ASP-страница исполняется в некотором контексте. Этот
контекст предоставляется странице сервером в виде набора объектов, позволяющих
получать доступ к свойствам сервера и информации о клиенте, передавать готовый
HTML клиентскому приложению и т.д. Код ASP-страницы создается только при запросе
страницы и после завершения уничтожается, поэтому хранить в странице статические
объекты невозможно.
Несколько ASP-страниц можно объединить в приложение (application).
Это объединение носит несколько механический характер - приложением называются
все ASP-страницы, находящиеся в специально указанном каталоге (корневом
каталоге приложения) или его подкаталогах.
В корневом каталоге приложения может находиться файл global.asa
- специальный файл, содержащий предопределенные процедуры и объявления глобальных
статических объектов.
В приложении существуют четыре предопределенные процедуры
- Session_OnStart, Session_OnEnd, Application_OnStart, Application_OnEnd.
Эти процедуры вызываются соответственно при начале и завершении отдельных
пользовательских сессий и всего приложения в целом. Началом работы приложения
является запрос пользователем произвольной страницы приложения, завершением
-завершение последней сессии.
Для использования предопределенных
процедур Application OnStart и Application OnEnd
их необходимо реализовать на языке отличном от V7Script. Web-расширение
не поддерживает исполнение этих процедур.
Для разделения работы различных пользователей с одним ASP-приложением
используется понятие сессии (session). Фактически ASP-сессия - это некоторый
контекст (значения переменных, объекты и т.д.) конкретного пользователя. Новая
сессия запускается при выполнении одного из следующих условий:
· пользователь запросил страницу
приложения, и global.asa содержит процедуру Session_OnStart;
· пользователь запросил страницу
приложения, и global.asa содержит объект object scope=session ...x/object
с областью видимости сессия;
· пользователь
сохранил некоторое значение в объекте Session:
· Session. Уа1ие(ИмяПеременной,Значение).
Для отслеживания сессии конкретного пользователя при последовательных
запросах используются cookies (см. Cookies, стр. 17). При начале сессии на
компьютер пользователя в cookie передается некоторый уникальный защищенный
от воспроизведения идентификатор. При последующих запросах этот cookie передается
наоборот от пользователя на Web-сервер, что позволяет однозначно идентифицировать
пользователя и определить его сессию. Cookie с идентификатором сессии на компьютере
пользователя уничтожается при закрытии браузера. База данных, хранящая соответствия
между сессиями и идентификаторами в IIS создается заново при перезапуске
сервера, поэтому полагаться на уникальность идентификатора сессии в течение
длительного времени не следует. Весь механизм отслеживания сессии встроен
в IIS и работает автоматически.
Объекты
В контексте ASP-страницы доступно пять основных объектов,
предоставляемых IIS: Session, Application, Request, Response, Server. Их неполное
описание приведено ниже.
Этот объект представляет запрос пользователя на получение
текущей страницы.
Этот массив содержит все cookie, переданные пользователем
на Web-сервер.
Синтаксис:
Request .Cookies
[Имя
cookie]
Параметры:
Имя cookie Строка, содержащая
наименование cookie.
Описание:
Массив содержит все переданные при запросе cookies. Каждый
cookie является объектом со своими свойствами, перечисленными ниже. Cookie
в массиве доступны только для чтения.
Значения элементов cookie:
Item. Значение cookie, содержащее собственно информацию.
Domain (домен). Ограничение области видимости для cookie указанным доменом.
По умолчанию устанавливается в домен текущего документа.
Expires (срок действия). Ограничение времени действия
cookie. По истечении указанного срока cookie удаляется с компьютера пользователя.
По умолчанию устанавливается в 0, что эквивалентно удалению cookie при закрытии
браузера.
Path (путь). Ограничение области
видимости для cookie указанием каталога на сервере. Cookie виден только для
файлов в указанном каталоге. Каталог / используется для указания
всех каталогов сервера.
Пример:
Если (Request.Cookies(CookieName).Item = NoPage) Тогда
Страница = Exit.asp ;
КонецЕсли ;
Возвращает значение переданного параметра по имени параметра.
Синтаксис:
Request. Query-String
(
Имя параметра} . Item
Параметры:
Имя параметра Строка, содержащая наименование
параметра.
Описание:
Этот метод чаще всего используется при работе с формами,
передающими значения элементов управления через URL в виде пар Имя=3начение.
В силу особенностей 1С:Предприятия при работе с OLE для получения значения
параметра после вызова метода необходимо добавить .Item.
Пример:
ИмяПользователя = Request.QueryString(UserName
1').Item
Этот метод предоставляет различную информацию о сервере,
пользователе, текущем запросе и т.д.
Request. ServerVariables (Имя параметра )
Параметры:
Имя параметра Строка, содержащая наименование
параметра, для которого требуется возвратить информацию
Описание:
Этот метод позволяет получить полную информацию о среде исполнения
ASP-страницы - имя страницы, адрес пользователя, запросившего страницу, имя
сервера и т.д. Некоторые возможные значения параметра приведены ниже:
HTTP_USER_AGENT наименование браузера пользователя
PATH INFO информация о пути
к текущей странице на сервере
PATH TRANSLATED информация о физическом пути
текущей страницы на диске
REMOTE_HOST REMOTE USER адрес компьютера пользователя имя
пользователя
Пример:
Сообщить(Request.ServerVariable(HTTP_USER_AGENT))
Этот объект представляет ответ Web-сервера на запрос пользователя.
Этот массив содержит все cookie, передаваемые пользователю
в ответе на запрос. По всем свойствам эквивалентен массиву Cookies объекта
Request, за исключением того, что в Response.Cookies есть доступ как на чтение,
так и на запись.
Этот атрибут контролирует предварительную буферизацию при
пересылке HTML пользователю.
Синтаксис:
Response.Buffer
Возможные значения:
True/False (I/O)
Описание:
Если переменная установлена в True, то весь пересылаемый
клиенту HTML буферизуется на сервере и отправляется только при завершении
формирования страницы. Обычно это свойство используется при направлении запроса
пользователя на дргую страницу. Свойство доступно как на чтение, так и на
запись. Начальная установка соответствует значению, установленному в ММС для
приложения.
Пример:
Response. Buffer = 1;
Передает фрагмент HTML в приложение пользователя.
Response .Write
(НТМL-строка)
Параметры:
НТМЬ-строка Строка, содержащая фрагмент HTML-кода,
передаваемый пользователю.
Метод Write передает фрагмент HTML на компьютер пользователя.
Переданный фрагмент может буферизоваться, если свойство Buffer установлено
в 1.
Пример:
Response. У?г-[Ье(''рПараграф/р) ;
Очищает буфер переданного клиенту HTML.
Синтаксис:
Response.Clear()
Параметры:
отсутствуют
Описание:
Метод Clear удаляет весь буферизованный HTML. Этот метод
может использоваться при обработке ошибок, происшедших при исполнении скрипта,
для создания другой страницы.
Пример:
Если (Ошибка = 1) Тогда Response.Clear() ;
КонецЕсли
Принудительно завершает обработку текущей страницы.
Синтаксис:
Response.End()
Параметры:
отсутствуют
Описание:
Метод End принудительно завершает обработку текущей страницы,
прерывая исполняемый скрипт. Если Response. Buffer установлен в 1, то весь
буферизованный HTML передается пользователю.
Пример:
Response.Clear() ;
Response.End() ;
Передает буферизованный HTML-код пользователю.
Синтаксис:
Response.Flush()
Параметры:
отсутствуют
Описание:
Если Response.Buffer равен 1, то весь буферизованный HTML
передается пользователю. В противном случае возникает ошибка времени исполнения.
Пример:
Response.Buffer = 1;
Response.Write(рПараграф/р);
Response.Flush();
Перенаправляет запрос на указанную страницу.
Синтаксис:
Response. Redirect
(Страница)
Параметры:
Страница Строка с наименованием страницы,
на которую производится переадресация.
Описание:
Метод Redirect перенаправляет запрос пользователя на другую
страницу, удаляя весь буферизованный к моменту вызова HTML. Для работы этого
метода требуется установка Response.Buffer в 1.
Пример:
Response.Redirect(login.asp)
;
Этот объект предоставляет доступ к методам и информации Web-сервера.
Определяет время ожидания завершения скрипта в секундах.
Синтаксис:
Server.ScriptTimeout
Описание:
Атрибут ScriptTimeout управляет временем, отпущенным на исполнение
скрипта. После окончания времени ожидания скрипт считает зависшим и принудительно
прерывается. ScriptTimeout устанавливается по умолчанию в 90 секунд. В большее
значение этот атрибут имеет смысл устанавливать при создании объемных страниц
(например, отчетов). Атрибут доступен для чтения и записи.
Пример:
Server.ScriptTimeout = 360; // 6 минут
Создает OLE Automation объект.
Синтаксис:
Server. CreateObj ect (
ProgID}
Параметры:
ProgID ProgID создаваемого объекта.
Описание:
Метод CreateObject создает объект OLE Automation no переданному
ProgID. По умолчанию объект создается с областью видимости страница
и автоматически уничтожается при завершении обработки страницы. Если объект
необходимо сохранить для последующего использования, то можно воспользоваться
объектами Session или Application.
Пример:
Session(MyObj) = Server.CreateObject(MyObjProgID);
Перекодирует строку текста с учетом ограничений в написании
URL.
Синтаксис:
Server.URLEncode(URL)
Параметры
:
URL Строка с URL.
Описание:
Метод URLEncode перекодирует переданную строку, учитывая
ограничения стандарта на символы, входящие в url(b частности, символ пробела
заменяется на %20) Этот метод обычно используется при построении URL программным
путем.
Пример:
Response.Write(Server.URLEncode(http://www.lc.ru))
;
Конвертирует логический путь к странице на сервере физический
путь на локальном диске.
Синтаксис:
Server. MapPath (Путь
на сервере)
Параметры:
Путь на сервере Строка, содержащая логический
путь от корневого каталога сервера или от текущего каталога.
Описание:
Метод MapPath конвертирует переданный логический путь на
сервере в физический на локальном диске. Если логический путь начинается с
символа «\» или «/», то метод возвращает полный физический путь, считая что
логический путь указан начиная от корня сервера. В противном случае переданный
логический путь считается указанным относительно текущего каталога. Для получения
местонахождения корневого каталога Web-сервера на локальном диске следует
передать в метод строку «/». Указанный путь не должен обязательно существовать.
Пример:
Server.MapPath(global.asa) ;
Содержит идентификатор текущей сессии.
Синтаксис:
Session.SessionID
Описание:
SessionID содержит идентификатор текущей сессии. Значения
идентификатора лежат в пределах от 0 до 2
32-1. Атрибут доступен
только для чтения.
Пример:
Response.Write(Session.SessionID) ;
Максимальное время между последовательными запросами пользователя.
Синтаксис:
Session.Timeout
Описание:
Timeout содержит время ожидания между запросами
пользователя в минутах. Если между последовательными запросами проходит больше
указанного времени, то сессия считается завершенной. Начальная установка
соответствует значению, установленному в ММ С для приложения. Атрибут доступен
для чтения/записи.
Пример:
Session.Timeout = 5;
Принудительно завершает текущую сессию.
Синтаксис:
Session.Abandon()
Параметры:
отсутствуют
Описание:
Метод Abandon завершает текущую сессию, однако обработка
текущей страницы не прекращается. Сессия уничтожается только после завершения
текущей страницы.
Пример:
Если (ИмяПользователя='Иванов) Тогда Session.Abandon();
КонецЕсли;
Сохраняет значение переменной с областью видимости сессия
на время существования сессии.
Синтаксис:
Value (Имя переменной,Значение
переменной) Value{Имя переменной)
Параметры:
Имя переменной Строка, содержащая наименование
сохраняемого значения.
3начение переменной Сохраняемое значение.
Описание:
Позволяет сохранять некоторое значение произвольного типа
с областью видимости сессия на время существования сессии. Каждому
значению присваивается уникальное имя для различения значений. Значение автоматически
уничтожается при уничтожении сессии. Значения встроенных объектов таким образом
сохранять нельзя, т.е. строка Session. Value(varl,
Response) является ошибочной.
Пример:
Session.Value(ИмяПользователя,Иванов);
Response.Write(Session.Value('ИмяПользователя'));
Обеспечивает монопольный доступ к значениям, сохраненным
в объекте Application.
Синтаксис:
Application.Lock()
Параметры:
отсутствуют
Описание:
Позволяет монопольно изменять значения сохраненных в Application значений, закрывая доступ для остальных пользователей.
Доступ автоматически восстановится при вызове метода Unlock,
завершении обработки страницы или по истечении времени таймаута.
Пример:
Application.Lock() ;
Application.Value(тип,строка);
Application.Unlock() ;
Восстанавливает общий доступ к значениям, сохраненным в объекте
Application.
Синтаксис:
Application.Unlock()
Параметры:
отсутствуют
Описание:
Метод Unlock является противоположным
по действию методу Lock, открывая доступ к значениям,
сохраненным в Application, всем пользователям приложения.
Пример:
Application.Lock() ? Application.Value(тип,строка)
;
Application.Unlock() ;
Сохраняет значение переменной с областью видимости приложение
на время существования сессии.
Синтаксис:
Va lue (Имя переменной,3начение
переменной} Va lue (Имя переменной)
Параметры:
Имя переменной Строка, содержащая наименование
сохраняемого значения.
3начение переменной
Сохраняемое значение.
Описание:
Позволяет сохранять некоторое значение произвольного типа
с областью видимости приложение на время существования приложения.
Для обращения к значению каждому значению присваивается уникальное имя.
Значение автоматически уничтожается при уничтожении сессии. Значения встроенных
объектов таким образом сохранять нельзя, т.е. строка
Application.Value(varl,Response) является ошибочной.
Использование табличных документов 1C:Предприятия 7.7
Эта глава
посвящена установке и настройке используемых при работе с Web-расширением
программных продуктов.
Microsoft Internet Information
Server
Microsoft
Internet Information Server (US) - Web-сервер, позволяющий как программно
расширять возможности сервера CGI-и ISAPI-компонентами, так и использовать
ASP-страницы, содержащие фрагменты кода на скриптовых языках и обрабатываемые
сервером перед отправкой клиенту. Последняя технология и используется для
интеграции IIS и 1С Предприятия 7.7.
Установка IIS
Порядок установки
IIS на Windows NT 4.0 отличается от порядка установки на Windows 2000, поэтому
они описаны раздельно.
Windows NT 4.02>
IIS с поддержкой
ASP не входит в поставку Windows NT 4.0, поэтому его необходимо устанавливать
отдельно. В качестве источника рекомендуется использовать NT Option Pack 4.0,
доступный для загрузки с сайта Microsoft по адресу http://www.microsoft.com/ntserver/nts/downloads/.
В этот пакет входят несколько программных продуктов, образующих комплекс,
необходимый для функционирования Web-сервера. Из списка компонент необходимо
обязательно установить следующие компоненты:
· Microsoft Data
Access Components 1.5
· Microsoft Management
Console
· NT Option Pack
Common Files
· Internet Information
Server (Personal Web Server при установке на Windows NT Workstation)
· Internet Service
Manager о World Wide Web Server
· Transaction Server
· Transaction Server
Core Components
· Windows Scripting
Host
Если подкомпоненты
для какого-то из компонентов не указаны, то можно устанавливать компонент,
не изменяя предложенного по умолчанию выбора. Основным инструментом для управления
IIS служит Microsoft Management Console (далее ММС). ММС запускается из меню
Start/Programs/Windows NT 4.0 Option Pack/Microsoft Internet Information Server/Internet
Service Manager для Windows NT 4.0. Все используемые сервисы организованы
в ММС в виде дерева каталогов с корнем Console Root. Управление Web-сервером
находится в подкаталоге дерева с именем Internet Information Server/servername/Default
Web Site.
Windows 20002>
В поставку
Windows 2000 уже включен IIS, поэтому для установки IIS достаточно выбрать
соответстующий пункт в процессе установки операционной системы. Как и IIS,
Microsoft Management Console (далее ММС) встроена в Windows 2000. Управление
Web-сервером запускается по пункту меню Start/Programs/Administrative
Tools/Internet Information Services.
Никаких специальных
настроек после установки собственно IIS не требует, все необходимые модификации
настроек приложений описаны в соответствующих разделах.
Web-приложения
Описание Web-приложения
дано ранее в главе «Глава 3 Технология ASP» в пункте «Приложение» стр. 25,
поэтому здесь рассматриваются только вопросы, связанные с исполнением Web-приложений
на U.S.
Создание приложения
Для создания
приложения выберите необходимый подкаталог и, нажав правую кнопку мыши, выберите
пункт Properties. На закладке Directory найдите Application Settings и нажмите
кнопку Create. Созданному приложению можно дать произвольное имя.
Существует
два варианта (в Windows 2000 - три) запуска Web-приложения: в текущем процессе
самого Web-сервера или в отдельном приложении. Далее эти варианты рассматриваются
отдельно.
Запуск приложения
в процессе Web-сервера повышает быстродействие Web-приложения, так как
запросы на обработку страниц не передаются между процессами, однако уменьшает
надежность системы, так как в случае возникновения ошибки в Web-приложении
необходимо перезапустить и Web-сервер. Этот вариант запуска установливается
при создании приложения по умолчанию.
Запуск приложения
в отдельном процессе позволяет повысить устойчивость WWW-сервера к сбоям в
приложении и дает возможность остановки приложения без остановки всего WWW-сервера,
однако требует дополнительных ресурсов компьютера. Для запуска приложения
в отдельном процессе выберите подкаталог приложения и, нажав правую кнопку
мыши, выберите пункт Properties. На закладке Directory найдите Application
Settings и включите флаг Run in separate memory space (isolated process) -приложение
будет запускаться в отдельном процессе.
Третий вариант
запуска (pooled) доступен только в Windows 2000. В этом варианте для всех
Web-приложений создается отдельный от Web-сервера процесс, в котором и запускаются
приложения. Таким образом, этот вариант является промежуточным по быстродействию,
устойчивости и требовательности к ресурсам.
Остановка приложения
Для остановки
приложения выберите подкаталог приложения и, нажав правую кнопку мыши, выберите
пункт Properties. На закладке Directory найдите Application Settings и нажмите
кнопку Unload -приложение будет выгружено. Такая возможность остановки существует
только при запуске приложения в отдельном процессе -все Web-приложения, запущенные
в процессе US, останавливаются только при остановке самого Web-сервера.
Пользовательский контекст
При работе
Web-приложения все вызовы, связанные с объектами операционой системы, исполняются
в некотором пользовательском контексте. Исходя из набора прав этого пользователя
доступ к объектам системы может быть разрешен или запрещен. При установке
IIS на компьютере создается два дополнительных пользователя, локальных для
компьютера - IUSR_servername и IWAM_servername, обладающих очень ограниченным
набором прав.
IUSR_servername
по умолчанию используется для проверки прав доступа, которыми обладает IIS
при выполнении пользовательских запросов, т.е. все пользовательские запросы
выполняются как исходящие от этого пользователя. Установку этого контекста
можно изменить - на закладке Directory Security свойств приложения нажмите
кнопку Edit, затем нажмите Edit напротив Allow Anonymous Access и выберите
нужного пользователя из списка.
Следует
различать пользовательский контекст всего Web-приложения и контекст
выполнения отдельных пользовательских запросов, поскольку различные системные
вызовы (в частности, вызовы OLE) могут использовать не только контекст запроса
(например, IUSR_servername), но и контекст приложения. Web-приложения, исполняющиеся
в процессе IIS, используют контект SYSTEM - встроенный системный контекст,
обладающий практически неограниченными правами на локальном компьютере, но
не имеющий доступа к сетевым ресурсам. Web-приложения, запускающиеся в отдельном
процессе, по умолчанию используют контект IWAM_servername.
Такое различение
пользовательских контекстов необходимо по следующей причине: если 1С:Предприятие
7.7 и Web-приложение выполняются на разных компьютерах, то для корректного
завершения сессии необходимо, чтобы пользователь, в контексте которого исполняется
процесс, обладал правом Act as part of the operating system (Работа в режиме
операционной системы). Пользователь SYSTEM имеет такое право, поэтому
Web-приложения, исполняющиеся в процессе Web-сервера, не требуют дополнительной
настройки. Пользователь IWAM_servername таким правом не обладает, поэтому
следует либо дать это право IWAM_servername, либо изменить пользовательский
контекст Web-приложения на контекст пользователя, обладающего таким правом.
Для этого в Windows NT 4.0 нужно найти соответствующий пакет (package) в каталоге
ММС Console Root/Microsoft Transaction Server/Packages Installed и на странице
Identity свойств пакета выбрать необходимого пользователя. В Windows 2000
нужно запустить управление Component Services (пункт меню Start/Programs/Administrative
Tools/Component Services) и аналогичным образом изменить пользователя для
пакета IIS Out-Of-Process Pooled Applications.
Следует принимать
во внимание, что указанное право представляет большие полномочия по выполнению
системных вызовов (непосредственно после установки операционной системы право
Act as part of the operating system предоставлено только пользователю SYSTEM),
поэтому предоставление такого права пользователям понижает общий уровень безопасности
Web-сервера. Исходя из этого рекомендуется использовать только Web-приложения,
исполняющиеся в процессе IIS.
Если же Web-приложение
исполняется на одном компьютере с 1 (^Предприятием, то вышеприведенные требования
могут не выполняться.
Остановка и перезапуск
IIS
Для этого
можно использовать как ММС (Microsoft Managment Console), так и командную
строку. В ММС нужно просто выбрать корень сайта (с наименованием по умолчанию
Default Web Site) и нажать соответствующую кнопку на панели инструментов.
Из командной строки это сделать несколько сложнее - нужно ввести следующие
команды:
· для остановки
net stop iisadmin /у
· для запуска
net start w3svc
Управление устареванием
страниц
Время устаревания
(expiry time) страниц используется для определения временной границы, после
которой браузер при запросе страницы должен заново получив требуемую страницу
с WWW-сервера, возможно обновив сохраненный на компьютере пользователя
образ страницы. Для установки времени устаревания выберите подкаталог
приложения и, нажав правую кнопку мыши, выберите пункт Properties. На закладке
HTTP Headers включите флаг Enable Content Expiration и выберите необходимое
время устаревания. Можно установить один из трех возможных вариантов:
· Expire immediately
- страница не кэшируется в браузере
· Expire after
- страница обновляется через некоторое время после загрузки
· Expire on - страница
обновляется после наступления указанной даты.
Страницы,
содержащие критичные для приложения и часто обновляемые данные, должны иметь
признак Expire immediately -тогда страница будет обновляться при каждом запросе
пользователя. Заметим, что существует также программный аналог данной установки,
использованный в примере «Портал регистратора».
Frontpage
Microsoft
Frontpage - один из популярных программных продуктов для создания Web-сайтов,
обладающий широким набором функций. В состав Frontpage входят редактор Web-сайта,
позволяющий строить структуру сайта, и WYSIWYG-редактор HTML-страниц сайта.
Кроме функций редактирования Frontpage предоставляет сервисные функции проверки
ссылок на сайте, информации о страницах сайта и др. Сам Frontpage поставляется
как в виде отдельного продукта, так и в составе Microsoft Office. В версиях
Frontpage 97 и 98 редакторы сайта и страниц представляют разные приложения,
в Frontpage 2000 приложение одно. Далее все описания ориентируются на Frontpage
2000 из русскоязычного Microsoft Office, различные названия для других версий
и языков могут отличаться от приведенных.
Установка
Frontpage выполняется с CD-ROM из поставки Microsoft Office и не представляет
сложностей. Однако кроме установки самой программы необходимо установить также
так называемые серверные расширения (server extensions) – компоненты Web-сервера,
необходимые для выполнения различных действий в Frontpage. Эти компоненты
должны быть установлены на компьютер, на котором установлен Web-сервер. После
установки компоненты необходимо сконфигурировать для работы с Web-сервером.
Windows NT 4.02>
Для конфигурирования
расширений запустите Microsoft Management Console (MMC) и из меню Console
выберите Add/Remove Snap-In.... На закладке Extensions для snap-in Internet
Information Server включите флаг «Серверные расширения Frontpage». Щелкните
ОК и затем щелкните правой кнопкой мыши в название Web-сервера. Выберите Task-Conngure
Extensions. Далее следуйте указаниям мастера конфигурирования. После завершения
серверные расширения Frontpage будут установлены.
Windows 20002>
Серверные
расширения Frontpage входят в поставку Windows 2000, поэтому для их установки
достаточно выбрать соответстующий пункт в процессе установки операционной
системы.
Для работы
с сайтом «Портал реализатора» необходимо проделать следующие действия. Запустите
Frontpage и выберите пункт Open Web... из меню File. В диалоге выбора каталога
найдите каталог, содержащий файлы сайта, и нажмите Open. На вопрос «Add Frontpage
Information to the Folder» нажмите Yes. Frontpage сконвертирует указанный
каталог в сайт, добавив специальную информацию (в том числе создав подкаталоги
в указанном каталоге), и откроет сайт.
Для того чтобы
содержание сайта было доступно с Web-сервера, сайт необходимо опубликовать
(publish) на сервер. Для этого из меню File выберите пункт Publish Web...
и в поле ввода наберите адрес, на который требуется опубликовать сайт. Имя
Web-сервера обычно совпадает с именем компьютера, на котором сервер установлен.
В качестве имени каталога рекомендуется выбрать Trade - далее описание использует
именно это название каталога. Нажмите Publish - сайт будет опубликован на
сервере. После публикации можно проверить правильность произведенных действий,
набрав в браузере адрес
http://servername/trade
/help.htm - эта HTML-страница не требует обработки 1С:Предприятием.
После публикации
в каталоге сайта необходимо создать приложение, используя MMC (см. выше).
Создание приложения обязательно, так как в противном случае обработчики событий,
находящиеся в файле global.asa, вызываться не будут.
Web-расширение
Web-расширение
состоит из трех основных частей -Web-компоненты 1С:Предприятия, библиотеки
V7 Scripting Engine и примера «Портал реализатора». Все три компоненты можно
установить с CD-ROM, входящего в поставку. Web-расширение обязательно должно
быть установлено в каталог с исполняемыми файлами 1 С: Предприятия 7.7 (например,
C:\Program Files\lCv77). Библиотека V7 Scripting Engine может располагаться
в произвольном каталоге на компьютере Web-сервера, однако не рекомендуется
иметь более одной установленной библиотеки в связи с тем, что использоваться
будет библиотека, зарегистрированная последней. Для файлов примера местонахождение
произвольно.
Входящий в
Web-расширение V7 Scripting Engine (V7Script.dll) использует СОМ (Component
Object Model, ранее OLE) для связи с 1 С:Предприятием. Настройка этой связи
довольно сложна (по крайней мере для неподготовленного пользователя), поэтому
рекомендуется внимательно прочитать нижеприведенные описания, так как от этих
настроек зависит работоспособность всего механизма в целом. V7 Scripting Engine
в основном использует подсистему CUM, называемую DCOM (Distributed СОМ, распределенный
СОМ). DCOM используется в тех случаях, когда вызовы СОМ нужно передавать между
процессами (interprocess calls, across process boundaries). Это очень упрощенное
описание предназначения DCOM, однако оно помогает понять суть дела. Очевидно,
на вызовы между процессами накладываются ограничения, порождаемые системой
безопасности, так как потенциально такие вызовы можно использовать для деструктивных
действий (например, скопировав на сервер нехорошую программу,
можно удаленно запустить ее, так DCOM не ограничивает область вызовов одним
компьютером). В случае Web-приложения DCOM-вызовы возникают при обработке
ASP-страницы в момент передачи текста скрипта из V7 Scripting Engine в lC-.Предприятие
7.7. Для того чтобы разрешить такие вызовы, необходимо специально настроить
DCOM. Для настройки DCOM в состав операционной системы входит утилита настройки
dcomcnfg-exe, запустить ее можно как из командной строки, так и из меню Start/Run.
1С:Предприятие 7.7
Использование
Web-компоненты регулируется специальным правом «Использование Web-расширения».
Это право появляется в наборе доступных прав при установленной Web-компоненте
в
режиме конфигурирования.
Для запуска
1С:Предприятия 7.7 с использованием Web-расширения необходимо следующее:
· пользователю,
использующему Web-расширение, дать право на использование Web-расширения;
· запустить ЮПредприятие
с ключом /W или ^«имя файла». При использовании ключа /W V7 Scripting Engine
соединяется с ЮПредприятием, не используя дополнительные файлы, поэтому 1С:Предприятие
должно быть запущено на одном компьютере с Web-сервером. Если используется
ключ с указанием файла, то 1С:Предприятие может быть запущено на любом компьютере,
однако на имя файла накладываются следующие требования:
· путь к файлу
может быть полным или частичным. В последнем случае путь считается от
каталога, содержащего исполняемые файлы 1С:Предприятия;
·
каталог должен существовать и быть доступен из 1С:Предприятия.
Если файл
с указанным именем не существует, то он будет создан.
Настройка DCOM
Для запуска
Web-компоненты эта настройка должна быть проведена обязательно.
На первой
закладке окна dcomcnfg.exe представлен список всех OLE-серверов, зарегистрированных
на компьютере, и среди них указан сервер V77.GeneralPropPage.
Для настройки
дважды щелкните по нему мышкой и в появившемся диалоге выберите закладку Identity.
Выберите вариант The interactive user (обычно вместо The launching user).
Дважды нажмите OK для сохранения изменений и выхода из программы. Правильность
совершенных действий можно проконтролировать по содержимому Registry, запустив
утилиту regedit.exe. В Registry должны присутствовать следующие ключи:
· HKEY_CLASSES_ROOT\AppID\GUID
о RunAs
== Interactive User
· HKEY_CLASSES_ROOT\AppID\l
Cv7(l,s).exe
· Appid
=
GUID
где вместо
GUID присутствует реальный GUID (например, {OOOBDD71-D8CE-11DO-910A-004095E1DAEA}),
во обоих случаях одинаковый. Эту проверку следует выполнять обязательно, если
на компьютере запускаются несколько 1С:Предприятий с различными названиями
ЕХЕ-файлов (например, lcv7.exe и lcv7s.exe).
После указанной
настройки Web-расширение 1 С: Предприятия будет работать в контексте пользователя,
указанного при входе в операционную систему. Для работы Web-расширения необходимо,
что бы этот пользователь обладал правом Log on as a batch job. Для этого из
меню Start/Programs/Adminstrative Tools (Common) запустите User Manager (User
Manager for Domains на NT Server) и из меню Policies выберите пункт User Rights.
Включите флаг Show advanced user rights и из выпадающего списка выберите пункт
Log on as a batch job. Если нужного пользователя в списке Grant To нет, нажмите
кнопку Add и выберите этого пользователя. Дважды нажмите О К для сохранения
результатов выбора.
Если указание
The interactive user по каким-то причинам нежелательно, то вышеприведенные
действия можно проделать, указав в закладке Identity точное имя пользователя.
Указанный пользователь также должен обладать правом Log on as a batch job.
Активацию
Web-расширения можно проверить по содержанию диалога «О программе...». Если
в этом диалоге присутствует строка Web-расширение, то это означает,
что модуль Web-расширения загружен (т.е. ключ к нему найден). Если появляется
строка Web-расширение (!), то это означает, что модуль Web-расширения
загружен и активен (т.е. ключ к нему найден, и все системные настройки выполнены
правильно). Если же ни той, ни другой строки нет, то это означает, что Web-расширение
не загружено по одной из следующих причин:
· релиз 1 С: Пред
приятия ниже 7.70.011;
· v7web.dll отсутствует
в каталоге с исполняемыми файлами 1 (^Предприятия;
· ключ для Web-расширения
не найден.
Соединение с 1C
Предприятием
Для установки
соединения V7 Scripting Engine использует два метода: «прямой» метод и с использованием
промежуточного файла. Прямой метод позволяет подключаться только к одному
1 С:Предприятию, запущенному на компьютере с Web-сервером, при этом файл параметров
(см. далее) не используется. Метод, использующий промежуточные файлы, позволяет
распределять нагрузку по нескольким 1С:Предприятиям, запущенным на компьютере
с Web-сервером или на других компьютерах в локальной сети. Более того, используемые
1 (^Предприятия могут работать с различными информационными базами, что дает
возможность на одном Web-сервере запускать несколько различных Web-приложений
для выполнения различных задач.
Для работы
V7 Scripting Engine необходимо, чтобы 1 (^Предприятие было запущено заранее.
Если при запуске 1 (^Предприятия было указано соединение через файл, то указанный
файл создается автоматически.
Настройка DCOM
Эта настройка
должна быть проведена для установки соединения между библиотекой V7 Scripting
Engine и 1 (^Предприятием.
Для настройки
запустите dcomcnfg.exe и в списке OLE-серверов дважды щелкните по
вышеупомянутому серверу V77.GeneralPropPage. В появившемся диалоге выберите
закладку Security. Выберите переключатель Use custom access permissions и
нажмите Edit. В списке пользователей, обладающих правом доступа, могут присутствовать
следующие пользователи:
· IUSR_servername
(или пользователь, в контексте которого IIS исполняет запросы). Этот пользователь
должен присутствовать всегда. В случае, если различные Web-приложения используют
разных пользователей, то все эти пользователи должны присутствовать в списке;
· IWAM_servername
(или пользователь, в контексте которого IIS исполняет отдельное
(isolated) Web-приложение). Этот пользователь должен присутствовать,
если Web-приложение запускается как отдельный от сервера процесс;
· NETWORK. Этот
пользователь должен присутствовать, если 1С:Предприятие и Web-сервер расположены
на разных компьютерах, и доступ к 1 С: Предприятию идет по сети.
Если эти пользователи
отсутствуют в списке, то необходимо добавить их, нажав кнопку Add...
Аналогичные
действия нужно проделать, выбрав переключатель Use custom launch permission.
Права пользователей
рекомендуется редактировать именно для конкретного сервера V77.GeneralPropPage,
так эти действия влияют на общую безопасность системы.
Настройка
соединения с использованием промежуточного файла существенно сложнее и
использует специальный файл конфигурации.
Файл параметров
Для указания
запущенных 1С:Предприятий, которые V7 Scripting Engine может использовать
при передаче скрипта на выполнение, используется файл конфигурации V7Script.cfg.
Этот файл имеет обычный текстовый формат INI файла со следующими секциями:
[Common]
Version
1000
[ Connection
1]
Сотри1ег=наименование
компьютера
ЕПе=имя
файла
[Connection2]
[Application
1] Path=nyTb к приложению на сервере
0=номер
соединения по секции Connection 1=номер соединения по секции Connection
[Application2]
В секции Common
указывается единственный параметр Version, который для этой версии Web-расширения
должен содержать 1000.
Секции Connection
предназначены для определения 1 С:Предприятий, используемых V7 Scripting
Engine. Секции Connection нумеруются по возрастанию, начиная с 1. Параметр
Computer содержит наименование компьютера в сети, на котором запущено 1С:Предприятие.
Если этот параметр в секции Connection отсутствует, то предполагается компьютер,
на котором установлено V7 Scripting Engine. Параметр File содержит имя файла,
который используется для установки соединения.
Секции Application
предназначены для определения списка 1 С:Предприятий, используемых различными
Web-приложениями. Секции Application нумеруются по возрастанию, начиная с
1. В параметре Path необходимо указать путь от корня Web-сервера к корневому
виртуальному каталогу приложения, включая завершающий символ '/'. В
качестве разделителя каталога также используется символ '/'. Параметры 0,
1 и т.д. используются для указания списка номеров соединений. Номера соединений
соответствуют номерам, указанным в заголовках секций Connection.
V7 Scripting
Engine использует следующий набор правил при соединении с 1С:Предприятием:
· Если секции Connection
отсутствуют, то используется единственное прямое соединение;
· Если секции Connection
присутствуют, то используются только указанные соединения с 1 С: Предприятием;
· Если секции Application
отсутствуют, то предполагается, что все Web-приложения используют любое из
указанных соединений (или единственное прямое соединение);
· Если секции Application
присутствуют, то для обработки запросов в этих приложениях используются только
перечисленные в них соединения. В этом случае все содинения необходимо указывать
явно в секциях Connection;
·
все остальные запросы ASP-файлов, использующих V7Script, не обрабатываются
нигде.
Одно соединение
может быть указано в нескольких приложениях, однако рекомендуется для различных
Web-приложений задавать полностью различные либо полностью совпадающие списки
соединений. Если один экземпляр 1 (^Предприятия используется несколькими Web-приложениями,
то эти Web-приложения должны исполняться в процессе IIS.
Файл параметров
должен иметь имя V7Script.cfg и находится в одном каталоге с файлом V7Script.dll.
Пример файла
V7Script.cfg:
[Common]
Version=1000
[ Connection
1]
Compute r=comp
File=\\comp\connect\web
1 .pt
[Connection2]
File=
cd:\connect\web2.pt
[Application!]
Path=webl/
0-1
[Application2]
Path=web2/
0-2
Согласно этому
файлу Web-расширение будет передавать страницы из Web-приложения Webl в 1
С:Предприятие, запущенное с параметром /^локальное имя файла на компьютере
СОМР1, и страницы из Web-приложения Web2 в 1 С:Предприятие, запущенное на
том же компьютере, где установлен Web-сервер.
Файл соединения
Файл соединения
используется только как «точка соединения» при работе Web-сервера и 1 С: Пред
приятия на разных компьютерах, данные через этот файл не передаются. Файл
автоматически создается 1 С: Предприятием при указании имени файла в командной
строке, при этом имя файла произвольно. Для соединения через файл необходимо,
чтобы этот файл:
· был доступен
для пользователя IUSR_servername;
· располагался
на том же компьютере, что и запущенное 1С:Предприятие.
Нужно учесть,
что имя IUSR_servername является для Web-сервера локальным (напомним, что
этот пользователь был создан при установке IIS), и недоступно с другого компьютера.
Более того, пароль этого пользователя назначается при установке IIS и администратору
сервера неизвестен. Для решения этой проблемы необходимо на сервере запустить
административную утилиту из меню Start/Programs/Administrative Tools (Common)/User
Manager for Domains (User Manager на Windows NT Workstation). В ней откройте
свойства пользователя IUSR_servemame и введите новый пароль в строках Password
и Confirm Password. Нажмите ОК. На компьютере, на котором запускается 1С:Предприятие,
необходимо создать пользователя с такими же именем и паролем, и сделать каталог
с файлом соединения доступным в локальной сети для этого пользователя.
Настройка DCOM
Далее требуется
также настроить DCOM для файла соединения. Для этого запустите 1С:Предприятие
с ключом
/W'uwi файла соединения, и после этого
запустите утилиту dcomcnfg. Утилита автоматически добавит необходимые данные
в Registry, поэтому сразу после запуска dcomcnfg можно закрыть. Правильность
совершенных действий можно проконтролировать по содержимому Registry, запустив
утилиту regeditexe. В Registry должны присутствовать следующие ключи:
· HKEY_CLASSES_ROOT\AppID\GUID
о RunAs = Interactive User
· HKEY_CLASSES_ROOT\CLSID\{23A5D4C1-D34E-11D3-8C7B-008048DA120F}
· Appid = GUID
где вместо
GUID присутствует реальный GUID (например, {OOOBDD71-D8CE-11DO-910A-004095E1DAEA}),
во обоих случаях одинаковый. Этот GUID должен совпадать с использованным при
настройке запуска Web-компоненты 1 С: Предприятия.
И последнее
- настройка Web-приложения. Для настройки Web-приложения запустите ММС, вызовите
диалог свойств приложения и в закладке Directory Security нажмите кнопку Edit.
Затем нажмите Edit напротив Allow Anonymous Access и отключите флаг Enable
Automatic Password Synchronization. Наберите пароль для пользователя IUSR_servername,
введенный ранее в утилите User Manager, и трижды нажмите кнопку ОК-
Интеграция ASP и
1C:Предприятия 7.7
ASP-технология
«в чистом виде» не содержит никаких встроенных средств для выполнения скриптов,
внедренных в ASP-страницы. Для этого в IIS используется технология Active
Scripting, также разработанная Microsoft. Эта технология замечательна
своей расширяемостью, т.ак как она основана на открытых интерфейсах, что позволяет
разрабатывать для нее компоненты (так называемые script engines) для произвольных
скриптовых языков. Кроме JavaScript и VB Script, разработанных и поставляемых
Microsoft, сторонними фирмами разработаны компоненты для скриптовых языков
Peri, Python и Haskell. Такое использование модульной технологии работы с
скриптами фактически порождает независимость ASP-технологии от используемого
скриптового языка. Этот факт и используется при создании ASP-приложений, использующих
встроенный язык 1 С:Предприятия.
Возможности Web-расширения
Для интеграции
1 С: Пред приятия и ASP используется библиотека V7 Scripting Engine, построенная
в соответствии со спецификацией Active Scripting. Следование спецификации
позволяет ей встраиваться в различные системы, требующие обработки скриптов,
и, в частности, в технологию ASP. Реально эта библиотека является лишь стыковкой
между IIS и 1 (^Предприятием 7.7, передавая скрипты для исполнения в 1 С:
Пред приятие и возвращая результат.
При этом ЮПредприятие
7.7 может быть физически запущено как на том же компьютере, что и Web-сервер,
так и использовать другой компьютер. В последнем случае связь между компьютерами
осуществляется по локальной сети. Следует принимать во внимание один очень
важный аспект реализации, ограничивающий производительность Web-приложений:
все запросы пользователей, даже приходящие на Web-сервер одновременно, 1С:Предприятие
7.7 обрабатывает последовательно. Для паралельного распределения нагрузки
может использоваться несколько запущенных 1С:Предприятий, как на компьютере
с Web-сервером, так и на других компьютерах.
Создание ASP-страниц
При обработке
страницы IIS передает в V7 Scripting Engine уже сформированный скрипт, причем
различные сегменты скрипта складываются в порядке появления их в странице.
Такой сформированный скрипт должен представлять собой модуль для исполнения
в 1С:Предприятии. Кроме текста скрипта IIS передает контекст страницы в виде
набора доступных объектов, которые V7 Scripting Engine также передает в 1С:Предприятие.
Эти объекты доступны в 1 С: Пред приятии через встроенный объект «ASP», кроме
объектов Request, Response, Application, Session, Server - эти объекты доступны
из скрипта напрямую. Через объект ASP можно также вызывать процедуры и функции,
реализованные на других скриптовых языках. Следует учитывать, что каждое обращение
через объекты ASP-страницы требует обмена данными с IIS, поэтому рекомендуется
минимизировать количество таких вызовов и объем передаваемых через них данных.
Технология
ASP не накладывает никаких дополнительных ограничений на использование конструкций
и встроенных средств языка и работу с объектами 1С:Предприятия, однако, создавая
ASP-страницы, необходимо следовать нескольким правилам, позволяющим сформировать
модуль без ошибок в структуре.
Все локальные
переменные необходимо объявлять в самом начале страницы до тега html
(после директив, если они присутствуют на странице). Далее следует расположить
функции и процедуры, и лишь затем - исполняемый код скрипта, возможно, среди
HTML-текста страницы. Такое расположение позволит получить правильный
с точки зрения структуры модуль.
В начале ASP-файла
рекомендуется писать директиву ASP, определяющую встроенный язык %@ Language=V7Script
% и непосредственно за этой директивой - скрипт, описывающий используемые
на этой странице переменные % Перем п1, п2; %.
Контекст ASP-страницы
доступен в модуле страницы через объект «ASP». Через его свойства и методы
доступны, в частности, все глобальные объекты и функции, реализованные на
других языках (например, JavaScript). Это не относится к встроенным объектам
IIS (Response, Request и т.д.) - они доступны напрямую через указание имени
объекта.
Передать фрагмент
HTML при формировании страницы можно двумя способами: Response.Write(CmjKoKa.HTMZ,)
или %=
CmpoKaHTML% (между символами % и = не должно быть
пробелов). Оба способа эквивалентны, однако второй вариант обычно используется
при динамической генерации HTML-строки в окружении статического HTML-кода:
%= HTML
строка%
а первый -
при генерации HTML в коде скрипта:
%Если
а=1 Тогда Response.WritefHTML); КонецЕсли;%
Ниже приведен
пример правильной ASP-страницы:
%@ Language=V7Script%
%
Перем стрСообщение;
Процедура
ВывестиСообщение() Сообщить(стрСообщение) ;
КонецПроцедуры
%
html
head
titleTecTOBBR
страница/ЫЫе /head body %
стрСообщение
= Web-расширение
Response.Write(CTpCoo6meHMe)
;
ВывестиСообщение();
% /body
Сессия и модуль сессии
Модуль сессии
предназначен для сохранения контекста работы конкретного пользователя на время
сессии и является для сессии в некоторой степени аналогом глобального модуля.
Как и в глобальном модуле, в модуле сессии не доступен контекст исполняемого
в данный момент модуля страницы. Для работы с объектами страницы следует передавать
необходимые объекты через параметры вызываемой процедуры или функции. Текст
модуля сессии берется из модуля обработки, указываемой в функции \УеЬНачатьСессию.
Эта обработка создается и включается в конфигурацию на этапе конфигурирования
1С:Предприятия.
Для начала
и завершения сессии используются встроенные процедуры 1 С:Предприятия
WebНачатьСессию и WebЗавершитьСессию.
WebНачатьСессию2>
Начинает новую
сессию в 1С:Предприятии.
Синтаксис:
WebНачатьСессию
(Идентификатор сессии обработки)
Англоязычный синоним:
StartWebSession
Параметры:
Идентификатор
Наименование обработки
сессии
Наименование
обработки, модуль которой используется в качестве модуля сессии.
Описание:
Процедура
WebНачатьСессию начинает новую пользовательскую сессию в 1С: Предприятии с
идентификатором Session.SessionID и модулем сессии обработки с указанным наименованием.
Эту процедуру следует вызывать при вызове предопределенной процедуры Session_OnStart.
Пример:
Процедура Session_OnStart()
WebНачатьСессию(Session.SessionID,
«Сессия») ;
КонецПроцедуры
WebЗавершитьСессию2>
Завершает
сессию в 1С:Предприятии.
Синтаксис:
WebЗавершитьСесию(
Идентификатор
сессии)
Англоязычный синоним:
EndWebSession
Параметры:
Идентификатор
Идентификатор сессии. Всегда передается Session.SessionID
Описание;
Процедура
WebЗавершитьСессию завершает пользовательскую сессию в 1 (^Предприятии с идентификатором
Session.SessionID. Эту процедуру следует вызывать при вызове предопределенной
процедуры Session_OnEnd.
Пример:
Процедура Session_OnEnd()
WebЗавершитьСессию(Session.SessionID,
«Сессия») ;
КонецПроцедуры
Использование табличных
документов 1C:Предприятия 7.7
Для создания
HTML-страниц удобно использовать сохранение в HTML-файл готовых таблиц. Для
этого можно использовать таблицы, созданные в той же обработке, модуль которой
используется как модуль сессии. Если же страница исполняется вне сессии, то
необходимо использовать глобальные таблицы.
Пример Web-приложения «Портал реализатора»
Портал реализатора является Web-приложением,
обеспечивающим доступ через Web к общей торговой системе предприятия. Возможности
доступа через портал ограничены функциями, необходимыми для реализаторов.
Используя портал, реализаторы могут связываться с торговым предприятием без
ограничений на место и время связи и работать с торговой системой, отчитываясь
за проданные товары и заказывая новые. Конфигурация для портала основана на
типовой конфигурации «Торговля+Склад» ред.8. Так как доступ реализаторов к
1С:Предприятию в ней изначально не предполагался, то конфигурация доработана
для использования с порталом.
Все документы,
создаваемый реализатором, записываются в торговую систему, но не проводятся
- их проведением управляет администратор портала или менеджер. До проведения
документы доступны для просмотра и модификации, после проведения - только
для просмотра.
Пользователь
может работать в портале в следующих режимах:
- информация.
- заказы.
- список
заказов.
- данные
о реализации.
- список
реализации
- инвентаризация.
- отчет о расчетах по реализации.
- отчет о реализации.
- прайс-лист.
Для каждого
режима в системе присутствует краткое описание назначения режима и возможные
действия в этом режиме. Для вызова справки на каждой странице расположена
ссылка «подробнее об этом режиме».
Завершение
работы с порталом осуществляется выбором пункта меню «Завершение работы».
Конфигурация
В качестве
конфигурации используется типовая конфигурация «Торговля+Склад» 7.70.808.
В конфигурацию добавлена обработка Сессия, содержащая модуль сессии, и табличный
документ Прайс, используемый при подготовке прайс-листа. Для работы с Web-сервером
добавлены два пользователя WebSessionI и WebSession2 с правом на Web-расширение.
Для редактирования
информации для реализаторов используется внешний отчет InfoSet.ert. Вся
информация организована следующим образом:
· на верхнем уровне
находятся категории сообщений. Названия категорий выводятся в заголовки «окон»
сообщений на информационной странице;
· каждая категория
содержит сообщения, выводимые в «окна» категорий.
· кажадя категория
может быть специально помечена. В этом случае «окно» категории выводится в
левом столбце информационной страницы. Непомеченные категории выводятся в
правом столбце страницы. Категории, не содержащие сообщений, на информационную
страницу не выводятся.
В остальном
конфигурация оставлена неизменной.
Контроль работы с порталом
Для защиты
от неавторизованного входа в систему в начале каждой страницы находится код:
Если ПроверкаРегистрации(Response)
= 0 Тогда Перейти -Выход;
КонецЕсли
;
Response.CacheControl
= no-cache;
Response.AddHeader(Pragma,
no-cache) ;
Функция модуля
сессии ПроверкаРегистрации проверяет авторизацию пользователя в портале.
Если пользователь не прошел через процедуру регистрации в системе, функция
перенаправляет запрос на вход портала Default.asp-После успешного входа в
портал все последующие действия записываются в журнал регистрации с указанием
имени пользователя, указанного при входе. Строки Response. CacheConrol
и Response. AddHeader запрещают кэширование страницы на компьютере пользователя
- это необходимо для правильной работы портала при перемещениях по кнопкам
браузера Back и Next.
Режимы работы портала Информация
Страница с
информацией появляется сразу после входа в систему и предназначена для получения
общей информации, касающейся реализатора: долги, лучшие товары, рекомендации
по ценам и рекламе и т.д. Вся информация, кроме данных по долгам, одинакова
для всех реализаторов и редактируется внешним отчетом InfbSet.ert.
Товары могут
быть как выбраны из каталога (для этого используется ссылка «Выбор товаров
из каталога»), так и добавлены к заказу по заранее известному коду. По каталогу
товаров можно передвигаться как произвольно - используя список групп, так
и последовательно -по приведенным ссылкам на группы товаров. Количество заказанного
товара можно изменять, при этом для автоматического изменения цены достаточно
перейти в другое поле ввода или элемент управления.
Если нужно
найти некоторые товары по подстроке из названия, то можно воспользоваться
поиском «Поиск товаров по строке». Строка поиска может содержать пробелы для
поиска товаров с наменованиями, содержащими в качестве подстрок все строки,
разделенные пробелами- Общая сумма документа автоматически изменяется при
изменении количества заказываемого товара. Щелкнув по ссылке «Заказанные товары»,
в любой момент можно просмотреть список товаров в текущем заказе. При необходимости
можно начать подбор товаров заново, полностью очистив текущий заказ (для этого
небходимо нажать кнопку «Очистить»). При входе на страницу параметры нового
заказа заполняются автоматически, но при необходимости можно создать новый
заказ, нажав кнопку «Новый». При нажатии кнопки «Записать» вся информация
о текущем заказе будет записана в соответствующий документ торговой системы.
Удаление текущего заказа выпоняется кнопкой Удалить. Для просмотра
предыдущих документов нужно ввести начало и конец нужного периода и щелкнуть
по ссылке Показать заказы за период.
Следует принимать
во внимание, что вся информация о текущем заказе до нажатия кнопки «Записать»
не занесена в информационную базу.
Список заказов
Эта страница
используется для выбора нужного заказа из списка имеющихся документов. Заказы
выводятся только за указанный период. Для выбора заказа щелкните по ссылке,
соответствующей нужному документу. Если заказ еще не проведен, то его можно
удалить, нажав кнопку «X».
Данные о реализации
Эта страница
предназначена для ввода реализатором документов о реализации имеющегося у
него товара и просмотра ранее введенных документов. В списке товаров выводятся
только товары, реально имеющиеся у реализатора на момент реализации или соответствующие
просматриваемому документу. Вы можете как ввести данные по новой реализации
(нажав «Новый»), так и просмотреть и изменить документы о предыдущих реализациях.
Для внесения данных о реализации введите дату реализации и количество реализованных
товаров и нажмите кнопку «Записать». Для просмотра предыдущих документов нужно
ввести начало и конец нужного периода и щелкнуть по ссылке «Показать список
реализации за период». Для удаления документа о реализации нажмите кнопку
«Удалить».
Следует принимать
во внимание, что вся информация о текущем реализации до нажатия кнопки «Записать»
не занесена в информационную базу.
Список реализации
Эта страница
используется для выбора нужной реализации из списка имеющихся документов.
Документы о реализации выводятся только за указанный период.
Инвентаризация
Эта страница
предназначена для проведения реализатором инвентаризации имеющегося у него
товара. В списке товаров выводятся только товары, реально имеющиеся у реализатора
на момент инвентаризации. Вы можете как вести данные для новой инвентаризации,
так и просмотреть и изменить предыдущие инвентаризации. Изменения в предыдущих
инвентаризациях возможны только в случае, если соответствующие документы еще
не проведены в торговой организации.
Для ввода
инвентаризации введите дату инвентаризации и остатки по товарам и нажмите
кнопку «Записать». Для просмотра предыдущих инвентаризаций введите начало
и конец нужного периода и нажмите ссылку «Показать список инвентаризаций».
Для изменения предыдущих инвентаризаций необходимо при просмотре списка инвентаризаций
выбрать нужный документ, внести в него изменения и нажать «Записать». Для
удаления документа об инвентаризации нажмите кнопку «Удалить».
Список инвентаризаций
Эта страница
используется для выбора нужной инвентаризации из списка имеющихся документов.
Документы об инвентаризации выводятся только за указанный период.
Для выбора
инвентаризации введите начало и конец нужного периода и затем нажмите ссылку,
соответствующую нужному документу.
Отчет о расчетах по реализации
Эта страница
предназначена для получения информации о расчетах между реализатором и торговым
предприятием. Для получения этой информации можно использовать три различных
варианта отчета:
· краткий. Показывает
изменение общей задолженности за указанный период.
· развернутый.
Кроме изменения задолженности приводит список документов, образующих задолженность.
· подробный. В
дополнение к развернутому отчету приводятся взаимопогашения документов.
Для получения
отчета введите начало и конец нужного периода и нажмите кнопку, соответствующую
выбранному типу отчета. Отчет можно вывести в отдельном окне браузера, установив
флаг показа Показать отчет в отдельном окне.
Отчеты о реализации
Эта страница
предназначена для получения информации о реализации товаров, полученных реализатором
от торгового предприятия. Для получения этой информации можно использовать
три различных варианта отчета:
· краткий. Показывает
изменение остатков товаров за указанный период.
· развернутый.
Кроме изменения остатков выводит список документов, изменявших остатки товаров.
· подробный. В
дополнение к развернутому отчету приводятся документы по изменениям остатков
товаров в течение указанного периода.
Для получения
отчета введите начало и конец нужного периода и нажмите кнопку, соответствующую
выбранному типу отчета. Отчет можно вывести в отдельном окне браузера, установив
флаг показа Показать отчет в отдельном окне.
Прайс-лист
Эту страницу
можно распечатать как готовый прайс-лист, так и использовать ее как предварительный
шаблон для подготовки к печати прайс-листа конкретного реализатора. Для использования
страницы как шаблона ее необходимо сохранить в файл и затем использовать полученный
файл в программе подготовки прайс-листа (например, Microsoft Word или Excel).
Страницы портала
Далее перечислены
страницы проекта, составляющие портал. Для передачи данных между браузером
и Web-сервероми используется стандартный метод передачи параметров GET. Это
позволяет обращаться к значениям параметров из языка, используя стандартную
функцию Request.QueryString.
Общие страницы
Common.js
Содержит функции на JavaScript, исполняемые клиентским приложением. Common.js
содержит единственную функцию ShowHelp, используемую при показе контекстной
справки по режиму.
Common.css2>
Содержит стили,
определяющие общий дизайн приложения и используемые при визуализации отчетов.
Global.asa2>
Файл, содержащий
реализацию предопределенных функций приложения Session_OnStart и Session_OnStop.
Main.asp (frameset)2>
Страница,
формирующая общий вид приложения. В левой области располагается основное меню
приложения, в правой -информация, соответствующая текущему режиму работы.
Menu.htm2>
Страница,
содержащая основное меню приложения.
Default.asp2>
Начальная
страница приложения. На этой странице расположена идентификация пользователя.
На эту страницу переадресовываются все запросы клиентского приложения, если
пользователь еще не авторизован в портале.
Exit.asp2>
Страница,
завершающая сессию пользователя с порталом.
Информация
Info.asp2>
Информационная
страница. Информация о задолженности реализатора формируется функцией Информация_Досье
из модуля сессии. Остальной текст страницы одинаков для всех реализаторов
и берется из файла Web_Info.val, формируемый внешним отчетом InfoSetert.
Заказ
Order.asp2>
Достаточно
сложная страница, предназначенная для просмотра предыдущих товарных заказов
и редактирования документов о заказах. Order.asp состоит из двух областей
(frames), верхняя область предназначена для управления и всегда содержит страницу
Ord_Head.asp, нижняя область при выполнении различных действий может содержать
одну из страниц Ord_Cat.asp, Ord_FG.asp, Ord_Item.asp, Ord_List.asp.
Страница обрабатывает
параметр Action со следующими значениями:
• New. Это
значение эквивалентно отсутствию параметра Action. По этому значению создается
новый документ
«Документ.
Расход наяРеализатора» с атрибутами
Заказ.Клиент = Реализатор;
Заказ.Валюта = Реализатор.ВалютаВзаиморасчетов;
Заказ.ТипЦен = Перечисление.
ТипыРасхЦен. Мелкооптовые ;
Заказ.ПризнакНакладной
= Перечисление.ПризнРасхНакл.Продажа
;
Заказ.Дата_Курса = Заказ.ДатаДок;
Заказ.Курс = Заказ.Валюта.Курс.Получить(Заказ.Дата_Курса)
;
Заказ.Склад = Константа.ОсноанойСклад;
• Edit. Это
значение предназначено для просмотра и редактирования уже существующего
документа. Дополнительно к параметру Action в запрос включается параметр Order
с значением, возвращенным функцией ЗначениеВСтрокуВнутр для нужного документа.
В нижнюю область формы заказа выводится страница Ord_Item.asp.
• Delete.
Это значение используется для удаления текущего заказа из системы. Удаление
реализовано функцией модуля сессии УдалитьДокумент, в которую передается заказ,
реализатор и переменная, в которую помещается сообщение об ошибке при удалении
документа (если такая произошла).
Ord_Cat.asp2>
Страница для
перехода по ветвям каталога товаров и выбора необходимого товара. Эта страница
выводится по умолчанию в нижней части формы заказа при переходе в режим заказа.
В дальнейшем она может быть вызвана по ссылке «Выбор товаров из каталога».
Страница использует функцию Заказ_Изменения из модуля сессии.
Ord_FG.asp2>
Страница для
вывода результатов поиска товаров. Эта страница обрабатывает параметр Action
со следующими значениями:
• ClearOrder.
Это значение удаляет все строки заказа. Страница использует функцию Заказ_Изменения
из модуля
Ord_Item.asp2>
Страница для
просмотра текущего заказа. Обрабатывает параметр Action со следующими значениями:
• Delline.
Это значение удаляет строки с номером, указанным в параметре LineNumber;
• ClearOrder.
Это значение удаляет всех строк заказа.
Страница использует
функцию Заказ_ Изменения из модуля сессии.
Ord_List.asp2>
Страница для
просмотра заказов за конкретный период. Обрабатывает параметр Action со следующими
значениями:
• DelOrder.
Это значение предназначено для удаления заказа с реквизитами, указанными в
параметре Order.
Параметры
BegDate и EndDate используются для указания соответственно начальной и конечной
даты периода. Страница использует функцию УдалитьДокумент из модуля сессии.
Данные о реализации
Sale. asp2>
Страница,
предназначенная для просмотра предыдущих реализации и редактирования документов
о реализованных товарах.
Страница обрабатывает
параметр Action со следующими значениями:
• Write.
Это значение используется для записи заполненного документа о реализации.
В параметре Date передается дата документа, в параметре Changes -изменения
в документе по сравнению с предыдущей записью.
• Delete.
Это значение используется для удаления документа о реализации.
• New. Это
значение предназначено для создания нового документа о реализации.
• Edit. Это
значение используется для отображения ранее записанного документа. Документ
записывается в значение параметра Sale функцией ЗначениеВСтрокуВнутр.
В графах Товар
и Количество выводится название реализуемого товара и оставшееся (по документам)
количество, в колонке Продано можно ввести количество реализованного товара.
Страница
использует функции ЗаписатьДокумент, УдалитьДокумент, ПолучитьПараметры_Номер
и ЗапросТоварНаРеализации из модуля сессии.
SalJList.asp2>
Список предыдущих
реализации за указанный период. Из списка можно выбрать и отредактировать
каждую конкретную реализацию. Страница обрабатывает параметр Action со следующими
значениями:
• DelSale.
Это значение предназначено для удаления документа, записанного в параметр
Sale функцией ЗначениеВСтрокуВнутр
Инвентаризация
Inventor, asp2>
Страница для
инвентаризации реализуемых товаров.
Страница обрабатывает
параметр Action со следующими значениями:
• Write.
Это значение используется для записи заполненного документа о реализации.
В параметре Date передается дата документа, в параметре Changes -изменения
в документе по сравнению с предыдущей записью.
• Delete.
Это значение используется для удаления документа о реализации.
• New. Это
значение предназначено для создания нового документа о реализации.
• Edit. Это
значение используется для отображения ранее записанного документа. Документ
записывается в значение параметра Sale функцией ЗначениеВСтрокуВнутр.
В графах Товар
и Количество выводится название реализуемого товара и оставшееся (по документам)
количество, в колонке Осталось можно ввести точное количество товара.
Страница использует
функции ЗаписатьДокумент, УдалитьДокумент, ПолучитьПараметры_Номер
и ЗапросТоварНаРеализации из модуля сессии.
Inv_List.asp2>
Список предыдущих
инвентаризаций за указанный период. Из списка можно выбрать и отредактировать
каждую конкретную инвентаризацию.
Страница обрабатывает
параметр Action со следующими значениями:
• Dellnventory.
Это значение предназначено для удаления документа, записанного в параметр
Inventory функцией ЗначениеВСтрокуВнутр.
Отчет о расчетах по реализации
CFA.asp2>
Страница для
получения отчетов о расчетах по реализации. CFA.asp состоит из двух областей
(frames). Верхняя область страницы содержит CFA_Set.asp, нижняя - CFA_Data.asp.
CFAJSet.asp2>
Страница для
ввода параметров отчета. Для создания отчета используется функция MakeReport
с параметром Mode - типом создаваемого отчета. Все параметры отчета передаются
в страницу CFA_Data.asp.
CFA_Data.asp2>
Страница для
отображения отчета о расчетах. Обрабатывает параметр Mode с значениями:
• 1. Краткий
отчет.
• 2. Развернутый
отчет.
• 3. Подробный отчет.
и параметры
BegDate и EndDate - соответственно начальная и конечная даты отчета.
Страница использует функции Взаиморасчеты_0тчет, Взаиморасчеты_Досье,
Взаиморасчеты_ТовКредит и Взаиморасчеты_Документ из модуля сессии.
Отчет о реализации
Report.asp2>
Страница для
формирования отчетов по реализациям. Report.asp состоит из двух областей (frames).
Верхняя область страницы содержит Rep_Set.asp, нижняя - Rep_Data.asp.
Rep_Set.asp2>
Страница для
ввода параметров отчета. Для создания отчета используется функция MakeReport
с параметром Mode – типом создаваемого отчета. Все параметры отчета передаются
в страницу Rep_Data.asp.
RepJData.asp2>
Страница для
отображения отчета по реализациям. Обрабатывает параметр Mode с значениями:
• 1. Краткий
отчет.
• 2. Развернутый
отчет.
• 3. Подробный
отчет.
и параметры
BegDate и EndDate - соответственно начальная и конечная даты отчета.
Price.asp2>
Страница для
вывода прайс-листа. Прайс-лист формируется в mxl-таблицу и сохраняется в отдельный
файл, после чего страница просто переадресует клиентский запрос на этот файл.
Модуль сессии
В качестве
модуля сессии используется модуль обработки Сессия. Ниже перечислены только
процедуры и функции, требующие некоторого комментария.
Функция
ПроверкаРегистрации
Параметры:
Response
Используется
для проверки регистрации пользователя в портале. Функцией используется тот
факт, что переменная модуля сессии Реализатор после успешной идентификации
содержит элемент справочника «Справочник-Контрагенты». В противном случае
пользователь еще не прошел регистрацию, и функция перенаправляет
запрос на страницу Default.asp и возвращает 0:
Если ПустоеЗначение(Реализатор) =,1 Тогда
Response.Redirect(Default.asp);
Возврат 0;
КонецЕсли ;
В случае
успешного завершения ПроверкаРегистрации возвращает 1.
Процедура
Заказ_Изменения
Параметры:
Request
Используется
для внесений изменений, сделанных пользователем, в торговую систему. В качестве
параметра в процедуру передается стандартный объект Request, необходимый
для получения параметров из переданного запроса. В запросе могут присутствовать
три различных параметра:
• I_Changes.
Содержит изменения в существующих строках документа. Изменения записаны в
одну строку через разделитель «!» парами (номер строки, количество).
• G_ Changes.
Содержит изменения в количестве заказываемых товаров, вне зависимости
от наличия этих товаров в документе. Изменения записаны в одну строку через
разделитель «!» парами (товар, количество). Товар в строке закодирован функцией
ЗначениеВСтрокуВнутр.
• C_Changes.
Содержит код товара, количество которого необходимо увеличить на 1.
Используемые приемы программирования Фреймы
Главное окно
Портала реализатора представляет собой так называемый frameset или страницу,
содержащую другие страницы (фреймы, frames). Фреймы являются независимыми
страницами, и поэтому могут независимо меняться, но имеют общую «родительскую»
страницу, к которой могут обращаться по ссылке window.parent. Главное окно
реализовано в странице Main.asp.
Вызовы функций с других страниц
В JavaScript
все объекты динамические, и новые свойства и методы добавляются к ним простым
присваиванием значения свойству или ссылки на функцию методу. Этим можно (и
нужно) пользоваться при обмене данными между различными страницами. Вызов
функции, определенной в другом окне, можно видеть на странице Order.asp. Строки
document.ShowOrder
= ShowOrder ;
document.ShowCatalog
= ShowCatalog;
document.FindGoods
= FindGoods;
определяют
новые функции у объекта document, просто присваивая им адреса соответствующих
функций (имена функций совпадают исключительно для удобства). Затем эти функции
можно вызвать из любого окна, имеющего ссылку на Order.asp - например, Ord_Head.asp,
который может обращаться к Order.asp, используя window.parent.
Передача параметров между страницами
Все параметры
между страницами передаются методом GET, то есть параметры и значения конвертируются
в строки, разделяются символом «=», полученные пары объединяются символом
«», и результирующая строка добавляется к адресу запрашиваемой страницы
(URL) после символа «?». Например:
Rep_Data.asp?Mode
==3BegDate
==01.10.QSEndDate-^S.
10.98 Такой подход удобен тем, что нужный адрес можно собрать программным
путем, а для получения значения параметра на сервере можно использовать стандартную
функцию QueryString.
Навигация по справочнику
Навигация
по справочнику реализована в странице Ord_Cat.asp. При переходе между группами
справочника эта страница запрашивается снова, при этом в качестве параметра
передается значение, возвращаемое ЗначениеВСтрокуВнутр для нужной группы.
Выбор из справочника
Выбор из справочника
используется при подготовке заказа. Для занесения товара в список выбранных
используется функция OnChangeAmount, сохраняющая все изменения в массивы на
компьютере пользователя. При запросе новой страницы все изменения передаются
на Web-сервер.
Выбор из списка документов
Выбор из списка
документов реализован, например, на странице Inventor.asp. В отличие от выбора
из справочника страница для выбора документа замещает предыдущую страницу,
поэтому результат выбора передается между страницами (а не между фреймами).
Как обычно, для этого используется добавление информации в адрес страницы.
Использование табличных документов для генерации HTML-страниц
Этот прием
использован при создании прайс-листа. В качестве табличного документа взят
документ «Прайс» обработки Сессия. После заполнения прайса данными табличный
документ сохраняется в файл HTML, а в скрипте вызывается перенаправление запроса
из страницы Price.asp на страницу Reports/Price.htm.
Управление созданием таблицы
Управление
созданием таблицы используется на страницах, выводящих отчеты - например,
CFA_Data.asp. Таблицу, содержащую все нужные типы строк, можно создать визуально,
а затем в готовый HTML-код вписать фрагменты скрипта для заполнения строк
данными и вывода их в результирующую страницу.
Приемы JavaScript
Загрузить
страницу не в текущий фрейм (frame) можно кодом window.parent.iramename.location.href=page.htm;
Для отмены стандартной реакции браузера на событие нужно возвратить false
из обработчика события, если используется Netscape Navigator, или установить
event.returnValue = false, если используется Microsoft Explorer.
Изменить ссылку
на ходу можно следующим приемом:
а href=
onclick
==onClick(this)Ccылкa/a script
language^javascript^
function onClick(obj)
obj .href=
Необходимая страница;
При использовании
скрипта в странице с тегом FRAMESET рекомендуется размещать скрипт
между тегами HEAD и /HEAD
Бухгалтерия: Автоматизация - Система 1С