вроде всё, всем спасибо
RS = СоздатьОбъект("ODBCRecordset"); RS.УстБД1С(); ТекстЗапроса = " |IF EXISTS (SELECT * from sysobjects WHERE name = 'Convert36To10f') | drop function dbo.Convert36To10f |"; RS.ВыполнитьИнструкцию(ТекстЗапроса); RS = СоздатьОбъект("ODBCRecordset"); RS.УстБД1С(); ТекстЗапроса = " |CREATE FUNCTION dbo.Convert36To10f(@Val_36 varchar(9)) Returns int |Begin | DECLARE @j int, @len int, @Val_10 int | DECLARE @Arr36 char(36) | SET @Arr36 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' | SET @Val_10 = 0 | SET @j = 1 | SET @Val_36 = LTrim(RTrim(@Val_36)) | SET @len = Len(@Val_36) | while @j <= @len | begin | if @j <> 1 | SET @Val_10 = @Val_10 * 36 | SET @Val_10 = @Val_10 + CharIndex(Substring(@Val_36, @j ,1), @Arr36) - 1 | SET @j = @j+1 | end | Return @Val_10 |End |"; RS.ВыполнитьИнструкцию(ТекстЗапроса); RS = СоздатьОбъект("ODBCRecordset"); RS.УстБД1С(); ТекстЗапроса = " |IF EXISTS (SELECT * from sysobjects WHERE name = 'TimaDocToStr' ) | drop function dbo.TimaDocToStr |"; RS.ВыполнитьИнструкцию(ТекстЗапроса); RS = СоздатьОбъект("ODBCRecordset"); RS.УстБД1С(); ТекстЗапроса = " |CREATE FUNCTION dbo.TimaDocToStr (@DateTime char(23), @Delimiter char(1)) Returns varchar(8) |Begin | DECLARE @strTime char(6), @hours int, @minutes int, @sec int | SET @strTime = Substring(@DateTime, 9, 6) | SET @sec = dbo.Convert36To10f(@strTime) / 10000 | SET @hours = @sec / 3600 | SET @sec = @sec - (@hours * 3600) | SET @minutes = @sec / 60 | SET @sec = @sec - (@minutes * 60) | DECLARE @res varchar(8) | if @hours < 10 | SET @res = '0' + CAST(@hours as char(1)) | else | SET @res = CAST(@hours as char(2)) | if @minutes < 10 | SET @res = @res + @Delimiter + '0' + CAST(@minutes as char(1)) | else | SET @res = @res + @Delimiter + CAST(@minutes as char(2)) | if @sec < 10 | SET @res = @res + @Delimiter + '0' + CAST(@sec as char(1)) | else | SET @res = @res + @Delimiter + CAST(@sec as char(2)) | return @res |End |"; RS.ВыполнитьИнструкцию(ТекстЗапроса); RS = СоздатьОбъект("ODBCRecordset"); RS.УстБД1С(); ТекстЗапроса = " |SELECT | case | when Жур.IDDocDef='27226' then (SELECT sp28975 as DateTime from DH27226 where iddoc=ЖУР.iddoc) | when Жур.IDDocDef='27304' then (CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime)) | end as ДатаОплаты, | | Рег.IDDoc as [Док $Документ], | Жур.IDDocDef as Док_вид, | dbo.TimaDocToStr(Жур.Date_Time_iddoc,':') as ДокВремя, | LEFT(Жур.Date_Time_IDDoc,14) as ДокВремя1, | $Рег.Контрагент as [Контрагент $Справочник.Контрагенты], | $Рег.Сумма as Сумма |FROM | $Регистр.Взаиморасчеты101 as Рег |INNER JOIN | _1Sjourn as Жур ON Жур.IDDoc = Рег.IDDoc |WHERE | (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND Жур.IDDocDef = $ВидДокумента.ОказаниеУслуг) OR | (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND Жур.IDDocDef = $ВидДокумента.РасходнаяНакладная) |ORDER BY $Рег.Контрагент, ДатаОплаты, ДокВремя |"; RS.УстановитьТекстовыйПараметр("НачДата", ВыбНачПериода); RS.УстановитьТекстовыйПараметр("КонДата", ВыбКонПериода); RS.Отладка(1); ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);
|