Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.07.2008, 12:53
Новичок на форуме
Отправить личное сообщение для StartingCoder Посмотреть профиль Найти все сообщения от StartingCoder
 
Регистрация: 01.07.2008
Сообщений: 2

Получение расчетного листка через интранет
Задача стоит следующая. Сотрудник со своего компьютера заходит на страничку в интранете
и просматривает там свой расчетный листок с зарплатой.
Зарплата рассчитывается в 1С 8.1 Зарплата и Управление персоналом.

Решена задача следующим образом.
Сотрудник заходит на ссылку
http://srvname/1C_Web_Service/payslip.htm

В payslip.htm следующий код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<script language="JavaScript1.1" type="text/javascript">
<!--
wsh = new ActiveXObject( "WScript.Shell" );
Curlogin = wsh.ExpandEnvironmentStrings("%USERNAME%");
location.replace("http://srvname/1C_Web_Service/paysliprequest.asp?login="+Curlogin+"&password=&submit=Submit"); 
//-->
</script>
</head>
</html>


В htm определяется логин Windows пользователя, который передается в paysliprequest.asp.

В файле paysliprequest.asp следующий код:


<%@ Language=javascript %>
 <%
             {


            try
                {
            SoapClient = new ActiveXObject("MSSOAP.SoapClient")
            SoapClient.mssoapinit("http://srvname/ws/payslipinfo.wsdl")
            Response.Write(SoapClient.GetHtml(Request.QueryString("login")(1), Request.QueryString("password")(1)))
                }
             catch(err)

                {
                entConn = new ActiveXObject("v81.comconnector");
                conn = entConn.connect("Srvr=srvname;Ref=hrm;Usr=WebAccess");
                Response.Write(conn.GethtmlCom(Request.QueryString("login")(1),Request.QueryString("password")(1)));
                conn ="";
                entConn = "";
            
            }


            }
        %>



Сначала пытаемся получить расчетный листок через SOAP web-сервис, который предоставляет 1С. Если не получается,
то коннектимя к 1С через COM соединение. Внутри 1С на основании логина windows сотрудника находится его расчетный
листок и возвращается в html.

Решение имеет серьезный недостаток.
При переадресации на paysliprequest.asp пользователь видит строчку:
http://srvname/1C_Web_Service/paysli...ubmit =Submit

Соответственно можно просто в адресной строке подставить чужой логин и получить расчетный листок другого сотрудника.
Подскажите, каким образом лучше эту проблему решить.

Можно раздать пароли, но это означает лишнюю работу.
В идеале хотелось бы обойтись одним логином Windows, но так, чтобы со своего компьютера сотрудник мог получить только
свой расчетный листок.

ЗЫ

Payslip.htm и Paysliprequest.asp размещены на IIS 6.0
Сеть на домене Windows

Последний раз редактировалось Андрей Параничев, 02.07.2008 в 13:32. Причина: Обрамляйте код bb-кодами, пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 02.07.2008, 13:31
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

А получить в asp логин текущего подключенного пользователя и сравнить его с полученным через ActiveX в браузере нельзя? Просто я не сильно знаком с asp.
Ответить с цитированием
  #3 (permalink)  
Старый 02.07.2008, 17:19
Новичок на форуме
Отправить личное сообщение для StartingCoder Посмотреть профиль Найти все сообщения от StartingCoder
 
Регистрация: 01.07.2008
Сообщений: 2

Думаю, что можно.
Подскажите метод.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск