Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ID = Object.ID
- //Подключение к IntegraDB
- ExceptionsOff()
- LogToFile = true
- LaunchParamsCode = 'LSS_CON'
- //Get connections parameters
- Object.Params.Add('LaunchParamsCode';LaunchParamsCode)
- ListParams = GetComponentLaunchParams()
- Object.Params.Add('LaunchParamsCode';LaunchParamsCode)
- ListParams = GetComponentLaunchParams()
- If ListParams.IndexOfName("SQLServerName") <> -1
- SQLServerName = ListParams.ValueByName("SQLServerName")
- If VarIsNull(SQLServerName)
- Raise(CreateException('';'Не инициализированна переменная SQLServerName в спр. "Параметры запуска компонент" (имя SQL сервера с данными из 1С)';ecException))
- Endif
- Else
- Raise(CreateException('';'Отсутствует параметр SQLServerName в спр. "Параметры запуска компонент (имя SQL сервера с данными из 1С)';ecException))
- Endif
- If ListParams.IndexOfName("DBName") <> -1
- DBName = ListParams.ValueByName("DBName")
- If VarIsNull(DBName)
- Raise(CreateException('';'Не инициализированна переменная DBName в спр. "Параметры запуска компонент" (имя БД с данными из 1С)';ecException))
- Endif
- Else
- Raise(CreateException('';'Отсутствует параметр DBName в спр. "Параметры запуска компонент (имя БД с данными из 1С)';ecException))
- Endif
- If (ListParams.IndexOfName("UserName") <> -1) and (ListParams.IndexOfName("Password") <> -1)
- UserName = ListParams.ValueByName("UserName")
- Password = ListParams.ValueByName("Password")
- If VarIsNull(UserName) or VarIsNull(Password)
- Raise(CreateException('';'Не инициализированна переменные DBName или Password в спр. "Параметры запуска компонент" (имя пользователя и пароль для доступа к БД с данными из 1С)';ecException))
- Endif
- Else
- Raise(CreateException('';'Отсутствует параметр DBName или Password в спр. "Параметры запуска компонент (имя пользователя и пароль для доступа к БД с данными из 1С)';ecException))
- Endif
- //Creating connection
- IConnection = CreateConnection(;"ServerName="&SQLServerName&";DBName="&DBName&";UserName="&UserName&";Password="&Password&";IsOSAuth=False;IsVirtualPassword=False")
- SyncTime = SQL("select GetDate()")
- //Creating log file
- if LogToFile
- LogPath = ListParams.ValueByName("LogPath")
- if LogPath <<>> ""
- FullLogPath1C = LogPath&'Sync1C-DIRECTUM.log'
- If not FileExists(FullLogPath1C)
- ФайлСоздать(FullLogPath1C)
- EndIF
- ФайлЗаписать(FullLogPath1C; ; '--------Время синхронизации: '&SyncTime&CR)
- endif
- EndIF
- ExceptionsOn()
- //Получаю список договорных документов для синхронизации с 1С
- EdocList = CSQL("SELECT ta.AttachID FROM dbo.SBTaskAttach ta INNER JOIN SBEDoc dc ON ta.AttachID = dc.XRecID
- WHERE ta.TaskID = '"&ID&"'
- AND dc.TypeID = '3294' ")
- //Прохожу в цикле по всем эл. документам
- Foreach IDEdoc in EdocList
- 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
- FROM SBEDoc doc WHERE doc.XRecID = '"&IDEdoc&"'")
- IDDoc = SubString(EdocDetails;';';1) //ИД договорного документа
- OurF = SubString(EdocDetails;';';2) //ИД Нашей организации
- Orga = SubString(EdocDetails;';';3) //ИД Контрагента
- RegNo = SubString(EdocDetails;';';4) //Рег номер договора
- Date = SubString(EdocDetails;';';5) //Дата документа
- Subj = SubString(EdocDetails;';';6) //Предмет договора
- MainContr = SubString(EdocDetails;';';7) //Ведущий договор
- StartDate = SubString(EdocDetails;';';8) //Дата начала действия договора
- ExpDate = SubString(EdocDetails;';';9) //Дата окончания действия договора
- ContrType = SubString(EdocDetails;';';10) //Тип договора
- Sum = SubString(EdocDetails;';';11) //Сумма договора с учетом налогов
- TaxGroup = SubString(EdocDetails;';';12) //Налоговая группа
- Currency = SubString(EdocDetails;';';13) //Валюта
- TaxSum = SubString(EdocDetails;';';14) //Сумма налога
- ModSum = SubString(EdocDetails;';';15) //Сумма на которую меняется договор
- DateNow = Today()
- Action = '1'
- //Преобразуем тип договора из char в int
- IF ContrType == 'С'
- ContrType = 2
- ELSE
- IF ContrType == 'П'
- ContrType = 1
- ELSE
- IF ContrType == 'К'
- ContrType = 3
- EndIf
- EndIf
- EndIf
- //Преобразуем налоговую ставку -1 = Налог не указан (сумма без налога); 0 = 0% (для экспорта) ; 10 = 10%; 18 = 18%
- IF TaxGroup = 2
- TaxGroup = 18
- ELSE
- IF TaxGroup = 1
- TaxGroup = 10
- EndIF
- EndIF
- //Преобразуем ИД нашей организации в трехзначный код
- stOrgCode = TRIM(SQL("SELECT RTRIM(LTRIM(KOD)) FROM MBAnalit WHERE ANalit = '"&OurF&"' AND Vid = '"&ИдТипСПР('НОР')&"' "))
- //Преобразуем ИД Контрагента в код DIRECTUM
- Org = TRIM(SQL("SELECT RTRIM(LTRIM(KOD)) FROM MBAnalit WHERE ANalit = '"&Orga&"' AND Vid = '"&ИдТипСПР('ОРГ')&"' "))
- //Преобразуем ИД валюты в 643 если это руб
- Curr = TRIM(SQL("SELECT RTRIM(LTRIM(KOD)) FROM MBAnalit WHERE Analit = '"&Currency&"' AND Vid = '"&ИдТипСпр('Currency')&"' "))
- //Проверка, снихронизирован ли контрагент с привязкой к текущей нашей организации
- SyncCheck = SQL("SELECT an.Analit, an.NameAn
- FROM MBAnalit an LEFT JOIN MBAnValR4 val ON an.Analit = val.Analit
- WHERE an.Analit = '"&Orga&"' AND an.LSS_SyncStat = 'S' ") //AND val.LSS_OurFirmT4 = '"&OurFirm&"'
- //Проверка был ли уже синхронизирован договор
- ContractSyncChek = TRIM(SQL("Select RTRIM(LTRIM(LSS_SyncStat)) FROM SBEDoc WHERE XRecID = '"&IDEdoc&"'" ))
- //Если сумма налога = 0, тогда переменной присвоить 0. сумма договора = 0 тогда присвоить 0.
- IF TaxSum <<>> ''
- ELSE
- TaxSum = 0
- EndIF
- IF Sum <<>> ''
- ELSE
- Sum = 0
- EndIf
- IF ModSum <<>> ''
- ELSE
- ModSum = 0
- EndIf
- //Проверка что во вложении доп соглашение или договор
- ChekMainContrakt = TRIM(SQL("SELECT RTRIM(LTRIM(Dop4)) FROM SBEDoc WHERE XRecID = '"&IDEdoc&"'"))
- //Если проверка пройдена
- IF SyncCheck <<>> ''
- IF ContractSyncChek == '2' OR ContractSyncChek == ''
- //Вставляю записи в IntegraDB Contracts c Action = 1 так как статус синхронизации == Не синхронизирован или статус не проставлен
- //Проверяю если это доп соглашение то вставляю другие суммы
- If ChekMainContrakt <<>>'' //Значит документ в атаче доп соглашение
- Time = SQL("select GETDATE()";;;)
- InsertContract = SQL("INSERT INTO dbo.Contracts (ContractID , Action , stOrgCode , ContractorID , ContractNo , Date , SubjContract , IDMainContract , StartDate , ExpDate , ContrType , Sum , TaxGroup , Currency , TaxSum , ModTime )
- VALUES('"&IDDoc&"' , '1' , '"&stOrgCode&"' , '"&Org&"' , '"&RegNo&"' , '"&Date&"' , '"&Subj&"' , '"&MainContr&"' , '"&StartDate&"' , '"&ExpDate&"' , '"&ContrType&"' , '"&ModSum&"' , '"&TaxGroup&"' , '"&Curr&"' , '"&TaxSum&"' , '"&Time&"' )";;;;IConnection)
- Else
- Time = SQL("select GETDATE()";;;)
- InsertContract = SQL("INSERT INTO dbo.Contracts (ContractID , Action , stOrgCode , ContractorID , ContractNo , Date , SubjContract , IDMainContract , StartDate , ExpDate , ContrType , Sum , TaxGroup , Currency , TaxSum , ModTime )
- VALUES('"&IDDoc&"' , '1' , '"&stOrgCode&"' , '"&Org&"' , '"&RegNo&"' , '"&Date&"' , '"&Subj&"' , '"&MainContr&"' , '"&StartDate&"' , '"&ExpDate&"' , '"&ContrType&"' , '"&Sum&"' , '"&TaxGroup&"' , '"&Curr&"' , '"&TaxSum&"' , '"&Time&"' )";;;;IConnection)
- EndIf
- Else
- //Вставляю записи в IntegraDB Contracts c Action = 2 так как документ уже синхронизирован
- If ChekMainContrakt <<>>'' //Значит документ в атаче доп соглашение
- Time = SQL("select GETDATE()";;;)
- InsertContract = SQL("INSERT INTO dbo.Contracts (ContractID , Action , stOrgCode , ContractorID , ContractNo , Date , SubjContract , IDMainContract , StartDate , ExpDate , ContrType , Sum , TaxGroup , Currency , TaxSum , ModTime )
- VALUES('"&IDDoc&"' , '2' , '"&stOrgCode&"' , '"&Org&"' , '"&RegNo&"' , '"&Date&"' , '"&Subj&"' , '"&MainContr&"' , '"&StartDate&"' , '"&ExpDate&"' , '"&ContrType&"' , '"&ModSum&"' , '"&TaxGroup&"' , '"&Curr&"' , '"&TaxSum&"' , '"&Time&"' )";;;;IConnection)
- Else
- Time = SQL("select GETDATE()";;;)
- InsertContract = SQL("INSERT INTO dbo.Contracts (ContractID , Action , stOrgCode , ContractorID , ContractNo , Date , SubjContract , IDMainContract , StartDate , ExpDate , ContrType , Sum , TaxGroup , Currency , TaxSum , ModTime )
- VALUES('"&IDDoc&"' , '2' , '"&stOrgCode&"' , '"&Org&"' , '"&RegNo&"' , '"&Date&"' , '"&Subj&"' , '"&MainContr&"' , '"&StartDate&"' , '"&ExpDate&"' , '"&ContrType&"' , '"&Sum&"' , '"&TaxGroup&"' , '"&Curr&"' , '"&TaxSum&"' , '"&Time&"' )";;;;IConnection)
- EndIf
- EndIf
- //Вставляю записи в ContractDetails
- ContractDetailsLIST = CSQL("SELECT LSS_ConstrSites, LSS_WorkType, XRecID FROM SBEDocValR3 WHERE EDocID = '"&IDEdoc&"'";;';';)
- If ContractDetailsLIST <<>> ''
- Foreach details in ContractDetailsLIST
- ContrSitesID = SubString(details;';';1)
- ContrSites = SQL("SELECT EdIzm FROM MBAnalit WHERE Analit = '"&ContrSitesID&"' AND vid = '"&ИдТипСпр('ЛСС_ОС')&"'")
- WorkTypeID = SubString(details;';';2)
- WorkType = SQL("SELECT EdIzm FROM MBAnalit WHERE Analit = '"&WorkTypeID&"' AND vid = '"&ИдТипСпр('ЛСС_ВР')&"'")
- XRecID = SubString(details;';';3)
- Time = SQL("select GETDATE()";;;)
- DetailsInsert = SQL("INSERT INTO dbo.ContractsDetails (ContrSites, WorkType, XrecID, ContractID, stOrgCode, ModTime )
- VALUES ('"&ContrSites&"', '"&WorkType&"', '"&XRecID&"', '"&IDEdoc&"', '"&stOrgCode&"', '"&Time&"')";;;;IConnection)
- Endforeach
- EndIF
- //Проставить статус синхронизации на карточке документа.
- doc = Edocuments.getobjectbyid(IDEdoc)
- doc.ЛСС_СостСинхр = 'С'
- doc.save
- Else
- ShowMessage('По данному договорному документу не синхронизирован контрагент! синхронизировать?')
- EndIf
- EndForeach
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement