#0
by Evgenchik
Есть файлик с текстом процедуры на sql. Там много комментариев, хотелось бы их прочесть, чтобы легче разобраться в процедуре. Но шрифт при сохранении получился примерно вот такой: шф ёюёЄю эш фы чряюыэхэш чэрўхэшх фы чряюыэхэш Подскажите, есть возможность расшифровать его на нормальный Win1251
#3
by Heckfy
Телепат подсказывает: ВордПад - файл - открыть: Тип файлов установить "Текстовые документы MS-DOS (*.txt)".
#5
by Evgenchik
как именно? с помощью какой-программы? фенкс, процентов 70 можно прочесть после раскодировки. Уже что-то word, AkelPad, досовский редактор - не помогают прочесть
#7
by Evgenchik
не вру. если б было так просто, не писал бы сюда. а можно взять из , там так раскодирует
#8
by smaharbA
ниче не брал, у мене чистая как слеза система, никогда никакую хрень не ставлю, даже без редактора это делается самой ОС... вылож файлик - и жди порицаний
#9
by Evgenchik
Возможно у тебя и получилось, но на моем загаженом всяким хламом компе не получилось. Не вижу смысла выкладывать, так как решение уже есть
#10
by smaharbA
это не решение - это костыль и позор, потом вот таковые кричат обратившись в типалинуксоидов - "венда маздай"
#15
by Salvador Limones
Хммм... Винда чистая, XP prof SP2, но не хочет открывать вордпадом. Только способ в
#16
by Heckfy
С использованием копипаста и ВордПада: * 19.01.01 доработка для таблиц -T, а также шифроданнvх. Tведена процедура */ /* расчета начала-конца суток */ /* 30.12.01 тимеіTT принудительно устанавливается в =LTT, а то триггер врет*/ /* 06.12.01 отклічен расчет TимеTіT, он перенесен в триггер и хп-процедуру*/ /* 05.09.01 введен учет разнvх пользователей */ /* 26.08.01 доработана для учета времени в запросе */ /* 23.08.01 исправлена ошибка при неотарботке запроса по текуим суткам, */ /* если @TimeStart > 0*/ /* 02.03.02 введен @Round */ /* 11.03.02 введена оценка запроса по пользователям */ /* 25.04.02 введен @Border. если */ /* 3.05.02 введен @Check, если установлен - то есть контроль по целостности */ /* 9.05.02 введенv TTL1,TTL2,TTL3 */ /* 12.05.02 введено использование процедурv +ескLіоде*/ /* 18.05.02 введена команда ілеар */ /* 24.05.02 введено поле Tкале */ /* 27.05.02 введено поле DataFull */ /* 15.06.02 введена очистка полей клеар и дата фулл при сбое заитv*/ /* 25.06.02 доработана обработка стартовой границv.*/ /* Tведенv +ифт+ег и +нд вместо бордер */ /* 05.08.02 роунд автоматом, если период записи TTL меньше 1 мин=0 и наоборот */ /* 12.08.02 вместо трункате вернуто делете */ /* 14.08.02 доработана для использования идіезульт */ /* 18.12.02 расширена диагностика отказов дешифрации*/ /* а также введен идіек с автоматической генерацией и параметром +утпут */ /* 28.12.02 Tведен TимеLормат */ /* 06.02.03 устранена ошибка декодирования несуествуіих даннvх при вvборке*/ /* нескольких TTL-каналов, расширено число каналов до 8-ми в одном запросе*/ /* 17.06.03 номер суток пишется в поле TTLвалуе*/ /* 02.09.03 TimeFormat стал смаллинт, -1 означает вход в формате RTC*/ /* 8.10.03 -обавились командv Tистіав и TистLддіав для +іL и др.*/ /* 15.12.03 -обавлена обработка пустvх мест. іо флагу Lилл-олес=1 производится */ /* заполнение дvр значениями TалуеLилл с состоянием idStFill, и флагом LлагLилл */ /* 12.02.04 введена вvдача пустой строки при отказе доступа */ /* 12.10.04 обработка поля NameTable*/ /* 11.11.04 изменен формат сообения об отладке*/ /* 30.12.04 обработка в курсоре на предмет бvстродействия*/ /* 01.04.05 доп.контроль вvборки из курсора на предмет гліков хп длл*/
#17
by smaharbA
двойная... create procedure ep_AskVTIdata /* LD & AG (c) revision 01/04/05*/ @Cmd varchar, /*cmd code 'List[Add|Raw|AddRaw|Srt|AddSrt]'Clear'ClearAll'*/ @idVTI int =0, /* Lд TTL + + - - + + */ --@idReq int =0, /*Lд _апроса * * - - * * */ @TimeStart varchar='now', /* char date-time начала вvборки '17/02/2001 05:00' */ @TimeEnd varchar='now+1',/* char date-time конца вvборки style-N103 */ @Round tinyint=2, /*round mode * * - - * * */ @Check tinyint=0, /*check mode * * - - * * */ @idVTI1 int=0, /* Lд TTL1 + + - - + + */ @idVTI2 int=0, /* Lд TTL2 + + - - + + */ @idVTI3 int=0, /* Lд TTL3 + + - - + + */ в ворде правится, в фаре тоже был немного не прав, но в ОС без приблуд - делается, но уже не в одну строку
#18
by Torquader
В общем так, если документ был в кодировке Windows, то в SQL-мониторе он выводится в DOS-е, если мы его копируем через буфер и вставляем в Notepad, то получаем дважды закодированный файл. При этом, к сожалению, часть символов утерялась безвозвратно, но что-то можно раскодировать. Удачи: /*********************************************************/ /* File written by SQL Server SysComments Decryptor v1.1 */ /* Copyright (C) 2001 dOMNAR */ /*********************************************************/ USE e6work go ----------------------------------------------------------- -- Type: Stored Procedure -- Name: ep_AskVTIdata ----------------------------------------------------------- create procedure ep_AskVTIdata /* LD & AG (c) revision 01/04/05*/ @Cmd varchar, /*cmd code 'List[Add|Raw|AddRaw|Srt|AddSrt]'Clear'ClearAll'*/ @idVTI int =0, /* Lд TTL + + - - + + */ --@idReq int =0, /*Lд ?апроса * * - - * * */ @TimeStart varchar='now', /* char date-time начала вvборки '17/02/2001 05:00' */ @TimeEnd varchar='now+1',/* char date-time конца вvборки style-N103 */ @Round tinyint=2, /*round mode * * - - * * */ @Check tinyint=0, /*check mode * * - - * * */ @idVTI1 int=0, /* Lд TTL1 + + - - + + */ @idVTI2 int=0, /* Lд TTL2 + + - - + + */ @idVTI3 int=0, /* Lд TTL3 + + - - + + */ @idVTI4 int=0, /* Lд TTL4 + + - - + + */ @idVTI5 int=0, /* Lд TTL5 + + - - + + */ @idVTI6 int=0, /* Lд TTL6 + + - - + + */ @idVTI7 int=0, /* Lд TTL7 + + - - + + */ @idVTI8 int=0, /* Lд TTL8 + + - - + + */ @ShiftBeg int=3, /*startshift *in sec * - - * * */ @ShiftEnd int=0, /*endshift *in sec * - - * * */ @TimeFormat smallint=103, /* input time format * * * * * */ @FillHoles char='N', /* flag for a*ppend u*nexis-ted d-ata * * */ @idStateFill int=317, /*ид состо ни дл заполнени */ @ValueFill int=0, /*значение дл заполнени */ @FlagFill char='F', /*флаг дл заполнени */ @idReq int =0 OUTPUT, /*Lд ?апроса * * * - * * */ @Done int =0 OUTPUT /*result of proc =101 - OK, else - error number*/ /* если интервалv вvборки не указанv, то считvва?тс даннvе за текуие сутки */ /* полность? , от 00:00 до 23:59:59*/ /* 'List' - вvходна таблица сначала очиаетс по заданному idReq, а потом в нее помеа?т результат вvборки */ /* 'ListAdd' - таблица не очиаетс , вvборка добавл етс к име?ейс c idReq */ /* 'Clear' - вvборки нет, очистка таблица по idReq */ /* 'ClearAll' - вvборки нет, полна очистка таблица независимо от idReq */ /* 'ListRaw' - как Tист, но даннvе не дешифриру?тс */ /* 'ListAddRaw' - как TистLдд, но даннvе не дешифриру?тс */ /* 'ListSr' - как Tист, даннvе по TTL1..TTL8 транспониру?тс в вvх.таблице по остчетам идTTL*/ /* 'ListAddSr' - как TистLдд, даннvе по TTL1..TTL8 транспониру?тс в вvх.таблице идTTL*/ /* 'ListSrF' - как Tист, даннvе по TTL1..TTL8 транспониру?тс в вvх.таблице полность?*/ /* 'ListAddSrF' - как TистLдд, даннvе по TTL1..TTL8 транспониру?тс в вvх.таблице полность?*/ /* дата ?TT интерпретируетс как секундное суточное смеение/3 */ /* если @Round=0, округлени нет, =1-к ближайшей минуте, 2-автоматом */ /* если пользователь с таким логином есть, и у него прав на TTL нет, то отлуп.*/ /**/ /* 19.01.01 доработка дл таблиц -T, а также шифроданнvх. Tведена процедура */ /* расчета начала-конца суток */ /* 30.12.01 тиме?TT принудительно устанавливаетс в =LTT, а то триггер врет*/ /* 06.12.01 откл?чен расчет TимеT?T, он перенесен в триггер и хп-процедуру*/ /* 05.09.01 введен учет разнvх пользователей */ /* 26.08.01 доработана дл учета времени в запросе */ /* 23.08.01 исправлена ошибка при неотарботке запроса по текуим суткам, */ /* если @TimeStart > 0*/ /* 02.03.02 введен @Round */ /* 11.03.02 введена оценка запроса по пользовател м */ /* 25.04.02 введен @Border. если */ /* 3.05.02 введен @Check, если установлен - то есть контроль по целостности */ /* 9.05.02 введенv TTL1,TTL2,TTL3 */ /* 12.05.02 введено использование процедурv +ескL?оде*/ /* 18.05.02 введена команда ?леар */ /* 24.05.02 введено поле Tкале */ /* 27.05.02 введено поле DataFull */ /* 15.06.02 введена очистка полей клеар и дата фулл при сбое заитv*/ /* 25.06.02 доработана обработка стартовой границv.*/ /* Tведенv +ифт+ег и +нд вместо бордер */ /* 05.08.02 роунд автоматом, если период записи TTL меньше 1 мин=0 и наоборот */ /* 12.08.02 вместо трункате вернуто делете */ /* 14.08.02 доработана дл использовани ид?езульт */ /* 18.12.02 расширена диагностика отказов дешифрации*/ /* а также введен ид?ек с автоматической генерацией и параметром +утпут */ /* 28.12.02 Tведен TимеLормат */ /* 06.02.03 устранена ошибка декодировани несуеству?их даннvх при вvборке*/ /* нескольких TTL-каналов, расширено число каналов до 8-ми в одном запросе*/ /* 17.06.03 номер суток пишетс в поле TTLвалуе*/ /* 02.09.03 TimeFormat стал смаллинт, -1 означает вход в формате RTC*/ /* 8.10.03 -обавились командv Tист?ав и TистLдд?ав дл +?L и др.*/ /* 15.12.03 -обавлена обработка пустvх мест. ?о флагу Lилл-олес=1 производитс */ /* заполнение дvр значени ми TалуеLилл с состо нием idStFill, и флагом LлагLилл */ /* 12.02.04 введена вvдача пустой строки при отказе доступа */ /* 12.10.04 обработка пол NameTable*/ /* 11.11.04 изменен формат сообени об отладке*/ /* 30.12.04 обработка в курсоре на предмет бvстродействи */ /* 01.04.05 доп.контроль вvборки из курсора на предмет гл?ков хп длл*/ WITH ENCRYPTION AS DECLARE @Count int, /*for diff purp*/ @CountAll int, @Name varchar, @NameVar varchar, @Command varchar, /* command text */ @Command1 varchar, /* command text */ @Debug tinyint, /* debug level*/ @PrnLev smallint, @IsData char, @idVTIu int, /* Lд TTL for work*/ @idVTIw int, /* Lд TTL for write*/ @idVTItxt varchar, /* Lд TTL txt*/ @idVTIsymTxt varchar, /* Lд TTL3 txt*/ @idReqTxt varchar, /* Lд запроса txt*/ @TableNAme varchar, /* data table name */ @TableDay int, /* data table number */ @idClassDataTb tinyint, @TimeBase int, /* time base */ @nameT char, @idTime int, /* time index */ @idTimew int, /* time index */ @idUnitTime int, /* time index */ -- temp variables @idState int, @Scale tinyint, @ValueInt int, @ValueFl float, @DataFull int, /*native type - tinyint*/ @ValueVTI binary, @IsInteger char, -- main chnl @idState0 int, @Scale0 tinyint, @ValueInt0 int, @ValueFl0 float, @DataFull0 int, /*native type - tinyint*/ @IsInteger0 char, -- add chnl1 @idState1 int, @Scale1 tinyint, @ValueInt1 int, @ValueFl1 float, @DataFull1 int, /*native type - tinyint*/ @IsInteger1 char, -- add chnl2 @idState2 int, @Scale2 tinyint, @ValueInt2 int, @ValueFl2 float, @DataFull2 int, /*native type - tinyint*/ @IsInteger2 char, -- add chnl3 @idState3 int, @Scale3 tinyint, @ValueInt3 int, @ValueFl3 float, @DataFull3 int, /*native type - tinyint*/ @IsInteger3 char, -- add chnl4 @idState4 int, @Scale4 tinyint, @ValueInt4 int, @ValueFl4 float, @DataFull4 int, /*native type - tinyint*/ @IsInteger4 char, -- add chnl5 @idState5 int, @Scale5 tinyint, @ValueInt5 int, @ValueFl5 float, @DataFull5 int, /*native type - tinyint*/ @IsInteger5 char, -- add chnl6 @idState6 int, @Scale6 tinyint, @ValueInt6 int, @ValueFl6 float, @DataFull6 int, /*native type - tinyint*/ @IsInteger6 char, -- add chnl7 @idState7 int, @Scale7 tinyint, @ValueInt7 int, @ValueFl7 float, @DataFull7 int, /*native type - tinyint*/ @IsInteger7 char, -- add chnl8 @idState8 int, @Scale8 tinyint, @ValueInt8 int, @ValueFl8 float, @DataFull8 int, /*native type - tinyint*/ @IsInteger8 char, ------------------------------- @isGood int, @IdTableSet int, /* id table set */ @UseTimeInBeg char, /* flag for time-partial ask */ @UseTimeInEnd char, /* flag for time-partial ask */ @RevertData char, /* flag for data expanding */ @RTCbeg int, @RTCend int, @StartDateTime datetime, /*datetime from data tb */ @EndDateTime datetime, /*datetime from data tb */ @TimeStartD datetime, /*datetime начала вvборки */ @TimeEndD datetime, /*datetime конца вvборки */ @TimeEndDB datetime, /*datetime начала суток конца вvборки */ @TimeStartDB datetime, /*datetime начала суток начала вvборки */ @CheckT varchar, @qt char, /*quote symbol*/ @UserMask int, @PolicyDat int, @PolicyUsr int, @AuditOK int, @AuditEr int, @RTCtime int, @RTCtimeOld int, /* time index */ @sqltime datetime SET NOCOUNT ON SET CURSOR_CLOSE_ON_COMMIT OFF -- иначе глушит встроеннvе курсорv SELECt @qt=char SELECT @idVTI=Coalesce(@idVTI,0) SELECT @idReq=Coalesce(@idReq,0) SELECT @Round=Coalesce(@Round,0) SELECT @Check=Coalesce(@Check,0) SELECT @ShiftBeg=Coalesce(@ShiftBeg,0) SELECT @ShiftEnd=Coalesce(@ShiftEnd,0) SELECT @CheckT=LTRIM(STR(@Check)) SELECT @idVTItxt =LTRIM(STR(@idVTI)) /*18.12.02*/ IF (@idReq=0) SELECT @idReq=@@SPID /* @@SPID in +/-32767 */ SELECT @idReqtxt=LTRIM(STR(@idReq)) SELECT @idClassDataTb=25 /*for dv????? tables*/ SELECT @RTCend=0 SELECT @RTCbeg=0 SELECT @Debug = COALESCE((SELECT IntVal from SysParmList WHERE NameDlphConst = 'cnsprmDebugMsgLevel'),1) IF @Debug >3 SELECT @PrnLev=1 ELSE SELECT @PrnLev=0 IF (@Debug >1) BEGIN DELETE FROM PrintMsgList /*clear all messages from msg-table*/ SELECT @name='ep_AskVTIdata recieve Cmd<'+@Cmd+ '> VTI0<'+@idVTItxt+'> idRq<'+@idReqtxt+ '> TmS<'+@TimeStart+'> TmE<'+@TimeEnd+ '> Rnd<'+LTRIM(STR(@Round))+'> Chk<'+@CheckT+ '> VTI1<'+LTRIM(STR(@idVTI1))+'> VTI2<'+LTRIM(STR(@idVTI2))+'> VTI3<'+LTRIM(STR(@idVTI2))+ '> VTI4<'+LTRIM(STR(@idVTI4))+'> VTI5<'+LTRIM(STR(@idVTI5))+'> VTI6<'+LTRIM(STR(@idVTI5))+ '> VTI7<'+LTRIM(STR(@idVTI7))+'> VTI8<'+LTRIM(STR(@idVTI8))+ '> Fill<'+@FillHoles+ '> idStF<'+LTRIM(STR(@idStateFill))+ '> ValF<'+LTRIM(STR(@ValueFill))+ '> FlagF<'+ @FlagFill+'>' EXEC ep_PrintMsgRetFs @PrnLev,43,@name END IF not(@Cmd IN ('List','ListAdd', 'ListSr','ListAddSr', 'ListSrF','ListAddSrF', 'ListRaw','ListAddRaw', 'ClearAll','Clear')) BEGIN /* strange command, no execute */ SELECT @done =16 EXEC ep_PrintMsgRetFs @PrnLev,@done,'ep_AskVTIdata', @cmd return @done END IF (@Cmd='ClearAll') BEGIN DELETE FROM VTIdataList /* full clear output table*/ -- DELETE FROM VTIdataListTemp /* full clear temp output table*/ DELETE from TransferListW where NameVar LIKE 'AskVTIvar%' /*clear work table*/ SELECT @done=101 IF (@Debug >2) BEGIN SELECT @name='Table(s) VTIdataList(Temp) clear.' EXEC ep_PrintMsgRetFs @PrnLev,44,@name END RETURN @done END SELECT @NameVar = 'AskVTIvar'+@idReqTxt /*var name*/ IF (@Cmd in ('List','ListSr','ListSrF','ListRaw','Clear')) BEGIN /* partial clear table */ DELETE from VTIdataList WHERE idReq=@idReq /* partial clear output table*/ DELETE from TransferListW where NameVar = @NameVar IF (@Debug >2) BEGIN SELECT @name='Partial clear output table for Req='+@idReqtxt EXEC ep_PrintMsgRetFs @PrnLev,43,@name END IF (@Cmd='Clear') BEGIN /* exit now */ SELECT @done=101 RETURN @done END END IF (@Round>2)or(@Round<0) BEGIN /*bad defined param*/ SELECT @done = 54 /* error code return */ SELECT @name = '@Round='+LTRIM(STR(@Round)) EXEC ep_PrintMsgRetFs @PrnLev,@DONE,@name,'0,1,2' Return @Done /*exit now*/ END /*определим границv времени*/ exec @done=ep_WWdataTimeRange @TimeStart,@TimeEnd,@ShiftBeg,@ShiftEnd,@TimeFormat, @Debug,@PrnLev, @TimeStartD OUTPUT,@TimeStartDB OUTPUT, @TimeEndD OUTPUT,@TimeEndDB OUTPUT, @UseTimeInBeg OUTPUT,@UseTimeInEnd OUTPUT, @RTCbeg OUTPUT,@RTCend OUTPUT if (@@error<>0)or(@done<>101) GOTO Exec_error /*execution with error*/ /* проверка наличи и прав доступа основного канала */ SELECT @CountAll=0,@PolicyDat=-1,@PolicyUsr=-1,@AuditOK=-1,@AuditEr=-1 /*reset for first ask*/ IF (@Round=2)or(@FillHoles='Y') BEGIN exec @done=dbo.ep_CheckUCode @cmd='CheckVTIw',@idItem=@idVTI, @Debug=@Debug,@PrnLev=@PrnLev, @UserMask=@UserMask OUTPUT, @PolicyDat=@PolicyDat OUTPUT,@PolicyUsr=@PolicyUsr OUTPUT, @AuditOK=@AuditOK OUTPUT,@AuditEr=@AuditEr OUTPUT END ELSE BEGIN /*faster ask - no additional selects*/ exec @done=dbo.ep_CheckUCode @cmd='CheckVTI',@idItem=@idVTI, @Debug=@Debug,@PrnLev=@PrnLev, @UserMask=@UserMask OUTPUT, @PolicyDat=@PolicyDat OUTPUT,@PolicyUsr=@PolicyUsr OUTPUT, @AuditOK=@AuditOK OUTPUT,@AuditEr=@AuditEr OUTPUT END /*no rights*/ /*unkn user*/ if (@@error<>0)or((@done<>101)and(@done<>67)and(@done<>73)) GOTO Exec_error /*execution with error*/ if (@done=67)or(@done=73) BEGIN /*bad user rights for main chnl*/ INSERT into VTIdataList (idVTI,idReq,TimeRTC,TimeIdx,TimeSQL,idState,ValueFL, ValueInt,IsInteger,Scale,DataFull,VTIvalue,NameTable) VALUES (@idVTI,@idREQ,@RTCbeg,0,@TimeStartD,299,NULL,NULL, 'R',0,0,DATEPART (dayOfyear,@TimeStartD),'DV00000000') SELECT @name = 'VTI id='+@idVTItxt SELECT @command='SessUsr='+SESSION_USER IF (@done=67) EXEC ep_PrintMsgRetFs @PrnLev,@Done,@command,@name ELSE EXEC ep_PrintMsgRetFs @PrnLev,@Done,@command Return @Done END IF (@Round=2) BEGIN /*auto mode select*/ SELECT @Count = IntVal from TransferListW WHERE NameVar='VTI_wrprty'+@idVTITxt IF (@Count IS NULL)or(@Count<5) SELECT @Round=0 ELSE SELECT @Round=1 DELETE from TransferListW where NameVar='VTI_wrprty'+@idVTITxt END IF (@FillHoles='Y') BEGIN /*also ask vti idunittime*/ SELECT @idUnitTime = IntVal from TransferListW WHERE NameVar='VTI_idUtime'+@idVTITxt IF (@idUnitTime IS NULL) SELECT @idUnitTime=30 DELETE from TransferListW where NameVar='VTI_idUtime'+@idVTITxt END /*сформируем перечень допканалов в запросе*/ SELECT @idVTIsymTxt = '(i='+@idVTITxt IF (@idVTI1<>0) BEGIN exec @done=dbo.ep_CheckUCode @cmd='CheckVTI',@idItem=@idVTI1, @UserMask=@UserMask,@PolicyDat=@PolicyDat,@PolicyUsr=@PolicyUsr, @AuditOK=@AuditOK,@AuditEr=@AuditEr, @Debug=@Debug,@PrnLev=@PrnLev if (@done=101) SELECT @idVTIsymTxt = @idVTIsymTxt+' OR i='+LTRIM(STR(@idVTI1)) ELSE SELECT @idVTI1=0 END IF (@idVTI2<>0) BEGIN exec @done=dbo.ep_CheckUCode @cmd='CheckVTI',@idItem=@idVTI2, @UserMask=@UserMask,@PolicyDat=@PolicyDat,@PolicyUsr=@PolicyUsr, @AuditOK=@AuditOK,@AuditEr=@AuditEr if (@done=101) SELECT @idVTIsymTxt = @idVTIsymTxt+' OR i='+LTRIM(STR(@idVTI2)) ELSE SELECT @idVTI2=0 END IF (@idVTI3<>0) BEGIN exec @done=dbo.ep_CheckUCode @cmd='CheckVTI',@idItem=@idVTI3, @UserMask=@UserMask,@PolicyDat=@PolicyDat,@PolicyUsr=@PolicyUsr, @AuditOK=@AuditOK,@AuditEr=@AuditEr, @Debug=@Debug,@PrnLev=@PrnLev if (@done=101) SELECT @idVTIsymTxt = @idVTIsymTxt+' OR i='+LTRIM(STR(@idVTI3)) ELSE SELECT @idVTI3=0 END IF (@idVTI4<>0) BEGIN exec @done=dbo.ep_CheckUCode @cmd='CheckVTI',@idItem=@idVTI4, @UserMask=@UserMask,@PolicyDat=@PolicyDat,@PolicyUsr=@PolicyUsr, @AuditOK=@AuditOK,@AuditEr=@AuditEr, @Debug=@Debug,@PrnLev=@PrnLev if (@done=101) SELECT @idVTIsymTxt = @idVTIsymTxt+' OR i='+LTRIM(STR(@idVTI4)) ELSE SELECT @idVTI4=0 END IF (@idVTI5<>0) BEGIN exec @done=dbo.ep_CheckUCode @cmd='CheckVTI',@idItem=@idVTI5, @UserMask=@UserMask,@PolicyDat=@PolicyDat,@PolicyUsr=@PolicyUsr, @AuditOK=@AuditOK,@AuditEr=@AuditEr, @Debug=@Debug,@PrnLev=@PrnLev if (@done=101) SELECT @idVTIsymTxt = @idVTIsymTxt+' OR i='+LTRIM(STR(@idVTI5)) ELSE SELECT @idVTI5=0 END IF (@idVTI6<>0) BEGIN exec @done=dbo.ep_CheckUCode @cmd='CheckVTI',@idItem=@idVTI6, @UserMask=@UserMask,@PolicyDat=@PolicyDat,@PolicyUsr=@PolicyUsr, @AuditOK=@AuditOK,@AuditEr=@AuditEr, @Debug=@Debug,@PrnLev=@PrnLev if (@done=101) SELECT @idVTIsymTxt = @idVTIsymTxt+' OR i='+LTRIM(STR(@idVTI6)) ELSE SELECT @idVTI6=0 END IF (@idVTI7<>0) BEGIN exec @done=dbo.ep_CheckUCode @cmd='CheckVTI',@idItem=@idVTI7, @UserMask=@UserMask,@PolicyDat=@PolicyDat,@PolicyUsr=@PolicyUsr, @AuditOK=@AuditOK,@AuditEr=@AuditEr, @Debug=@Debug,@PrnLev=@PrnLev if (@done=101) SELECT @idVTIsymTxt = @idVTIsymTxt+' OR i='+LTRIM(STR(@idVTI7)) ELSE SELECT @idVTI7=0 END IF (@idVTI8<>0) BEGIN exec @done=dbo.ep_CheckUCode @cmd='CheckVTI',@idItem=@idVTI8, @UserMask=@UserMask,@PolicyDat=@PolicyDat,@PolicyUsr=@PolicyUsr, @AuditOK=@AuditOK,@AuditEr=@AuditEr, @Debug=@Debug,@PrnLev=@PrnLev if (@done=101) SELECT @idVTIsymTxt = @idVTIsymTxt+' OR i='+LTRIM(STR(@idVTI8)) ELSE SELECT @idVTI8=0 END SELECT @idVTIsymTxt = @idVTIsymTxt+')' /*сформируем начало командv*/ --idVTI,TimeIdx,idState,Scale,DataFull,VTIvalue --i,t,s,m,f,n IF not(@cmd in('ListRaw','ListAddRaw')) BEGIN /*obtain data and decode*/ select @count=CURSOR_STATUS('global','AskVTIcurs') IF (@count > -2) BEGIN /*faulure - old cursor exists*/ IF (@Debug >1) BEGIN SELECT @name='Failure - old cursor AskVTIcurs exist with code <'+LTRIM(STR(@count))+'>' EXEC ep_PrintMsgRetFs @PrnLev,43,@name END SELECT @command='DEALLOCATE AskVTIcurs' EXECUTE (@Command) /* */ -- IF (@@error <> 0) GOTO Exec_error /*may execute with error*/ END SELECT @Command1='Declare AskVTIcurs CURSOR GLOBAL FAST_FORWARD FOR SELECT i,t,s,m,f,n ' SELECT @done=101 /* default - OK */ END ELSE BEGIN /*RawData obtain*/ SELECT @Command1='INSERT into VTIdataList (idREQ,TimeIdx,TimeSQL,VTIvalue,idVTI,idState,ValueFl,ValueInt,IsInteger,Scale,DataFull,TimeRTC,NameTable)' SELECT @Command1=@Command1+' SELECT '+@idREQtxt+',t,NULL,n,i,s,NULL,NULL,'+ @qt+'R'+@qt+',m,f,(3*t)+' -- (3*t)+@TimeBase,'NameTable' from NameTable END IF (@Cmd in ('ListSr','ListAddSr','ListSrF','ListAddSrF')) SELECT @RevertData='Y' ELSE SELECT @RevertData='N' SELECT @done=101 /* default - OK */ IF not(@cmd in('ListRaw','ListAddRaw')) BEGIN /*obtain data and decode*/ /* create temp table for query*/ SELECT * INTO #VTIdataListTemp from VTIdataList WHERE 1=2 END /*курсор по табличкам даннvх*/ DECLARE TablesListCurs CURSOR LOCAL FAST_FORWARD FOR SELECT idTableSet,LOWER(NameTable),TimeBase,StartDateTime,EndDateTime FROM DataStore1List WHERE idClassDataTb=@idClassDataTb AND StartDateTime>=@TimeStartDB AND EndDateTime < @TimeEndDB /*next day begin!*/ ORDER BY idTableSet,idClassDataTb /*begin tables cycle - step by step*/ OPEN TablesListCurs FETCH NEXT FROM TablesListCurs INTO @IdTableSet,@TableName,@TimeBase,@StartDateTime,@EndDateTime WHILE @@FETCH_STATUS = 0 BEGIN /*цикл по таблицам*/ IF (@Debug >2) BEGIN SELECT @name='Try otain data from <'+@TableName+'>' EXEC ep_PrintMsgRetFs @PrnLev,44,@name END IF not(@cmd in('ListRaw','ListAddRaw')) BEGIN /*obtain data and decode*/ SELECT @Command = @Command1+' FROM '+@TableName+' where '+@idVTIsymTxt END ELSE BEGIN SELECT @Command = @Command1+LTRIM(STR(@TimeBase))+','+@qt+@TableName+@qt+' FROM '+@TableName+ ' where '+@idVTIsymTxt END /*!!!!!!!!*/ IF (@UseTimeInBeg='Y')AND(@TimeStartD>=@StartDateTime)AND (@TimeStartD<=@EndDateTime) BEGIN /* ask partial time in first query only!*/ SELECT @Count=(@RTCbeg-@TimeBase)/3 /*calculate index*/ SELECT @name=LTRIM(STR(@Count)) SELECT @Command=@Command+' AND t>='+@name IF (@Debug >2) BEGIN SELECT @name='Shift start ask margin to t=<'+@Name+'>' EXEC ep_PrintMsgRetFs @PrnLev,44,@name END END IF (@UseTimeInEnd='Y')AND(@TimeEndD>=@StartDateTime)AND (@TimeEndD<=@EndDateTime) BEGIN /* ask partial time in last query only!*/ SELECT @Count=(@RTCend-@TimeBase)/3 /*calculate index*/ if (@@error <> 0) GOTO Exec_error /*execution with error*/ SELECT @name=LTRIM(STR(@Count)) SELECT @Command=@Command+' AND t<='+@name IF (@Debug >2) BEGIN SELECT @name='Shift end ask margin to t=<'+@Name+'>' EXEC ep_PrintMsgRetFs @PrnLev,44,@name END END IF (@Debug >2) EXEC ep_PrintMsgRetFs @PrnLev,43,@Command /* debug information */ SELECT @Command=@Command + ' order by t,i' EXECUTE (@Command) if (@@error <> 0) GOTO Exec_error /*execution with error*/ IF not(@cmd in('ListRaw','ListAddRaw')) BEGIN /*obtain data and decode*/ SELECT @NameT=@TableName, /*cut to char */ @TableDay=CONVERT(int,substring(@NameT,7,3)) /*day number*/ SELECT @idState =NULL,@ValueVTI=NULL,@DataFull=NULL ,@idTime=NULL,@Scale=NULL,@IsData='N', @idState0=NULL,@ValueFl0=NULL,@ValueInt0=NULL,@IsInteger0=NULL,@Scale0=NULL,@DataFull0=NULL, @idState1=NULL,@ValueFl1=NULL,@ValueInt1=NULL,@IsInteger1=NULL,@Scale1=NULL,@DataFull1=NULL, @idState2=NULL,@ValueFl2=NULL,@ValueInt2=NULL,@IsInteger2=NULL,@Scale2=NULL,@DataFull2=NULL, @idState3=NULL,@ValueFl3=NULL,@ValueInt3=NULL,@IsInteger3=NULL,@Scale3=NULL,@DataFull3=NULL, @idState4=NULL,@ValueFl4=NULL,@ValueInt4=NULL,@IsInteger4=NULL,@Scale4=NULL,@DataFull4=NULL, @idState5=NULL,@ValueFl5=NULL,@ValueInt5=NULL,@IsInteger5=NULL,@Scale5=NULL,@DataFull5=NULL, @idState6=NULL,@ValueFl6=NULL,@ValueInt6=NULL,@IsInteger6=NULL,@Scale6=NULL,@DataFull6=NULL, @idState7=NULL,@ValueFl7=NULL,@ValueInt7=NULL,@IsInteger7=NULL,@Scale7=NULL,@DataFull7=NULL, @idState8=NULL,@ValueFl8=NULL,@ValueInt8=NULL,@IsInteger8=NULL,@Scale8=NULL,@DataFull8=NULL /*begin result cycle - step by step*/ OPEN AskVTIcurs /* Perform the first fetch */ ---- idVTI,TimeIdx,idState,Scale,DataFull,VTIvalue ---- i,t,s,m,f,n FETCH NEXT FROM AskVTIcurs INTO @idVTIu,@idTime,@idState,@Scale,@DataFull,@ValueVTI /*01.04.05 подстановка нулей в забраннvе даннvе во избежание гл?ков хп_длл*/ SELECT @idVTIu =Coalesce(@idVTIu ,0), @idTime =Coalesce(@idTime ,0), @idState =Coalesce(@idState ,0), @Scale =Coalesce(@Scale ,0), @DataFull=Coalesce(@DataFull,0), @ValueVTI=Coalesce(@ValueVTI,0x0) /*calculate RTC time params*/ IF (@Round=0) BEGIN /*no round!*/ SELECT @RTCtime = @idTime*3+@TimeBase /*Time RTC calculate!*/ END ELSE BEGIN /*@Round=1*/ SELECT @RTCtime = 30*((@idTime+5)/10)+@TimeBase /*Time RTC calculate!*/ END SELECT @RTCtimeOld=@RTCtime /*равнv дл начала работv*/ WHILE @@FETCH_STATUS = 0 BEGIN /*цикл по суточнvм даннvм*/ /*calc SQL time */ exec master..xpSecCount2SQLTime @sqltime Output,@RTCtime SELECT @ValueInt=0,@ValueFl=0,@isGood=0 exec master..xpConvertVTIData @NameT,@idVTIu,@idState,@idTime, @DataFull,@ValueVTI,@ValueInt OUTPUT,@ValueFl OUTPUT,@isGood OUTPUT IF (@isGood IS NULL)or(@isGood=0) BEGIN /*bad data*/ SELECT @idState=1,@DataFull=NULL,@ValueVTI=@TableDay,@ValueInt=0, @ValueFl=NULL,@IsInteger='U',@Scale=NULL,@DataFull=NULL IF (@Debug >2) BEGIN /*18.12.02*/ SELECT @name='Bad data in <'+@NameT+ '>,idVTI<'+LTRIM(STR(@idVTIu))+ '>,idSt<'+LTRIM(STR(@idState))+ '>,Df<'+LTRIM(STR(@DataFull))+ -- '>, VD<'+Convert(varchar,@ValueVTI)+ -- '>,IdR<'+LTRIM(STR(@idResult))+ '>' EXEC ep_PrintMsgRetFs @PrnLev,44,@name END IF (@Check=0) BEGIN /*simly warning*/ SELECT @done=70 END ELSE BEGIN /*error*/ SELECT @done=69 RETURN @done /*fast exit*/ END END ELSE BEGIN /*o.k.*/ IF (@isGood = 1) BEGIN /*integer data*/ SELECT @IsInteger='Y',@ValueFl=NULL END ELSE BEGIN /*=2 real data*/ SELECT @ValueInt=NULL,@IsInteger='N' END END -- INSERT into VTIdataListTemp (idREQ,idVTI,TimeRTC,TimeIdx,TimeSQL,idState, -- ValueFl,ValueInt,IsInteger,Scale,DataFull, -- VTIvalue,NameTable) -- VALUES (@idREQ,@idVTIu,@Count,@idTime,@sqlTime,@idState, -- NULL,@ValueInt,'Y',@Scale,@DataFull,@TableDay,@Tablename) IF ((@idVTIu=@idVTI)AND(@RevertData = 'Y'))or(@RevertData = 'N') BEGIN SELECT @idState0=@idState,@ValueFl0=@ValueFl,@ValueInt0=@ValueInt, @IsInteger0=@IsInteger,@Scale0=@Scale,@DataFull0=@DataFull, @IsData='A'/*flag for main chnl data exists!*/ END IF (@idVTIu=@idVTI1)AND(@RevertData = 'Y') BEGIN SELECT @idState1=@idState,@ValueFl1=@ValueFl,@ValueInt1=@ValueInt, @IsInteger1=@IsInteger,@Scale1=@Scale,@DataFull1=@DataFull IF (@IsData='N') SELECT @IsData='Y' END IF (@idVTIu=@idVTI2)AND(@RevertData = 'Y') BEGIN SELECT @idState2=@idState,@ValueFl2=@ValueFl,@ValueInt2=@ValueInt, @IsInteger2=@IsInteger,@Scale2=@Scale,@DataFull2=@DataFull IF (@IsData='N') SELECT @IsData='Y' END IF (@idVTIu=@idVTI3)AND(@RevertData = 'Y') BEGIN SELECT @idState3=@idState,@ValueFl3=@ValueFl,@ValueInt3=@ValueInt, @IsInteger3=@IsInteger,@Scale3=@Scale,@DataFull3=@DataFull IF (@IsData='N') SELECT @IsData='Y' END IF (@idVTIu=@idVTI4)AND(@RevertData = 'Y') BEGIN SELECT @idState4=@idState,@ValueFl4=@ValueFl,@ValueInt4=@ValueInt, @IsInteger4=@IsInteger,@Scale4=@Scale,@DataFull4=@DataFull IF (@IsData='N') SELECT @IsData='Y' END IF (@idVTIu=@idVTI5)AND(@RevertData = 'Y') BEGIN SELECT @idState5=@idState,@ValueFl5=@ValueFl,@ValueInt5=@ValueInt, @IsInteger5=@IsInteger,@Scale5=@Scale,@DataFull5=@DataFull IF (@IsData='N') SELECT @IsData='Y' END IF (@idVTIu=@idVTI6)AND(@RevertData = 'Y') BEGIN SELECT @idState6=@idState,@ValueFl6=@ValueFl,@ValueInt6=@ValueInt, @IsInteger6=@IsInteger,@Scale6=@Scale,@DataFull6=@DataFull IF (@IsData='N') SELECT @IsData='Y' END IF (@idVTIu=@idVTI7)AND(@RevertData = 'Y') BEGIN SELECT @idState7=@idState,@ValueFl7=@ValueFl,@ValueInt7=@ValueInt, @IsInteger7=@IsInteger,@Scale7=@Scale,@DataFull7=@DataFull IF (@IsData='N') SELECT @IsData='Y' END IF (@idVTIu=@idVTI8)AND(@RevertData = 'Y') BEGIN SELECT @idState8=@idState,@ValueFl8=@ValueFl,@ValueInt8=@ValueInt, @IsData='Y',@IsInteger8=@IsInteger,@Scale8=@Scale,@DataFull8=@DataFull IF (@IsData='N') SELECT @IsData='Y' END SELECT @idVTIw=@idVTIu,@idTimeW=@idTime,/*fix last VTI and reset temp variables for query*/ @idState=NULL,@ValueVTI=NULL,@DataFull=NULL,@idTime=NULL,@Scale=NULL FETCH NEXT FROM AskVTIcurs INTO @idVTIu,@idTime,@idState,@Scale,@DataFull,@ValueVTI IF (@Round=0) BEGIN /*no round!*/ SELECT @RTCtime = @idTime*3+@TimeBase /*Time RTC calculate!*/ END ELSE BEGIN /*@Round=1*/ SELECT @RTCtime = 30*((@idTime+5)/10)+@TimeBase /*Time RTC calculate!*/ END IF (@RevertData='N')or /*no data revert*/ ((@IsData<>'N')AND(@@FETCH_STATUS<>0))or /*close cursor*/ (@RTCtimeOld<>@RTCtime) /*time int changed*/ BEGIN /*reset idVTI id*/ IF (@RevertData='Y')AND(@IsData='A') select @idVTIw=@idVTI /*only 1-st chnl fixed*/ IF (@RevertData='Y')AND(@IsData<>'A')AND ((@Cmd='ListSr')or(@Cmd='ListAddSr')) BEGIN IF (@Debug >2) BEGIN SELECT @name='Skip dataset for TimeRTC <'+LTRIM(STR(@RTCtimeOld))+'>' EXEC ep_PrintMsgRetFs @PrnLev,44,@name END END ELSE BEGIN /*save data*/ /*save prepared dataset*/ IF (@Debug >1) BEGIN IF (@@FETCH_STATUS <> 0) SELECT @name='Close cursor and save last dataset' ELSE SELECT @name='Save data - TimeRTC changed ('+LTRIM(STR(@RTCtimeOld))+ '->'+LTRIM(STR(@RTCtime))+')' EXEC ep_PrintMsgRetFs @PrnLev,44,@name END INSERT into #VTIdataListTemp (idREQ,TimeRTC,TimeIdx,TimeSQL,VTIvalue,NameTable, idVTI ,idState,ValueFl,ValueInt,IsInteger,Scale,DataFull, /*idVTI1,*/idState1,ValueFl1,ValueInt1,IsInteger1,Scale1,DataFull1, /*idVTI2,*/idState2,ValueFl2,ValueInt2,IsInteger2,Scale2,DataFull2, /*idVTI3,*/idState3,ValueFl3,ValueInt3,IsInteger3,Scale3,DataFull3, /*idVTI4,*/idState4,ValueFl4,ValueInt4,IsInteger4,Scale4,DataFull4, /*idVTI5,*/idState5,ValueFl5,ValueInt5,IsInteger5,Scale5,DataFull5, /*idVTI6,*/idState6,ValueFl6,ValueInt6,IsInteger6,Scale6,DataFull6, /*idVTI7,*/idState7,ValueFl7,ValueInt7,IsInteger7,Scale7,DataFull7, /*idVTI8,*/idState8,ValueFl8,ValueInt8,IsInteger8,Scale8,DataFull8) VALUES (@idREQ,@RTCtimeOld,@idTimeW/*!!!*/,@sqlTime,@TableDay,@Tablename, @idVTIw/*!!!*/,@idState0,@ValueFl0,@ValueInt0,@IsInteger0,@Scale0,@DataFull0, /*@idVTI1,*/@idState1,@ValueFl1,@ValueInt1,@IsInteger1,@Scale1,@DataFull1, /*@idVTI2,*/@idState2,@ValueFl2,@ValueInt2,@IsInteger2,@Scale2,@DataFull2, /*@idVTI3,*/@idState3,@ValueFl3,@ValueInt3,@IsInteger3,@Scale3,@DataFull3, /*@idVTI4,*/@idState4,@ValueFl4,@ValueInt4,@IsInteger4,@Scale4,@DataFull4, /*@idVTI5,*/@idState5,@ValueFl5,@ValueInt5,@IsInteger5,@Scale5,@DataFull5, /*@idVTI6,*/@idState6,@ValueFl6,@ValueInt6,@IsInteger6,@Scale6,@DataFull6, /*@idVTI7,*/@idState7,@ValueFl7,@ValueInt7,@IsInteger7,@Scale7,@DataFull7, /*@idVTI8,*/@idState8,@ValueFl8,@ValueInt8,@IsInteger8,@Scale8,@DataFull8) END SELECT /*reset variables state*/@RTCtimeOld=@RTCtime,@IsData='N', @idState0=NULL,@ValueFl0=NULL,@ValueInt0=NULL,@IsInteger0=NULL,@Scale0=NULL,@DataFull0=NULL, @idState1=NULL,@ValueFl1=NULL,@ValueInt1=NULL,@IsInteger1=NULL,@Scale1=NULL,@DataFull1=NULL, @idState2=NULL,@ValueFl
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Обрезание регистров средствами MS Sql Server.
- v7: Как мне сделать движения по регистрам в БП 1.5?
- Поиск по ИНН
- Скорость выполнения запроса к бух. итогам
- Схемы мотивации в УПП
- можно ли проверить работоспособность ключа защиты 1с скл 77
- Помогите Вывести в печатную форму итог по колонке.
- пароль для внешнего отчета 1С8
- Можно ли в AcdSee в полноэкранном режиме сделать отображение имени и пути ф
- Как в ЗУПе вывести список сотрудников, не имеющих лицевых счетов, по органи
- Как сделать сохранение документов в определенное время
- Как связать две табличные части одного Документа?
- Получить значение выделенной ячейки
- ЗУП 2.5.7.2 начисления предприятия - зависимое первого уровня
- Задержка с выводом на печать из 1С
- SELTA@Etersoft 1.0.0 — замена MS SQL на свободную СУБД
- Замена русских букв на соответствующие английские
- Ориентация страницы при сохранении печатной формы
- Народ выручайте,Как присоединить секцию
- После перехода база стала тормозить жутко 1с 8.1