Bug 3251

Summary: Неправильно транслирует запрос при пересчёте служебных данных
Product: SELTA@Etersoft Reporter: Александр Пликус <pav>
Component: selta.dllAssignee: Станислав Коробейников <stas>
Status: CLOSED FIXED QA Contact:
Severity: blocker    
Priority: P1 CC: boris, goga, lav, shan
Version: 1.0.5   
Target Milestone: версия 1.0.5   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 2637    

Description Александр Пликус 2009-01-15 19:27:56 MSK
Бухгалтерия релиз 497
Ошибка выявлена в результате Тестирования и Исправления ИБ
SeltaLog
in_sql:
SELECT MAINID=MAIN.ID, SUBID=SUB.ID INTO #TMPACCSTBL
FROM _1SACCS MAIN,_1SACCS SUB
WHERE MAIN.PLANID=SUB.PLANID AND SUB.SCHKOD>=RTRIM(MAIN.SCHKOD) AND SUBSTRING(SUB.SCHKOD,1,DATALENGTH(RTRIM(MAIN.SCHKOD)))=RTRIM(MAIN.SCHKOD) AND SUB.ISFOL
DER=0
out_sql:
SELECT MAIN.ID AS MAINID, SUB.ID AS SUBID INTO TEMPORARY TMPACCSTBL FROM _1SACCS MAIN, _1SACCS SUB WHERE MAIN.PLANID=SUB.PLANID AND SUB.SCHKOD>=to_mchar(RT
RIM(to_char(MAIN.SCHKOD))) AND CAST(SUBSTR (SUB.SCHKOD, 1, length(to_char(to_mchar(RTRIM(to_char(MAIN.SCHKOD)))))) as mchar(length(to_char())=to_mchar(RTRI
M(to_char(MAIN.SCHKOD))) AND SUB.ISFOLDER=0
Comment 1 Станислав Коробейников 2009-01-16 13:18:30 MSK
Сделал работает. Новая версия лежит на ftp в 1.0.5

Была проблема из-за:
in_sql:
SUBSTRING(a,b,c)
out_sql:
CAST(SUBSTR (a, b, c) as mchar(c))

in_sql:
DATALENGTH(a)
out_sql:
length(to_char(a))

in_sql:
RTRIM(b)
out_sql:
to_mchar(RTRIM(to_char(b)))

Но все вместе работает неправильно. 

in_sql:
SUBSTRING(a,b,DATALENGTH(RTRIM(c)))
out_sql:
CAST(SUBSTR (a, b, length(to_char(to_mchar(RTRIM(to_char(c)))))) as mchar(length(to_char())char())


Все из-за того, что в парсере, второй раз используется,не 
add_token($$, $7);, а add_token($$, create_token_hard($7->text)), и уже не парсит саму $7.

Сделал по другому без использования второй раз $7.