Основная страницаWeb-расширение. Часть 3.


Пример Web-приложения «Портал реализатора»


Пример 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.css

Содержит стили, определяющие общий дизайн приложения и используемые при визуализации отчетов.

Global.asa

Файл, содержащий реализацию предопределенных функций приложения Session_OnStart и Session_OnStop.

Main.asp (frameset)

Страница, формирующая общий вид приложения. В левой области располагается основное меню приложения, в правой -информация, соответствующая текущему режиму работы.

Menu.htm

Страница, содержащая основное меню приложения.

Default.asp

Начальная страница приложения. На этой странице расположена идентификация пользователя. На эту страницу переадресовываются все запросы клиентского приложения, если пользователь еще не авторизован в портале.

Exit.asp

Страница, завершающая сессию пользователя с порталом.

Информация

Info.asp

Информационная страница. Информация о задолженности реализатора формируется функцией Информация_Досье из модуля сессии. Остальной текст страницы одинаков для всех реализаторов и берется из файла Web_Info.val, формируемый внешним отчетом InfoSetert.

Заказ

Order.asp

Достаточно сложная страница, предназначенная для просмотра предыдущих товарных заказов и редактирования документов о заказах. 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.asp

Страница для перехода по ветвям каталога товаров и выбора необходимого товара. Эта страница выводится по умолчанию в нижней части формы заказа при переходе в режим заказа. В дальнейшем она может быть вызвана по ссылке «Выбор товаров из каталога». Страница использует функцию Заказ_Изменения из модуля сессии.

Ord_FG.asp

Страница для вывода результатов поиска товаров. Эта страница обрабатывает параметр Action со следующими значениями:

•  ClearOrder. Это значение удаляет все строки заказа. Страница использует функцию Заказ_Изменения из модуля

Ord_Item.asp

Страница для просмотра текущего заказа. Обрабатывает параметр Action со следующими значениями:

• Delline. Это значение удаляет строки с номером, указанным в параметре LineNumber;

• ClearOrder. Это значение удаляет всех строк заказа.

Страница использует функцию Заказ_ Изменения из модуля сессии.

Ord_List.asp

Страница для просмотра заказов за конкретный период. Обрабатывает параметр Action со следующими значениями:

• DelOrder. Это значение предназначено для удаления заказа с реквизитами, указанными в параметре Order.

Параметры BegDate и EndDate используются для указания соответственно начальной и конечной даты периода. Страница использует функцию УдалитьДокумент из модуля сессии.

Данные о реализации

Sale. asp

Страница,   предназначенная  для   просмотра  предыдущих реализации и редактирования документов о реализованных товарах.

Страница обрабатывает параметр Action со следующими значениями:

• Write.   Это   значение   используется   для   записи заполненного документа о реализации. В параметре Date передается дата документа, в параметре Changes -изменения в документе по сравнению с предыдущей записью.

•  Delete. Это значение используется для удаления документа о реализации.

•  New. Это значение предназначено для создания нового документа о реализации.

• Edit. Это значение используется для отображения ранее записанного документа. Документ записывается в значение       параметра       Sale       функцией ЗначениеВСтрокуВнутр.

В графах Товар и Количество выводится название реализуемого товара и оставшееся (по документам) количество, в колонке Продано можно ввести количество реализованного товара.

Страница     использует     функции     ЗаписатьДокумент, УдалитьДокумент,         ПолучитьПараметры_Номер         и ЗапросТоварНаРеализации из модуля сессии.

SalJList.asp

Список предыдущих реализации за указанный период. Из списка можно выбрать и отредактировать каждую конкретную реализацию. Страница обрабатывает параметр Action со следующими значениями:

•  DelSale. Это значение предназначено для удаления документа, записанного в параметр Sale функцией ЗначениеВСтрокуВнутр

Инвентаризация

Inventor, asp

Страница для инвентаризации реализуемых товаров.

Страница обрабатывает параметр Action со следующими значениями:

• Write.   Это   значение   используется  для   записи заполненного документа о реализации. В параметре Date передается дата документа, в параметре Changes -изменения в документе по сравнению с предыдущей записью.

•  Delete.  Это значение используется для удаления документа о реализации.

• New. Это значение предназначено для создания нового документа о реализации.

•  Edit. Это значение используется для отображения ранее записанного документа.  Документ записывается в значение       параметра       Sale       функцией ЗначениеВСтрокуВнутр.

В графах Товар и Количество выводится название реализуемого товара и оставшееся (по документам) количество, в колонке Осталось можно ввести точное количество товара.

Страница использует функции ЗаписатьДокумент, УдалитьДокумент,         ПолучитьПараметры_Номер         и ЗапросТоварНаРеализации из модуля сессии.

Inv_List.asp

Список предыдущих инвентаризаций за указанный период. Из списка можно выбрать и отредактировать каждую конкретную инвентаризацию.

Страница обрабатывает параметр Action со следующими значениями:

•  Dellnventory. Это значение предназначено для удаления документа, записанного в параметр Inventory функцией ЗначениеВСтрокуВнутр.

Отчет о расчетах по реализации

CFA.asp

Страница для получения отчетов о расчетах по реализации. CFA.asp состоит из двух областей (frames). Верхняя область страницы содержит CFA_Set.asp, нижняя - CFA_Data.asp.

CFAJSet.asp

Страница для ввода параметров отчета. Для создания отчета используется функция MakeReport с параметром Mode - типом создаваемого отчета. Все параметры отчета передаются в страницу CFA_Data.asp.

CFA_Data.asp

Страница для отображения отчета о расчетах. Обрабатывает параметр Mode с значениями:

• 1. Краткий отчет.

• 2. Развернутый отчет.

• 3. Подробный отчет.

и параметры BegDate и EndDate - соответственно начальная и конечная   даты   отчета.   Страница   использует   функции Взаиморасчеты_0тчет,                    Взаиморасчеты_Досье, Взаиморасчеты_ТовКредит и Взаиморасчеты_Документ из модуля сессии.

Отчет о реализации

Report.asp

Страница для формирования отчетов по реализациям. Report.asp состоит из двух областей (frames). Верхняя область страницы содержит Rep_Set.asp, нижняя - Rep_Data.asp.

Rep_Set.asp

Страница для ввода параметров отчета. Для создания отчета используется функция MakeReport с параметром Mode – типом создаваемого отчета. Все параметры отчета передаются в страницу Rep_Data.asp.

RepJData.asp

Страница для отображения отчета по реализациям. Обрабатывает параметр Mode с значениями:

• 1. Краткий отчет.

• 2. Развернутый отчет.

• 3. Подробный отчет.

и параметры BegDate и EndDate - соответственно начальная и конечная даты отчета.

Price.asp

Страница для вывода прайс-листа. Прайс-лист формируется в 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==3&BegDate==01.10.QS&EndDate-^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>






Перейти  к оглавлению: