Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получение расчетного листка через интранет (https://javascript.ru/forum/misc/1365-poluchenie-raschetnogo-listka-cherez-intranet.html)

StartingCoder 02.07.2008 12:53

Получение расчетного листка через интранет
 
Задача стоит следующая. Сотрудник со своего компьютера заходит на страничку в интранете
и просматривает там свой расчетный листок с зарплатой.
Зарплата рассчитывается в 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:31

А получить в asp логин текущего подключенного пользователя и сравнить его с полученным через ActiveX в браузере нельзя? Просто я не сильно знаком с asp.

StartingCoder 02.07.2008 17:19

Думаю, что можно.
Подскажите метод.


Часовой пояс GMT +3, время: 05:48.