как расшифровать кодировку? #324464


#0 by Evgenchik
Есть файлик с текстом процедуры на sql. Там много комментариев, хотелось бы их прочесть, чтобы легче разобраться в процедуре. Но шрифт при сохранении получился примерно вот такой: шф ёюёЄю эш  фы  чряюыэхэш чэрўхэшх фы  чряюыэхэш Подскажите, есть возможность расшифровать его на нормальный Win1251
#1 by smaharbA
есть
#2 by Salvador Limones
#3 by Heckfy
Телепат подсказывает: ВордПад - файл - открыть: Тип файлов установить "Текстовые документы MS-DOS (*.txt)".
#4 by smaharbA
+ ид состо ни  дл  заполнени значение дл  заполнени
#5 by Evgenchik
как именно? с помощью какой-программы? фенкс, процентов 70 можно прочесть после раскодировки. Уже что-то word, AkelPad, досовский редактор - не помогают прочесть
#6 by smaharbA
по пункту 3 не ври см откудова я это взял ?
#7 by Evgenchik
не вру. если б было так просто, не писал бы сюда. а можно взять из , там так раскодирует
#8 by smaharbA
ниче не брал, у мене чистая как слеза система, никогда никакую хрень не ставлю, даже без редактора это делается самой ОС... вылож файлик - и жди порицаний
#9 by Evgenchik
Возможно у тебя и получилось, но на моем загаженом всяким хламом компе не получилось. Не вижу смысла выкладывать, так как решение уже есть
#10 by smaharbA
это не решение - это костыль и позор, потом вот таковые кричат обратившись в типалинуксоидов - "венда маздай"
#11 by Evgenchik
выслал тебе на мыло
#12 by Heckfy
И мне давай. Интересно стало даже.
#13 by smaharbA
да
#14 by Evgenchik
Короткая ссылка для скачивания: Полная ссылка для скачивания:
#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
#19 by smaharbA
+ без копипасте в вордпаде сохранить как - Текст MS-DOS
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С