Bug 3689

Summary: запросы 1C 7.7 Комплексная конфигурация
Product: SELTA@Etersoft Reporter: Калюхович Юрий <goga>
Component: selta.dllAssignee: Калюхович Юрий <goga>
Status: CLOSED FIXED QA Contact:
Severity: major    
Priority: P4 CC: goga, lav, shan
Version: 1.0.5   
Target Milestone: версия 1.0.6   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 3676    

Description Калюхович Юрий 2009-03-19 18:38:54 MSK
не транслируются некоторые запросы, Комплексная конфигурация 1С:

Update _1SSTREAM set DATE_TIME_DOCID=E                                            '20090319ANK31S    MZ1  ' where ID=1946; If @@ROWCOUNT = 0 Insert into _1SSTREAM (ID, DATE_TIME_DOCID) values (1946, E'20090319ANK31S    MZ1  ')


Delete from _1SDNLOCK where  DNPREFIX=E'      48242009    ' and DOCNO=E'СТ00000001 '


select count(*) from SC6005(NOLO
CK) where substring(ID,7,3) not in ('   ','1  ') and ISMARK<>1
Comment 1 Калюхович Юрий 2009-03-19 18:42:44 MSK
там же, при смене периода расчета зарплаты на более ранний,

set nocount on
        declare @_date datetime
        declare @idx int
        declare @periodlen int
        declare @perioddate datetime
        declare @typeid int
        declare @holid int
        declare @startdate datetime, @enddate datetime
        select  @periodlen = 1
        select  @perioddate = '19960101'
        select  @typeid = 7668
        select  @holid = 11
        select  @startdate = '20030101'
        select  @enddate = '20030131'
        declare @daylen numeric(6,2)
        declare @len0 numeric(6,2)
        select @len0 = 0.00
        select @_date = @startdate
        while @_date <= @enddate begin
            select @idx = DateDiff(day,@perioddate,@_date) % @periodlen
            if (@idx<0)  select @idx = @periodlen+@idx
            if @idx=0 begin
              select @daylen = @len0
            end
          update CL set DAYLEN = @daylen where DATE = @_date and ID=@typeid
          if @@rowcount=0 insert into CL (DATE, DAYLEN, ID) values(@_date,@daylen,@typeid)
          select @_date = DATEADD(day,1,@_date)end
Comment 2 Калюхович Юрий 2009-03-19 18:55:49 MSK
(In reply to comment #0)

ошибки такого вида часто проявляются при различных операциях, например, при увеличении долга поставщика, при удалении помеченных объектов, при проведении некоторых других документов
Comment 3 Калюхович Юрий 2009-03-19 19:23:27 MSK
+ сюда же: просмотреть список запросов MarkSQL
http://bugs.etersoft.ru/attachment.cgi?id=1103
и добавить нетранслируемые
Comment 4 Калюхович Юрий 2009-03-20 11:34:02 MSK
not in добавил, но запрос полностью все равно не выполняется
Comment 5 Калюхович Юрий 2009-03-20 11:35:24 MSK
select count(*) from SC6005(NOLO
CK) where substring(ID,7,3) not in ('   ','1  ') and ISMARK<>1

работает
Comment 6 Калюхович Юрий 2009-03-20 12:29:13 MSK
> Delete from _1SDNLOCK where  DNPREFIX=E'      48242009    ' and
> DOCNO=E'СТ00000001 '
> 

теперь работает
Comment 7 Калюхович Юрий 2009-03-20 12:57:26 MSK
все из #0 и #1 работает
Comment 8 Калюхович Юрий 2009-03-20 16:04:49 MSK
(In reply to comment #3)
> + сюда же: просмотреть список запросов MarkSQL
> http://bugs.etersoft.ru/attachment.cgi?id=1103
> и добавить нетранслируемые
> 

в соответствующей баге
Comment 9 Калюхович Юрий 2009-03-20 17:02:32 MSK
словил еще один нетранслированный запрос:

ERROR:  ошибка синтаксиса в или рядом "ERROR" на символе 7
КОМАНДА:  BEGIN;ERROR: can not translate query: Update CJ7287 set RESULT=0, RECALC = RECALC&-2 where PERIOD>='20030401M' and PERIOD<='20030501M' and RECALC&16<>16 and RECALC&8<>8 and RECALC&4<>4
Comment 10 Калюхович Юрий 2009-03-20 17:12:57 MSK
(In reply to comment #9)
> словил еще один нетранслированный запрос:
> 
> ERROR:  ошибка синтаксиса в или рядом "ERROR" на
> символе 7
> КОМАНДА:  BEGIN;ERROR: can not translate query: Update CJ7287 set
> RESULT=0, RECALC = RECALC&-2 where PERIOD>='20030401M' and PERIOD<='20030501M'
> and RECALC&16<>16 and RECALC&8<>8 and RECALC&4<>4
> 

проблема в PERIOD>='20030401M' and PERIOD<='20030501M', в знаках '>='
Comment 11 Калюхович Юрий 2009-03-20 17:34:00 MSK
(In reply to comment #10)
> проблема в PERIOD>='20030401M' and PERIOD<='20030501M', в
> знаках '>='
> 

исправил, появилась еще одна:
ERROR:  оператор не существует: tinyint &- integer на символе 52
ПОДСКАЗКА:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
КОМАНДА:  BEGIN;UPDATE CJ7287 SET RESULT = 0, RECALC = RECALC&-2 WHERE PERIOD >= '20030301M' AND PERIOD<='20030501M' AND RECALC&16<>16 AND RECALC&8<>8 AND RECALC&4<>4

на этот раз в ' &- '
Comment 12 Калюхович Юрий 2009-03-20 17:54:32 MSK
(In reply to comment #11)
> на этот раз в ' &- '
> 

такого в постгри не существует ни для tinyint &- integer, ни для integer &- integer
Comment 13 Калюхович Юрий 2009-03-20 19:21:26 MSK
добавил в транслятор разруливание битовых операторов в сокращенной записи - &+, &-, |+, |-
Comment 14 Калюхович Юрий 2009-03-23 15:23:55 MSK
добавил в test.sql новые запросы
Comment 15 Калюхович Юрий 2009-03-25 18:29:58 MSK
снова нашел неработающий запрос, но не определил какой именно
при смене расчетного периода на следующий - меняет на 2 месяца вперед. если на предыдущий - не меняет вообще. если на 2 месяца назад - меняет только на месяц назад. очевидная ошибка трансляции какого-то запроса..
Comment 16 Калюхович Юрий 2009-03-30 16:03:32 MSD
словил лог сельты, но ошибок трансляции не нашел...
Comment 17 Калюхович Юрий 2009-03-30 16:37:25 MSD
(In reply to comment #16)
> словил лог сельты, но ошибок трансляции не
> нашел...
> 

не ошибка сельты. но и не ошибка вайна...
пробовал lin+selta, lin+ms, win+selta, ошибка есть везде, не знаю в чем дело, может это и не ошибка вовсе, а связано с проведенными/непроведенными документами/операциями