Advertisement
Guest User

Untitled

a guest
Jul 4th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ID = Object.ID
  2. //Подключение к IntegraDB
  3.       ExceptionsOff()
  4.     LogToFile = true
  5.   LaunchParamsCode = 'LSS_CON'
  6.  //Get connections parameters
  7.   Object.Params.Add('LaunchParamsCode';LaunchParamsCode)
  8.  ListParams = GetComponentLaunchParams()
  9.   Object.Params.Add('LaunchParamsCode';LaunchParamsCode)
  10.  ListParams = GetComponentLaunchParams()
  11.   If ListParams.IndexOfName("SQLServerName") <> -1
  12.     SQLServerName = ListParams.ValueByName("SQLServerName")
  13.     If VarIsNull(SQLServerName)
  14.       Raise(CreateException('';'Не инициализированна переменная SQLServerName в спр. "Параметры запуска компонент" (имя SQL сервера с данными из 1С)';ecException))
  15.    Endif                                              
  16.   Else
  17.       Raise(CreateException('';'Отсутствует параметр SQLServerName в спр. "Параметры запуска компонент (имя SQL сервера с данными из 1С)';ecException))
  18.  Endif
  19.   If ListParams.IndexOfName("DBName") <> -1
  20.     DBName = ListParams.ValueByName("DBName")
  21.     If VarIsNull(DBName)
  22.       Raise(CreateException('';'Не инициализированна переменная DBName в спр. "Параметры запуска компонент" (имя БД с данными из 1С)';ecException))
  23.    Endif
  24.   Else
  25.       Raise(CreateException('';'Отсутствует параметр DBName в спр. "Параметры запуска компонент (имя БД с данными из 1С)';ecException))
  26.  Endif  
  27.   If (ListParams.IndexOfName("UserName") <> -1) and (ListParams.IndexOfName("Password") <> -1)
  28.     UserName = ListParams.ValueByName("UserName")
  29.     Password = ListParams.ValueByName("Password")
  30.     If VarIsNull(UserName) or VarIsNull(Password)
  31.       Raise(CreateException('';'Не инициализированна переменные DBName или Password в спр. "Параметры запуска компонент" (имя пользователя и пароль для доступа к БД с данными из 1С)';ecException))
  32.    Endif
  33.   Else
  34.       Raise(CreateException('';'Отсутствует параметр DBName или Password в спр. "Параметры запуска компонент (имя пользователя и пароль для доступа к БД с данными из 1С)';ecException))
  35.  Endif
  36.   //Creating connection    
  37.   IConnection = CreateConnection(;"ServerName="&SQLServerName&";DBName="&DBName&";UserName="&UserName&";Password="&Password&";IsOSAuth=False;IsVirtualPassword=False")
  38.   SyncTime = SQL("select GetDate()")  
  39.   //Creating log file
  40.   if LogToFile
  41.       LogPath = ListParams.ValueByName("LogPath")
  42.       if LogPath <<>> ""
  43.           FullLogPath1C = LogPath&'Sync1C-DIRECTUM.log'
  44.          If not FileExists(FullLogPath1C)
  45.               ФайлСоздать(FullLogPath1C)
  46.           EndIF
  47.           ФайлЗаписать(FullLogPath1C; ; '--------Время синхронизации: '&SyncTime&CR)
  48.      endif
  49.   EndIF
  50.  
  51. ExceptionsOn()
  52.  
  53.  
  54. //Получаю список договорных документов для синхронизации с 1С
  55.  
  56. EdocList = CSQL("SELECT ta.AttachID FROM dbo.SBTaskAttach ta INNER JOIN SBEDoc dc ON ta.AttachID = dc.XRecID
  57.                 WHERE ta.TaskID = '"&ID&"'
  58.                 AND dc.TypeID = '3294' ")
  59.                
  60. //Прохожу в цикле по всем эл. документам
  61. Foreach IDEdoc in EdocList
  62.                          
  63.         EdocDetails = SQL("SELECT doc.XRecID, doc.LSS_OurFirm, doc.Org, doc.Dop, doc.Date4, doc.Dop2, doc.Dop4, doc.LSS_Date1, doc.LSS_Date2, doc.LSS_ContrType, doc.Sum, LSS_TaxGroup, doc.Currency, doc.Sum2, doc.LSS_Sum  
  64.                         FROM SBEDoc doc WHERE doc.XRecID = '"&IDEdoc&"'")
  65.        
  66.         IDDoc       = SubString(EdocDetails;';';1)     //ИД договорного документа
  67.        OurF        = SubString(EdocDetails;';';2)     //ИД Нашей организации
  68.        Orga        = SubString(EdocDetails;';';3)     //ИД Контрагента
  69.        RegNo       = SubString(EdocDetails;';';4)     //Рег номер договора
  70.        Date        = SubString(EdocDetails;';';5)     //Дата документа
  71.        Subj        = SubString(EdocDetails;';';6)     //Предмет договора
  72.        MainContr   = SubString(EdocDetails;';';7)     //Ведущий договор
  73.        StartDate   = SubString(EdocDetails;';';8)     //Дата начала действия договора
  74.        ExpDate     = SubString(EdocDetails;';';9)     //Дата окончания действия договора
  75.        ContrType   = SubString(EdocDetails;';';10)    //Тип договора
  76.        Sum         = SubString(EdocDetails;';';11)    //Сумма договора с учетом налогов
  77.        TaxGroup    = SubString(EdocDetails;';';12)    //Налоговая группа
  78.        Currency    = SubString(EdocDetails;';';13)    //Валюта
  79.        TaxSum      = SubString(EdocDetails;';';14)    //Сумма налога
  80.        
  81.         ModSum      = SubString(EdocDetails;';';15)    //Сумма на которую меняется договор
  82.        DateNow     = Today()
  83.         Action      = '1'
  84.        
  85.  
  86. //Преобразуем тип договора из char в int
  87.  
  88.         IF ContrType == 'С'
  89.           ContrType =    2
  90.         ELSE
  91.               IF ContrType == 'П'
  92.                ContrType =   1
  93.               ELSE
  94.                     IF ContrType == 'К'
  95.                        ContrType =   3
  96.                     EndIf
  97.               EndIf
  98.         EndIf
  99.        
  100.        
  101. //Преобразуем налоговую ставку -1 = Налог не указан (сумма без налога); 0 = 0% (для экспорта) ; 10 = 10%; 18 = 18%
  102.  
  103.               IF TaxGroup = 2
  104.                  TaxGroup = 18
  105.               ELSE
  106.                     IF TaxGroup = 1
  107.                         TaxGroup = 10
  108.                     EndIF
  109.               EndIF
  110.                
  111.        
  112. //Преобразуем ИД нашей организации в трехзначный код
  113.         stOrgCode = TRIM(SQL("SELECT RTRIM(LTRIM(KOD)) FROM MBAnalit WHERE ANalit = '"&OurF&"' AND Vid = '"&ИдТипСПР('НОР')&"' "))
  114.        
  115. //Преобразуем ИД Контрагента в код DIRECTUM
  116.         Org     =   TRIM(SQL("SELECT RTRIM(LTRIM(KOD)) FROM MBAnalit WHERE ANalit = '"&Orga&"' AND Vid = '"&ИдТипСПР('ОРГ')&"' "))
  117. //Преобразуем ИД валюты  в 643 если это руб
  118.  
  119.         Curr    =    TRIM(SQL("SELECT RTRIM(LTRIM(KOD)) FROM MBAnalit WHERE Analit =  '"&Currency&"' AND Vid = '"&ИдТипСпр('Currency')&"' "))                                
  120.        
  121. //Проверка, снихронизирован ли контрагент с привязкой к текущей нашей организации                                      
  122.         SyncCheck = SQL("SELECT an.Analit, an.NameAn
  123.                         FROM MBAnalit an LEFT JOIN MBAnValR4 val ON an.Analit = val.Analit
  124.                         WHERE an.Analit = '"&Orga&"' AND an.LSS_SyncStat = 'S' ") //AND val.LSS_OurFirmT4 = '"&OurFirm&"'
  125. //Проверка был ли уже синхронизирован договор
  126.                      
  127.         ContractSyncChek = TRIM(SQL("Select RTRIM(LTRIM(LSS_SyncStat)) FROM SBEDoc WHERE XRecID = '"&IDEdoc&"'" ))
  128.        
  129.                                
  130.                          
  131. //Если сумма налога = 0, тогда переменной присвоить 0. сумма договора = 0 тогда присвоить 0.
  132.         IF TaxSum <<>> ''
  133.        ELSE  
  134.            TaxSum = 0
  135.         EndIF
  136.        
  137.         IF Sum <<>> ''
  138.        ELSE
  139.            Sum = 0
  140.         EndIf
  141.        
  142.         IF ModSum  <<>> ''
  143.        ELSE
  144.            ModSum = 0
  145.         EndIf
  146. //Проверка что во вложении доп соглашение или договор        
  147.         ChekMainContrakt = TRIM(SQL("SELECT RTRIM(LTRIM(Dop4)) FROM SBEDoc WHERE XRecID = '"&IDEdoc&"'"))                
  148. //Если проверка пройдена                                          
  149.       IF SyncCheck <<>> ''
  150.      
  151.           IF ContractSyncChek == '2' OR ContractSyncChek == ''
  152.                                        
  153. //Вставляю записи в IntegraDB Contracts c Action = 1 так как статус синхронизации == Не синхронизирован или статус не проставлен
  154.         //Проверяю если это доп соглашение то вставляю другие суммы
  155.                   If ChekMainContrakt <<>>''   //Значит документ в атаче доп соглашение
  156.                        Time = SQL("select GETDATE()";;;)
  157.                         InsertContract = SQL("INSERT INTO dbo.Contracts (ContractID   ,   Action         ,   stOrgCode          ,    ContractorID   ,   ContractNo    ,   Date         ,        SubjContract      ,   IDMainContract      ,   StartDate        ,   ExpDate         ,   ContrType          ,   Sum         ,   TaxGroup          ,      Currency    ,    TaxSum    ,   ModTime          )
  158.                                                                  VALUES('"&IDDoc&"'  ,   '1'   ,   '"&stOrgCode&"'  ,          '"&Org&"'      ,   '"&RegNo&"'   ,   '"&Date&"'   ,        '"&Subj&"'        ,   '"&MainContr&"'     ,   '"&StartDate&"'  ,   '"&ExpDate&"'   ,   '"&ContrType&"'    ,   '"&ModSum&"'   ,   '"&TaxGroup&"'    ,      '"&Curr&"'  ,    '"&TaxSum&"'  ,     '"&Time&"'   )";;;;IConnection)      
  159.                   Else
  160.                                          
  161.                         Time = SQL("select GETDATE()";;;)                                                                                                                  
  162.                         InsertContract = SQL("INSERT INTO dbo.Contracts (ContractID   ,   Action         ,   stOrgCode          ,    ContractorID   ,   ContractNo    ,   Date         ,        SubjContract      ,   IDMainContract      ,   StartDate        ,   ExpDate         ,   ContrType          ,   Sum         ,   TaxGroup          ,      Currency    ,    TaxSum    ,   ModTime          )
  163.                                                                  VALUES('"&IDDoc&"'  ,   '1'   ,   '"&stOrgCode&"'  ,          '"&Org&"'      ,   '"&RegNo&"'   ,   '"&Date&"'   ,        '"&Subj&"'        ,   '"&MainContr&"'     ,   '"&StartDate&"'  ,   '"&ExpDate&"'   ,   '"&ContrType&"'    ,   '"&Sum&"'   ,   '"&TaxGroup&"'    ,      '"&Curr&"'  ,    '"&TaxSum&"'  ,     '"&Time&"'   )";;;;IConnection)                                          
  164.                   EndIf
  165.                                          
  166.           Else
  167. //Вставляю записи в IntegraDB Contracts c Action = 2 так как документ уже синхронизирован
  168.  
  169.                   If ChekMainContrakt <<>>''  //Значит документ в атаче доп соглашение
  170.  
  171.                         Time = SQL("select GETDATE()";;;)
  172.                         InsertContract = SQL("INSERT INTO dbo.Contracts (ContractID   ,   Action         ,   stOrgCode          ,    ContractorID   ,   ContractNo    ,   Date         ,        SubjContract      ,   IDMainContract      ,   StartDate        ,   ExpDate         ,   ContrType          ,   Sum         ,   TaxGroup          ,      Currency    ,    TaxSum    ,   ModTime          )
  173.                                                                  VALUES('"&IDDoc&"'  ,   '2'   ,   '"&stOrgCode&"'  ,          '"&Org&"'      ,   '"&RegNo&"'   ,   '"&Date&"'   ,        '"&Subj&"'        ,   '"&MainContr&"'     ,   '"&StartDate&"'  ,   '"&ExpDate&"'   ,   '"&ContrType&"'    ,   '"&ModSum&"'   ,   '"&TaxGroup&"'    ,      '"&Curr&"'  ,    '"&TaxSum&"'  ,     '"&Time&"'   )";;;;IConnection)
  174.  
  175.                   Else
  176.  
  177.                         Time = SQL("select GETDATE()";;;)            
  178.                         InsertContract = SQL("INSERT INTO dbo.Contracts (ContractID   ,   Action         ,   stOrgCode          ,    ContractorID   ,   ContractNo    ,   Date         ,        SubjContract      ,   IDMainContract      ,   StartDate        ,   ExpDate         ,   ContrType          ,   Sum         ,   TaxGroup          ,      Currency    ,    TaxSum   , ModTime        )
  179.                                                                  VALUES('"&IDDoc&"'  ,   '2'   ,   '"&stOrgCode&"'  ,              '"&Org&"'      ,   '"&RegNo&"'   ,   '"&Date&"'   ,        '"&Subj&"'        ,   '"&MainContr&"'     ,   '"&StartDate&"'  ,   '"&ExpDate&"'   ,   '"&ContrType&"'    ,   '"&Sum&"'   ,   '"&TaxGroup&"'    ,      '"&Curr&"'  ,    '"&TaxSum&"'   , '"&Time&"'  )";;;;IConnection)
  180.                   EndIf                                          
  181.           EndIf
  182.                                                                                                  
  183. //Вставляю записи в ContractDetails
  184.             ContractDetailsLIST = CSQL("SELECT LSS_ConstrSites, LSS_WorkType, XRecID FROM SBEDocValR3 WHERE EDocID = '"&IDEdoc&"'";;';';)
  185.                  If  ContractDetailsLIST <<>> ''
  186.                        Foreach details in ContractDetailsLIST
  187.      
  188.      
  189.                         ContrSitesID = SubString(details;';';1)
  190.                        ContrSites = SQL("SELECT EdIzm FROM MBAnalit WHERE Analit = '"&ContrSitesID&"' AND vid = '"&ИдТипСпр('ЛСС_ОС')&"'")
  191.                        
  192.                         WorkTypeID   = SubString(details;';';2)
  193.                        WorkType   = SQL("SELECT EdIzm FROM MBAnalit WHERE Analit = '"&WorkTypeID&"' AND vid = '"&ИдТипСпр('ЛСС_ВР')&"'")
  194.  
  195.                         XRecID     = SubString(details;';';3)
  196.                        
  197.                         Time = SQL("select GETDATE()";;;)                        
  198.                         DetailsInsert = SQL("INSERT INTO dbo.ContractsDetails (ContrSites, WorkType, XrecID, ContractID, stOrgCode, ModTime )
  199.                                                              VALUES ('"&ContrSites&"', '"&WorkType&"', '"&XRecID&"', '"&IDEdoc&"', '"&stOrgCode&"', '"&Time&"')";;;;IConnection)
  200.                            
  201.                         Endforeach
  202.                    
  203.                   EndIF
  204.                  
  205.         //Проставить статус синхронизации на карточке документа.
  206.        
  207.         doc = Edocuments.getobjectbyid(IDEdoc)
  208.         doc.ЛСС_СостСинхр = 'С'
  209.        doc.save
  210.        
  211.  
  212.            
  213.       Else
  214.             ShowMessage('По данному договорному документу не синхронизирован контрагент! синхронизировать?')
  215.      EndIf            
  216.      
  217. EndForeach
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement