Имя: Пароль:
1C
 
Онлайн выгрузка информации на Web. Без использования Web -расширения?
0 DimaWert
 
28.07.09
14:07
на гаризонте моячит подобная задача, есть у кого идеи как это можно реализовать?
1 rs_trade
 
28.07.09
14:08
(0) Через фтп заливать хостинг провайдеру. А вообще надо знать насколько он-лайн то?
2 vde69
 
28.07.09
14:10
<%@ Language=javascript %>

<%

// соединение с базой (обьекты храняться в переменных сесии)
   a = 1;
         auth_type=-100;
       domainname = "";
       username= "";
   try
   {
       er="Ошибка получения сервером полного имени";
       fullname=new String(Request.ServerVariables("LOGON_USER"));
       er="Ошибка получения сервером имени хоста";
       host=Request.ServerVariables("REMOTE_HOST");
       er="Ошибка получения сервером IP адреса";
               ip_addr=Request.ServerVariables("REMOTE_ADDR");

       indx=fullname.indexOf("\\");
       username=fullname.substr(indx+1);
       domainname=fullname.substring(0,indx);
       if (Session("entConn") == null)
       {
               er="Ошибка создания объекта v81";
           Session("entConn") = new ActiveXObject("v81.comconnector");
           }
       entConn = Session("entConn");
       if (Session("conn") == null)
       {
               er="Ошибка первичного подключения";
           Session("conn") = entConn.connect("ssrvr=127.0.0.1;ref=b1;usr=auto;pwd=123456");
               er="Ошибка проверки доступа по IP адресу";
           Session("conn").ПроверитьIP(" " + Request.ServerVariables("REMOTE_ADDR"));

                         auth_type=1;
               er="Ошибка проверки/регистрации пользователя";
           auth_type=Session("conn").ЧтоДелатьКомПользователю(""+username,""+domainname);
                         Session("Conn") = null;
                       if (auth_type==0){
               er="Ошибка вторичного подключения";
               Session("conn") = entConn.connect("srvr=127.0.0.1;ref=b1");
           }
           else{
               Session("entConn") = null;
               Response.Write("<p align=\"center\"><font size=\"4\">["+auth_type+"] Wrong domain ["+domainname+"]["+username+"] </font></p>");
           }
           
       }
       conn = Session("conn");
   }        
   catch (exc)
   {
       a=0;
       Session("entConn") = null;
       Session("Conn") = null;
       entConn = null;
       conn = null;
           Response.Write("<p align=\"center\"><font size=\"4\">["+er+"]</font></p>");
           Response.Write("<p align=\"center\"><font size=\"4\">["+auth_type+"]["+domainname+"]["+username+"] </font></p>");
         Response.Write("<p align=\"center\"><font size=\"4\">Ошибка сервера при подключении к 1с</font></p>");
   }


   if (a == 1)
   {err="";
       try
       {

// обработка выбора задачи, процесса, статьи, вопроса к БЗ

           recTxt = Request.QueryString("idb");
           if (recTxt.Count != 0)
               conn.УстановитьТекущуюСтатью(recTxt(1));

           recTxt = Request.QueryString("idp");
           if (recTxt.Count != 0)
               conn.УстановитьТекущийПроцесс(recTxt(1));
   
           recTxt = Request.QueryString("idz");
           if (recTxt.Count != 0)
               conn.УстановитьТекущуюЗадачу(recTxt(1));

           recTxt = Request.QueryString("q");
           if (recTxt.Count != 0)
               conn.УстановитьТекущийВопрос(recTxt(1));

// обработка формы новой заявки, и новых действий для задачи

           fl="";
           recTxt = Request.Form("nt");
           if (recTxt.Count != 0)
               fl=recTxt(1);
           if (fl=="proc")
           {
               t="Без темы";
               recTxt = Request.Form("temа");
               if (recTxt.Count != 0)
                   t=recTxt(1);
               d="1";
               recTxt = Request.Form("dejstvie");
               if (recTxt.Count != 0)
                   d=recTxt(1);

               komment="Без комментариев";
               recTxt = Request.Form("komment");
               if (recTxt.Count != 0)
                   komment=recTxt(1);            
               err=conn.ВебСоздатьЗаявку(t,komment,d);
                               if (err!="")Response.Write(err);
           }
           
           if (fl=="exectask"){

               act="";
               recTxt = Request.Form("actionflag");
               if (recTxt.Count != 0)
                   act=recTxt(1);

               komment="";
               recTxt = Request.Form("komment");
               if (recTxt.Count != 0)
                   komment=recTxt(1);
               if (act=="YES"){
                   err=conn.ВебВыполнитьАктивнуюЗадачу(komment,0);
                                   if (err!="")Response.Write(err);
               }
               if (act=="NO"){
                   err=conn.ВебВыполнитьАктивнуюЗадачу(komment,1);
                                   if (err!="")Response.Write(err);
               }
           }

           

   //        num=0;
   //        recTxt = Request.Form("kol");
   //        if (recTxt.Count != 0)
   //            num=recTxt(1);
   //        if (num > 0)
   //        {
   //            fl="";
   //            recTxt = Request.Form("nt");
   //            if (recTxt.Count != 0)
   //                fl=recTxt(1);
   //            if (fl=="proc")
   //            {
   //                tc=conn.БизнесПроцессы.ВедениеЗаявки.СоздатьБизнесПроцесс();
   //                t="Без темы";
   //                recTxt = Request.Form("temа");
   //                if (recTxt.Count != 0)
   //                    t=recTxt(1);
   //                tc.Тема=t;
   //            }
//
//                if (fl=="zad")
//                {
//                    tc=conn.ПараметрыСеанса.ТекущаяЗадача.ПолучитьОбъект();
//                    t=-1;
//                    recTxt = Request.Form("tolls");
//                    if (recTxt.Count != 0)
//                        t=recTxt(1);
//                    tc.БудущиеДействия.Очистить();                    
//                }
//
//
//                for (i = 1; i < num; i++)
//                {
//                    n=-1;
//                    recTxt = Request.Form("v1_" + i);
//                    if (recTxt.Count != 0)
//                        n=recTxt(1);
//                    k='';
//                    recTxt = Request.Form("v2_" + i);
//                    if (recTxt.Count != 0)
//                        k=recTxt(1);
//
//                    if (fl=="proc")
//                        conn.ДобавитьСтрокуБП(tc, n, k);
//
//                    if (fl=="zad")
//                        conn.ДобавитьСтрокуЗадачи(tc, n, k);
//                }
//                if (fl=="proc")
//                    conn.ЗаписатьБП(tc);
//
//
//                if (fl=="zad")
//                    conn.ЗаписатьЗадачу(tc,t);
//            }
           
   

// обработка выбора страницы

           recTxt = Request.QueryString("p");
           if (recTxt.Count == 0)
               page = "default";
           else
               page = recTxt(1);

           Response.Write(conn.СобратьСтраницу(page));
       }        
       catch (exc)
       {
           Session("entConn") = null;
           Session("Conn") = null;
           entConn = null;
           conn = null;
             Response.Write("<p align=\"center\"><font size=\"4\">Ошибка сервера при выполнении процедур 1с</font></p>");
           Response.Write(err);
       }
   }


%>
3 vde69
 
28.07.09
14:11
(2) это ASP тонкий клиент
4 DimaWert
 
28.07.09
15:41
(1) планируется сделать онлайн интерфейс для поставщиков что бы они сами могли следить за своими товарами.

Знали чего заканчивается, и сами суетились,
+ сверки могли сделать.
5 jcage
 
28.07.09
15:51
У нас сделано так:
сайт пишет в sql базу, web служба читает из базы, трансформирует данные по правилам обмена - 1С получает трансформированные данные в формате XML с сервера и с помощью обработки "Универсальный обмен данными в формате XML" загружает. При выгрузе получается так же - 1С с помощью обработки выгружает - потом архивирует и как двоичные данные передает web-службе кусками. Служба разархивирует и загружает в таблицы SQL данные.
Т.е. общая архитектура
1С-(выгрузка в XML)->WEB-служба обмена->Таблицы сайта
Таблицы сайта->WEB-служба обмена-(выгрузка в XML)->1С

Причем для такого обмена я дописал конфигурацию "Конвертация данных" так, что бы можно было настраивать правила обмена между конфами 1С и SQL базами данных. Служба обмена соответственно опирается именно на правила, которые генерит эта конфигурация. Для выгрузки/загрузки из 1С используется практически типовая обработка "Универсальный обмен данными в формате XML". Служба написана на C#.

Механизм получился универсальный и можно настраивать правила обмена практически между любыми конфигурациями и базами. Если есть знания КД 2.0 - то разобраться в моем творении труда не составит.
6 Andry888
 
28.07.09
15:58
(5) "Если есть знания КД 2.0 - то разобраться в моем творении труда не составит."
А что, можешь подогнать? 8)
7 jcage
 
28.07.09
16:02
(6) можем договориться.
Общая схема продажи будет предполагать:
1. Продукт
2. Обучение установке и использованию
3. Консультации при необходимости за отдельные деньги.
8 Andry888
 
28.07.09
16:03
(7) "подоганть<>продать" возвращает истину =)
9 jcage
 
28.07.09
16:06
(8) "подогнать в (продать, отдать)" тоже возвращает истину =)
10 Delorn
 
28.07.09
16:09
(8) получать данные не сложно. в теории можно и на прямую. пишешь отчет, главное выводи в нем текстовые поля.  потом смотришь как он выглядит в профайлере. а дальше все зависит от стремления к безопасности и количества заказчиков.
11 DimaWert
 
28.07.09
16:14
(5) мне кажется, конкретно в моем случае ваш вариант не подходит.
12 jcage
 
28.07.09
16:15
(11) думаю, что твой сайт будет не сложнее чем вот этот kmponline.ru
13 Andry888
 
28.07.09
16:17
(11) на web-сервисах сделай...
14 jcage
 
28.07.09
16:17
(12) + таблицы у тебя могут быть любые например 2 таблицы заказ + строки заказа будут мигрировать в 1 документ заказ от покупателя в 1С.. Так что очень даже подходит.
15 DimaWert
 
28.07.09
16:21
(12) задачи разные.
(13) база на 8.0. залипла, там веб сервисов нету.
(14) я в (4) описал что будет на интерфейсе. Хотелось бы что бы веб - запрашивал данные из базы 1с, что бы актуальную картину видеть.
16 jcage
 
28.07.09
16:23
(15) интеграция в течении 5 минут обеспечит достаточно актуальную инфу. Можно сделать механизм подтверждения заказа оператором - тогда вообще коллизий не будет. Полный он-лайн можно только с вэб расширением добиться - но тогда попадаешь на стоимость лицензий.
17 Delorn
 
28.07.09
16:24
(15) уверен что знаешь что хочешь? Чем прямые запросы не нравятся?
Или услуги (5)
18 DimaWert
 
28.07.09
16:32
(16) стукнись мне в аську из профиля, обсудим.
19 DimaWert
 
28.07.09
17:07
jcage куда пропал?
20 jcage
 
28.07.09
17:12
(19) стукнул в аську.
21 DimaWert
 
28.07.09
17:14
не получал никаких запросов, попробуй еще раз
22 jcage
 
28.07.09
17:15
может быть спам бот режет. Вот мой ICQ 578442401